)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"3e6258481c3779913fdf724cb29b44492907e476","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Sameer Srivastava \u003cs-srivastava4@ti.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-06-08 17:49:06 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"src: flash: nor: add am13e230x flash driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Flashing uses the am13e230x flash loader that runs from SRAM, matching"},{"line_number":10,"context_line":"the CC26xx pattern. The algorithm is loaded into SRAM and started via"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"e0a6b423_213eb5f5","line":7,"updated":"2026-06-08 14:17:46.000000000","message":"flash/nor: add am13e230x flash driver","commit_id":"ddacd580ad5ce9934551906d272e5db2059cb122"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"b17c19f02d240e41b0a55bbe105697ecaeb89a42","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sameer Srivastava \u003cs-srivastava4@ti.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-06-08 17:49:06 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"src: flash: nor: add am13e230x flash driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Flashing uses the am13e230x flash loader that runs from SRAM, matching"},{"line_number":10,"context_line":"the CC26xx pattern. The algorithm is loaded into SRAM and started via"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"b8d5a7e9_11a10668","line":7,"in_reply_to":"e0a6b423_213eb5f5","updated":"2026-06-10 06:30:30.000000000","message":"Done","commit_id":"ddacd580ad5ce9934551906d272e5db2059cb122"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"447f7b4b1c20883b4b41f4737e712f927172aa96","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5159d0c7_84356114","updated":"2026-05-09 09:11:06.000000000","message":"Hello Sameer,\nThank you for the patch.\n\nThe CI error is real, distcheck needs to pass but it can not due to omission in the change you submitted, the new header needs to be listed to become part of distribution tarball.","commit_id":"99e9a4a6b32116f3ce9331b8e066a183d7d6d537"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"2cda14f3f9b2220da94fafa1653dfd3dc6e7c41e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5dc03ac3_3a38ef6f","updated":"2026-05-09 22:29:57.000000000","message":"Hi Sameer,\nthe file `am13e230x.h` is only used by the file `am13e230x.c`, no need to have it as a separated file.\nCan you drop the former file and inline it in the latter?\nThis would also implicitly fix the build issue","commit_id":"99e9a4a6b32116f3ce9331b8e066a183d7d6d537"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"439d46c947e7933a953bc1da89cc2205b59a9aa3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c0c6fc17_d98a932b","in_reply_to":"5159d0c7_84356114","updated":"2026-05-11 05:30:30.000000000","message":"Hi Paul, thanks. I have moved the header\u0027s contents into the `.c` file.","commit_id":"99e9a4a6b32116f3ce9331b8e066a183d7d6d537"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"439d46c947e7933a953bc1da89cc2205b59a9aa3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"11f21393_416dde48","in_reply_to":"5dc03ac3_3a38ef6f","updated":"2026-05-11 05:30:30.000000000","message":"Thanks Antonio, I have inlined the contents of `am13e230x.h` into `am13e230x.c`.","commit_id":"99e9a4a6b32116f3ce9331b8e066a183d7d6d537"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"dc6ca47efd305c22ac97e5f460b91d4b9e4acfa3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8175f838_1cc8aad4","updated":"2026-06-10 15:10:21.000000000","message":"Please update doc/openocd.texi with information about support for this flash driver (refer to mspm0 as reference)","commit_id":"4a4ceb491579eb5f0da9b31f02f6df9488055e2e"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d0f3e8af_7f7f2aeb","in_reply_to":"48243ea2_ea37c169","updated":"2026-06-15 06:21:40.000000000","message":"Docs changes added to the top commit.","commit_id":"4a4ceb491579eb5f0da9b31f02f6df9488055e2e"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"48243ea2_ea37c169","in_reply_to":"8175f838_1cc8aad4","updated":"2026-06-11 13:29:10.000000000","message":"Could you do this? -\u003e Something on the lines of https://gist.github.com/nmenon/8732b32a24b6b1345f38b8b83442080a","commit_id":"4a4ceb491579eb5f0da9b31f02f6df9488055e2e"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ada4585a8b2d97f782f652e6b72f17619f1fe512","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0964c815_3091367b","in_reply_to":"d0f3e8af_7f7f2aeb","updated":"2026-06-16 14:52:59.000000000","message":"Done","commit_id":"4a4ceb491579eb5f0da9b31f02f6df9488055e2e"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"30b79b65_77527d73","updated":"2026-06-11 13:29:10.000000000","message":"almost done from my end.. minor issues seen","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"6061f95dbe00b41c525afabd499a4fa638e68f8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4d1f62a5_201362ef","updated":"2026-06-17 14:40:45.000000000","message":"Antonio, Paul - I think the code is in good shape now. Lets know if something catches your eye.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"c0a41b170957c443e507aaa230e27b64d5ce8d3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"9dd567f9_e76c327f","updated":"2026-06-17 14:45:26.000000000","message":"Forgot to add here: Valgrind + ASAN full hardware test passed on connected AM13E230X LaunchPad: complete flash erase, program and verify cycle with zero memory errors.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"9982fb31_42f422a7","updated":"2026-06-23 05:01:42.000000000","message":"Sameer, Nishanth, thanks for the new flash driver.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"65c856604248eaa317ef577230b2df39738efb32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"ea3ce4d8_522d81e3","updated":"2026-07-04 08:12:11.000000000","message":"Thanks!","commit_id":"ff4c76725e02c681dd0716b9f19c935fd2729238"}],"doc/openocd.texi":[{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ada4585a8b2d97f782f652e6b72f17619f1fe512","unresolved":true,"context_lines":[{"line_number":6782,"context_line":"@item @b{NONMAIN} flash: starts at address @code{0x60100000}; First two sectors"},{"line_number":6783,"context_line":"of this region (corresponding to first sectors for each bank\u0027s NONMAIN region)"},{"line_number":6784,"context_line":"are immutable, for a 2-bank configuration, the writable region starts from"},{"line_number":6785,"context_line":"@code{0x60101000}; size is @math{num_banks * 4096} bytes."},{"line_number":6786,"context_line":"@end itemize"},{"line_number":6787,"context_line":""},{"line_number":6788,"context_line":"@b{Write strategy}: the driver loads a ping-pong flash loader algorithm"}],"source_content_type":"text/x-texinfo","patch_set":10,"id":"5c4278b4_942e3bc2","line":6785,"updated":"2026-06-16 14:52:59.000000000","message":"not sure if this is correct. `0x60100000` is what we need to define,  can you cross check this description?","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"6061f95dbe00b41c525afabd499a4fa638e68f8a","unresolved":false,"context_lines":[{"line_number":6782,"context_line":"@item @b{NONMAIN} flash: starts at address @code{0x60100000}; First two sectors"},{"line_number":6783,"context_line":"of this region (corresponding to first sectors for each bank\u0027s NONMAIN region)"},{"line_number":6784,"context_line":"are immutable, for a 2-bank configuration, the writable region starts from"},{"line_number":6785,"context_line":"@code{0x60101000}; size is @math{num_banks * 4096} bytes."},{"line_number":6786,"context_line":"@end itemize"},{"line_number":6787,"context_line":""},{"line_number":6788,"context_line":"@b{Write strategy}: the driver loads a ping-pong flash loader algorithm"}],"source_content_type":"text/x-texinfo","patch_set":10,"id":"e6b97e00_eafcc6f6","line":6785,"in_reply_to":"2d34906a_49eff545","updated":"2026-06-17 14:40:45.000000000","message":"Done","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"ae96fe28250a25e2f2b462e87426ab82690269c1","unresolved":true,"context_lines":[{"line_number":6782,"context_line":"@item @b{NONMAIN} flash: starts at address @code{0x60100000}; First two sectors"},{"line_number":6783,"context_line":"of this region (corresponding to first sectors for each bank\u0027s NONMAIN region)"},{"line_number":6784,"context_line":"are immutable, for a 2-bank configuration, the writable region starts from"},{"line_number":6785,"context_line":"@code{0x60101000}; size is @math{num_banks * 4096} bytes."},{"line_number":6786,"context_line":"@end itemize"},{"line_number":6787,"context_line":""},{"line_number":6788,"context_line":"@b{Write strategy}: the driver loads a ping-pong flash loader algorithm"}],"source_content_type":"text/x-texinfo","patch_set":10,"id":"2d34906a_49eff545","line":6785,"in_reply_to":"5c4278b4_942e3bc2","updated":"2026-06-17 05:41:04.000000000","message":"The sector at `0x60100000` is not user-writable.  \n\nUpdated based on TRM (SPRUJF2A) table 7-1 and its note \"The ROM does not utilize the BANK1 NM0/NM1 regions. BANK1 NM1 can be used by the user application as additional storage.\"  \n\nFor BANK1 NM0 the table mentions that \"BCR has Write/Erase/Read permission\" (which seems to contradict the note), and BANK1 NM1 is clearly mentioned as reprogrammable, \"Additional user application storage\".","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ada4585a8b2d97f782f652e6b72f17619f1fe512","unresolved":true,"context_lines":[{"line_number":6806,"context_line":""},{"line_number":6807,"context_line":"@example"},{"line_number":6808,"context_line":"flash bank $_FLASHNAME.main    am13 0x00000000 0 0 0 $_TARGETNAME"},{"line_number":6809,"context_line":"flash bank $_FLASHNAME.nonmain am13 0x60101000 0 0 0 $_TARGETNAME"},{"line_number":6810,"context_line":"@end example"},{"line_number":6811,"context_line":""},{"line_number":6812,"context_line":"@b{To erase and program MAIN flash}:"}],"source_content_type":"text/x-texinfo","patch_set":10,"id":"87f2019f_c1a3a9c9","line":6809,"updated":"2026-06-16 14:52:59.000000000","message":"We use 0x60100000 in the tcl file\n```\nflash bank $_FLASHNAME.nonmain am13 0x60100000 0 0 0 $_TARGETNAME\n\n```","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"ae96fe28250a25e2f2b462e87426ab82690269c1","unresolved":false,"context_lines":[{"line_number":6806,"context_line":""},{"line_number":6807,"context_line":"@example"},{"line_number":6808,"context_line":"flash bank $_FLASHNAME.main    am13 0x00000000 0 0 0 $_TARGETNAME"},{"line_number":6809,"context_line":"flash bank $_FLASHNAME.nonmain am13 0x60101000 0 0 0 $_TARGETNAME"},{"line_number":6810,"context_line":"@end example"},{"line_number":6811,"context_line":""},{"line_number":6812,"context_line":"@b{To erase and program MAIN flash}:"}],"source_content_type":"text/x-texinfo","patch_set":10,"id":"74b2f25a_84a79650","line":6809,"in_reply_to":"87f2019f_c1a3a9c9","updated":"2026-06-17 05:41:04.000000000","message":"Yes, updated.","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"}],"src/flash/nor/am13e230x.c":[{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":30,"context_line":"#define AM13_FACTORYREGION             0x60111000"},{"line_number":31,"context_line":"#define AM13_TRACEID                   (AM13_FACTORYREGION + 0x000)"},{"line_number":32,"context_line":"#define AM13_DID                       (AM13_FACTORYREGION + 0x004)"},{"line_number":33,"context_line":"#define AM13_SRAMFLASH                 (AM13_FACTORYREGION + 0x01C)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"/* Flash controller (NVMNW) registers */"},{"line_number":36,"context_line":"#define FLASH_CONTROL_BASE              0x40042000"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"d1f41af8_06fc0e31","line":33,"updated":"2026-05-13 12:04:54.000000000","message":"TRM (SPRSPC3) shows a `PARTIDL/PARTIDH` device ID at `0x0005D008`, not at `0x60111000`. The `0x60111000` address is in the factory flash region (non-main)\nCan you clarify? I suggest documenting the rationale as well.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":false,"context_lines":[{"line_number":30,"context_line":"#define AM13_FACTORYREGION             0x60111000"},{"line_number":31,"context_line":"#define AM13_TRACEID                   (AM13_FACTORYREGION + 0x000)"},{"line_number":32,"context_line":"#define AM13_DID                       (AM13_FACTORYREGION + 0x004)"},{"line_number":33,"context_line":"#define AM13_SRAMFLASH                 (AM13_FACTORYREGION + 0x01C)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"/* Flash controller (NVMNW) registers */"},{"line_number":36,"context_line":"#define FLASH_CONTROL_BASE              0x40042000"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"2edc5354_9a4a419a","line":33,"in_reply_to":"2698d214_eda25bef","updated":"2026-06-08 13:59:31.000000000","message":"Done","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":30,"context_line":"#define AM13_FACTORYREGION             0x60111000"},{"line_number":31,"context_line":"#define AM13_TRACEID                   (AM13_FACTORYREGION + 0x000)"},{"line_number":32,"context_line":"#define AM13_DID                       (AM13_FACTORYREGION + 0x004)"},{"line_number":33,"context_line":"#define AM13_SRAMFLASH                 (AM13_FACTORYREGION + 0x01C)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"/* Flash controller (NVMNW) registers */"},{"line_number":36,"context_line":"#define FLASH_CONTROL_BASE              0x40042000"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"2698d214_eda25bef","line":33,"in_reply_to":"d1f41af8_06fc0e31","updated":"2026-06-08 12:24:25.000000000","message":"`PARTIDL/PARTIDH` (as described in Datasheet SPRSPC3 Table 7-2) encodes the device package type, quality and part number.  \n\nThe factory region register `DEVICEID` (AM13_DID here) stores device version, part number and most importantly, the manufacturer ID in bits [11:1]. This is validated by `am13_probe` (line 656).  \n\nI have added a comment to document this difference.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":69,"context_line":"#define AM13_FLASH_WORD_SIZE            16"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#define AM13_FLASH_TIMEOUT_MS           8000"},{"line_number":72,"context_line":"#define AM13_SECTOR_SIZE_BYTES          0x800"},{"line_number":73,"context_line":"#define TI_MANUFACTURER_ID              0x17"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"/* Algorithm is loaded at the base of SRAM */"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a033131b_d921c7d5","line":72,"updated":"2026-05-13 12:04:54.000000000","message":"The TRM for this device (SPRSPC3) states the flash has \"1kB sectors\":\n10.1.1.1 Flash Features\n\n\u003e \"2 banks of up to 256kB, **Sector (1KB) and Bank (up to 256KB) Erase**\n\nbut in other places like Table 8-42. FPC_PRIVATTRIBB0 Register Field Descriptions\n\u003e Privilege access enable for 64KB-256KB flash with each bit\n\u003e representing 8 sectors of 2KB\n\nShould this be 0x400 (1K) or 0x800 (2K)? if TRM is wrong, should we add a comment (and get the TRM fixed).","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":69,"context_line":"#define AM13_FLASH_WORD_SIZE            16"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#define AM13_FLASH_TIMEOUT_MS           8000"},{"line_number":72,"context_line":"#define AM13_SECTOR_SIZE_BYTES          0x800"},{"line_number":73,"context_line":"#define TI_MANUFACTURER_ID              0x17"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"/* Algorithm is loaded at the base of SRAM */"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"fe6de215_2c40d0ff","line":72,"in_reply_to":"a033131b_d921c7d5","updated":"2026-06-08 12:24:25.000000000","message":"Driverlib defines 2KB sectors. It is incorrectly mentioned in that section of the TRM.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":false,"context_lines":[{"line_number":69,"context_line":"#define AM13_FLASH_WORD_SIZE            16"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#define AM13_FLASH_TIMEOUT_MS           8000"},{"line_number":72,"context_line":"#define AM13_SECTOR_SIZE_BYTES          0x800"},{"line_number":73,"context_line":"#define TI_MANUFACTURER_ID              0x17"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"/* Algorithm is loaded at the base of SRAM */"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"3110c9ce_6325ef02","line":72,"in_reply_to":"fe6de215_2c40d0ff","updated":"2026-06-08 13:59:31.000000000","message":"Thanks for filing internal document update ticket.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"static void am13_request_gsc_semaphore(struct flash_bank *bank)"},{"line_number":140,"context_line":"{"},{"line_number":141,"context_line":"\ttarget_write_u32(bank-\u003etarget, GSC_REG_FPC_FLSEMREQ, 1);"},{"line_number":142,"context_line":"}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"static void am13_clear_gsc_semaphore(struct flash_bank *bank)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"5fccfdee_3902b13b","line":141,"updated":"2026-05-13 12:04:54.000000000","message":"Do not ignore the return results and handle accordingly - link can fail at any point. If the DAP write fails (for example, when the target is in a fault state before a flash operation), the semaphore is not actually acquired. All subsequent NVMNW register accesses will be rejected by the hardware semaphore guard, but the driver proceeds anyway with\nno indication of why the flash operations are failing.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"static void am13_request_gsc_semaphore(struct flash_bank *bank)"},{"line_number":140,"context_line":"{"},{"line_number":141,"context_line":"\ttarget_write_u32(bank-\u003etarget, GSC_REG_FPC_FLSEMREQ, 1);"},{"line_number":142,"context_line":"}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"static void am13_clear_gsc_semaphore(struct flash_bank *bank)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"9de4b149_9a93956e","line":141,"in_reply_to":"5fccfdee_3902b13b","updated":"2026-06-08 12:24:25.000000000","message":"Updated to check return values while trying to acquire/release GSC Semaphore and while using `am13_request_gsc_semaphore` and `am13_clear_gsc_semaphore` in other functions.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"static void am13_request_gsc_semaphore(struct flash_bank *bank)"},{"line_number":140,"context_line":"{"},{"line_number":141,"context_line":"\ttarget_write_u32(bank-\u003etarget, GSC_REG_FPC_FLSEMREQ, 1);"},{"line_number":142,"context_line":"}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"static void am13_clear_gsc_semaphore(struct flash_bank *bank)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"7ef3c386_ecbb7fd0","line":141,"in_reply_to":"9de4b149_9a93956e","updated":"2026-06-08 13:59:31.000000000","message":"Ack","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"static void am13_clear_gsc_semaphore(struct flash_bank *bank)"},{"line_number":145,"context_line":"{"},{"line_number":146,"context_line":"\ttarget_write_u32(bank-\u003etarget, GSC_REG_FPC_FLSEMCLR, 1);"},{"line_number":147,"context_line":"}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"/* ---------- Flash controller helpers (erase path only) ---------- */"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"311b676a_5bab5b24","line":146,"updated":"2026-05-13 12:04:54.000000000","message":"Same - pass the error result back to caller and handle the error.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"static void am13_clear_gsc_semaphore(struct flash_bank *bank)"},{"line_number":145,"context_line":"{"},{"line_number":146,"context_line":"\ttarget_write_u32(bank-\u003etarget, GSC_REG_FPC_FLSEMCLR, 1);"},{"line_number":147,"context_line":"}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"/* ---------- Flash controller helpers (erase path only) ---------- */"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"5f9936b6_dd71268e","line":146,"in_reply_to":"311b676a_5bab5b24","updated":"2026-06-08 12:24:25.000000000","message":"Done","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":185,"context_line":"\t}"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"\tif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0) {"},{"line_number":188,"context_line":"\t\tLOG_ERROR(\"Flash command failed: %s\", am13_fctl_strerror(status));"},{"line_number":189,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":190,"context_line":"\t}"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9827ee9_8f3ed779","line":188,"updated":"2026-05-13 12:04:54.000000000","message":"LOG_ERROR(\"Flash command timedout: %s\", am13_fctl_strerror(status));\nis that better here?","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"3e6258481c3779913fdf724cb29b44492907e476","unresolved":false,"context_lines":[{"line_number":185,"context_line":"\t}"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"\tif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0) {"},{"line_number":188,"context_line":"\t\tLOG_ERROR(\"Flash command failed: %s\", am13_fctl_strerror(status));"},{"line_number":189,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":190,"context_line":"\t}"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"94ea890c_c1288dac","line":188,"in_reply_to":"9066e299_16add7e6","updated":"2026-06-08 14:17:46.000000000","message":"Does it help to distinguish failures? for example: when the command completes with CMDDONE\u003d1 and CMDPASS\u003d0 (e.g., write-protection violation), the while loop exits normally and the same message fires: \"Flash command timeout: FAILWEPROT\". The word \"timeout\" is possibly wrong?\n```\n/* Distinguish timeout from command failure */\nif ((status \u0026 FCTL_STATCMD_CMDDONE) \u003d\u003d 0) {\n    LOG_ERROR(\"AM13: flash command timed out\");\n    return ERROR_FAIL;\n}\nif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0) {\n    LOG_ERROR(\"AM13: flash command failed: %s\",\n              am13_fctl_strerror(status));\n    return ERROR_FAIL;\n}\n```","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":185,"context_line":"\t}"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"\tif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0) {"},{"line_number":188,"context_line":"\t\tLOG_ERROR(\"Flash command failed: %s\", am13_fctl_strerror(status));"},{"line_number":189,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":190,"context_line":"\t}"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c9222ca4_7e4ac0ab","line":188,"in_reply_to":"a9827ee9_8f3ed779","updated":"2026-06-08 12:24:25.000000000","message":"Yes, updated.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":false,"context_lines":[{"line_number":185,"context_line":"\t}"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"\tif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0) {"},{"line_number":188,"context_line":"\t\tLOG_ERROR(\"Flash command failed: %s\", am13_fctl_strerror(status));"},{"line_number":189,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":190,"context_line":"\t}"},{"line_number":191,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"9066e299_16add7e6","line":188,"in_reply_to":"c9222ca4_7e4ac0ab","updated":"2026-06-08 13:59:31.000000000","message":"Ack","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":328,"context_line":"\t\tif (bank-\u003ebase \u003d\u003d AM13_FLASH_BASE_NONMAIN)"},{"line_number":329,"context_line":"\t\t\taddr \u003d AM13_FLASH_BASE_NONMAIN + s * am13_info-\u003esector_size;"},{"line_number":330,"context_line":"\t\telse"},{"line_number":331,"context_line":"\t\t\taddr \u003d s * am13_info-\u003esector_size;"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"\t\tretval \u003d am13_fctl_sector_erase(bank, addr);"},{"line_number":334,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"052b7fde_c6d7da8e","line":331,"updated":"2026-05-13 12:04:54.000000000","message":"The address for MAIN flash sectors is computed as\n`s * am13_info-\u003esector_size` rather than `bank-\u003ebase + s * sector_size`:\n\n```c\nif (bank-\u003ebase \u003d\u003d AM13_FLASH_BASE_NONMAIN)\n    addr \u003d AM13_FLASH_BASE_NONMAIN + s * am13_info-\u003esector_size;\nelse\n    addr \u003d s * am13_info-\u003esector_size;     /* ← no bank-\u003ebase */\n```\n\nSince `AM13_FLASH_BASE_MAIN \u003d 0x00000000`, the result is the same\nnumerically, but the pattern diverges from the OpenOCD convention of\nusing `bank-\u003ebase` for all address calculations. A uniform\n\n```c\naddr \u003d bank-\u003ebase + s * am13_info-\u003esector_size;\n```\n\nwould work for both regions and be consistent with other drivers?","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":328,"context_line":"\t\tif (bank-\u003ebase \u003d\u003d AM13_FLASH_BASE_NONMAIN)"},{"line_number":329,"context_line":"\t\t\taddr \u003d AM13_FLASH_BASE_NONMAIN + s * am13_info-\u003esector_size;"},{"line_number":330,"context_line":"\t\telse"},{"line_number":331,"context_line":"\t\t\taddr \u003d s * am13_info-\u003esector_size;"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"\t\tretval \u003d am13_fctl_sector_erase(bank, addr);"},{"line_number":334,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ece50d02_d184b6d3","line":331,"in_reply_to":"052b7fde_c6d7da8e","updated":"2026-06-08 12:24:25.000000000","message":"Updated to use `addr \u003d bank-\u003ebase + s * am13_info-\u003esector_size;`","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":false,"context_lines":[{"line_number":328,"context_line":"\t\tif (bank-\u003ebase \u003d\u003d AM13_FLASH_BASE_NONMAIN)"},{"line_number":329,"context_line":"\t\t\taddr \u003d AM13_FLASH_BASE_NONMAIN + s * am13_info-\u003esector_size;"},{"line_number":330,"context_line":"\t\telse"},{"line_number":331,"context_line":"\t\t\taddr \u003d s * am13_info-\u003esector_size;"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"\t\tretval \u003d am13_fctl_sector_erase(bank, addr);"},{"line_number":334,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"383cd793_f08c44cd","line":331,"in_reply_to":"ece50d02_d184b6d3","updated":"2026-06-08 13:59:31.000000000","message":"Ack","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":355,"context_line":"{"},{"line_number":356,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":357,"context_line":"\tuint32_t addr \u003d bank-\u003ebase + offset;"},{"line_number":358,"context_line":"\tint retval;"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"\tam13_request_gsc_semaphore(bank);"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"e88d652a_0f6127a5","line":358,"updated":"2026-05-13 12:04:54.000000000","message":"set retval to 0.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":false,"context_lines":[{"line_number":355,"context_line":"{"},{"line_number":356,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":357,"context_line":"\tuint32_t addr \u003d bank-\u003ebase + offset;"},{"line_number":358,"context_line":"\tint retval;"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"\tam13_request_gsc_semaphore(bank);"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"3efe98cb_798994df","line":358,"in_reply_to":"e88d652a_0f6127a5","updated":"2026-06-08 12:24:25.000000000","message":"Done","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"\tam13_request_gsc_semaphore(bank);"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"\twhile (count \u003e 0) {"},{"line_number":363,"context_line":"\t\tuint32_t n \u003d MIN(count, AM13_FLASH_WORD_SIZE);"},{"line_number":364,"context_line":"\t\tuint8_t word[AM13_FLASH_WORD_SIZE];"},{"line_number":365,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"e5a8f63d_905dddb9","line":362,"updated":"2026-05-13 12:04:54.000000000","message":"Why not check count at entry? if count \u003d\u003d 0, return 0? no point in requesting sem etc, plus the code will be straight line.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"\tam13_request_gsc_semaphore(bank);"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"\twhile (count \u003e 0) {"},{"line_number":363,"context_line":"\t\tuint32_t n \u003d MIN(count, AM13_FLASH_WORD_SIZE);"},{"line_number":364,"context_line":"\t\tuint8_t word[AM13_FLASH_WORD_SIZE];"},{"line_number":365,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"0c529f2c_c0f2b98a","line":362,"in_reply_to":"e5a8f63d_905dddb9","updated":"2026-06-08 12:24:25.000000000","message":"Done","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":430,"context_line":"\tretval \u003d am13_auto_probe(bank);"},{"line_number":431,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":432,"context_line":"\t\treturn retval;"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"\t/* Allocate SRAM for algorithm + buffers */"},{"line_number":435,"context_line":"\ttarget_free_working_area(target, am13_info-\u003eworking_area);"},{"line_number":436,"context_line":"\tam13_info-\u003eworking_area \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ff408d7c_4ae31b91","line":433,"updated":"2026-05-13 12:04:54.000000000","message":"Do we need to add a defensive logic here:\nif (am13_info-\u003eworking_area-\u003eaddress !\u003d AM13_ALGO_BASE) {\n    LOG_ERROR(\"AM13: working area at wrong address\");\n    ...\n}\n\nThe algorithm binary has hardcoded parameter and buffer addresses (0x20002000, 0x20002100, 0x20002900). A comment explaining this constraint — similar to the cc26xx driver comment — would help users who try to override `WORKAREABASE`.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":true,"context_lines":[{"line_number":430,"context_line":"\tretval \u003d am13_auto_probe(bank);"},{"line_number":431,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":432,"context_line":"\t\treturn retval;"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"\t/* Allocate SRAM for algorithm + buffers */"},{"line_number":435,"context_line":"\ttarget_free_working_area(target, am13_info-\u003eworking_area);"},{"line_number":436,"context_line":"\tam13_info-\u003eworking_area \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"37bbfda7_9b09b52f","line":433,"in_reply_to":"00059a14_18101292","updated":"2026-06-08 13:59:31.000000000","message":"if there a reason to do it after alloc? if not, I would suggest to move it up and fail earlier in the sequence.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"b17c19f02d240e41b0a55bbe105697ecaeb89a42","unresolved":true,"context_lines":[{"line_number":430,"context_line":"\tretval \u003d am13_auto_probe(bank);"},{"line_number":431,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":432,"context_line":"\t\treturn retval;"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"\t/* Allocate SRAM for algorithm + buffers */"},{"line_number":435,"context_line":"\ttarget_free_working_area(target, am13_info-\u003eworking_area);"},{"line_number":436,"context_line":"\tam13_info-\u003eworking_area \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"782f70b8_0cf22770","line":433,"in_reply_to":"37bbfda7_9b09b52f","updated":"2026-06-10 06:30:30.000000000","message":"Placed the check before alloc.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"9f737a42b91012a4dc9141a18da2978d0510937a","unresolved":false,"context_lines":[{"line_number":430,"context_line":"\tretval \u003d am13_auto_probe(bank);"},{"line_number":431,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":432,"context_line":"\t\treturn retval;"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"\t/* Allocate SRAM for algorithm + buffers */"},{"line_number":435,"context_line":"\ttarget_free_working_area(target, am13_info-\u003eworking_area);"},{"line_number":436,"context_line":"\tam13_info-\u003eworking_area \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c9bfae8a_49ede30e","line":433,"in_reply_to":"782f70b8_0cf22770","updated":"2026-06-10 15:06:42.000000000","message":"Ack","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":430,"context_line":"\tretval \u003d am13_auto_probe(bank);"},{"line_number":431,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":432,"context_line":"\t\treturn retval;"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"\t/* Allocate SRAM for algorithm + buffers */"},{"line_number":435,"context_line":"\ttarget_free_working_area(target, am13_info-\u003eworking_area);"},{"line_number":436,"context_line":"\tam13_info-\u003eworking_area \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"00059a14_18101292","line":433,"in_reply_to":"ff408d7c_4ae31b91","updated":"2026-06-08 12:24:25.000000000","message":"This defensive check is present after `target_alloc_working_area`. Added a comment explaining the address constraint and updated the error message to inform the user that `WORKAREABASE` must be exactly `0x20000000`.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":436,"context_line":"\tam13_info-\u003eworking_area \u003d NULL;"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"\tretval \u003d target_alloc_working_area(target, AM13_ALGO_WORKING_SIZE,"},{"line_number":439,"context_line":"\t\t\t\t\t   \u0026am13_info-\u003eworking_area);"},{"line_number":440,"context_line":"\tif (retval !\u003d ERROR_OK) {"},{"line_number":441,"context_line":"\t\tLOG_ERROR(\"AM13: insufficient SRAM for flash loader (%u bytes)\","},{"line_number":442,"context_line":"\t\t\t  AM13_ALGO_WORKING_SIZE);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"35bd03e9_7f0639a2","line":439,"updated":"2026-05-13 12:04:54.000000000","message":"The write algorithm (9526, `flash_unprotect()`) only clears\n`CMDWEPROTA` and `CMDWEPROTB`. It does not clear `CMDWEPROTNM`,\nwhich protects the NONMAIN region. When the OpenOCD driver calls\n`am13_write()` for a NONMAIN bank, it attempts the algorithm path\nfirst. Because the algorithm never unprotects NONMAIN, every\nword-write to NONMAIN flash via the algorithm will silently fail\nwrite-protection.\nThe direct-write fallback correctly handles this:\n\n```c\ncase AM13_FLASH_BASE_NONMAIN:\n    return target_write_u32(target, FCTL_REG_CMDWEPROTNM, 0);\n```\nWas this intentional?","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":436,"context_line":"\tam13_info-\u003eworking_area \u003d NULL;"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"\tretval \u003d target_alloc_working_area(target, AM13_ALGO_WORKING_SIZE,"},{"line_number":439,"context_line":"\t\t\t\t\t   \u0026am13_info-\u003eworking_area);"},{"line_number":440,"context_line":"\tif (retval !\u003d ERROR_OK) {"},{"line_number":441,"context_line":"\t\tLOG_ERROR(\"AM13: insufficient SRAM for flash loader (%u bytes)\","},{"line_number":442,"context_line":"\t\t\t  AM13_ALGO_WORKING_SIZE);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"72037c53_cb5987df","line":439,"in_reply_to":"35bd03e9_7f0639a2","updated":"2026-06-08 12:24:25.000000000","message":"That wasn\u0027t intentional. The loader has been updated to to clear `CMDWEPROTNM` as well.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":false,"context_lines":[{"line_number":436,"context_line":"\tam13_info-\u003eworking_area \u003d NULL;"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"\tretval \u003d target_alloc_working_area(target, AM13_ALGO_WORKING_SIZE,"},{"line_number":439,"context_line":"\t\t\t\t\t   \u0026am13_info-\u003eworking_area);"},{"line_number":440,"context_line":"\tif (retval !\u003d ERROR_OK) {"},{"line_number":441,"context_line":"\t\tLOG_ERROR(\"AM13: insufficient SRAM for flash loader (%u bytes)\","},{"line_number":442,"context_line":"\t\t\t  AM13_ALGO_WORKING_SIZE);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"98321859_a674e52e","line":439,"in_reply_to":"72037c53_cb5987df","updated":"2026-06-08 13:59:31.000000000","message":"Ack","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"\t/* Disable NVIC — stale Zephyr ISRs would fault on overwritten SRAM */"},{"line_number":470,"context_line":"\tfor (uint32_t icer \u003d 0xE000E180; icer \u003c\u003d 0xE000E19C; icer +\u003d 4)"},{"line_number":471,"context_line":"\t\ttarget_write_u32(target, icer, 0xFFFFFFFF);"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":474,"context_line":"\ttarget_write_u32(target, 0xE000ED94, 0x00000000);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"077f31a1_0a03e81a","line":471,"updated":"2026-05-13 12:04:54.000000000","message":"Please check the return value and break out of the loop and handle appropriately.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"\t/* Disable NVIC — stale Zephyr ISRs would fault on overwritten SRAM */"},{"line_number":470,"context_line":"\tfor (uint32_t icer \u003d 0xE000E180; icer \u003c\u003d 0xE000E19C; icer +\u003d 4)"},{"line_number":471,"context_line":"\t\ttarget_write_u32(target, icer, 0xFFFFFFFF);"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":474,"context_line":"\ttarget_write_u32(target, 0xE000ED94, 0x00000000);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"7480cd9b_e807798b","line":471,"in_reply_to":"077f31a1_0a03e81a","updated":"2026-06-08 12:24:25.000000000","message":"Updated.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":false,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"\t/* Disable NVIC — stale Zephyr ISRs would fault on overwritten SRAM */"},{"line_number":470,"context_line":"\tfor (uint32_t icer \u003d 0xE000E180; icer \u003c\u003d 0xE000E19C; icer +\u003d 4)"},{"line_number":471,"context_line":"\t\ttarget_write_u32(target, icer, 0xFFFFFFFF);"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":474,"context_line":"\ttarget_write_u32(target, 0xE000ED94, 0x00000000);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"122ffd93_db2fc62b","line":471,"in_reply_to":"7480cd9b_e807798b","updated":"2026-06-08 13:59:31.000000000","message":"Ack","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":471,"context_line":"\t\ttarget_write_u32(target, icer, 0xFFFFFFFF);"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":474,"context_line":"\ttarget_write_u32(target, 0xE000ED94, 0x00000000);"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"\tam13_info-\u003earmv7m_info.common_magic \u003d ARMV7M_COMMON_MAGIC;"},{"line_number":477,"context_line":"\tam13_info-\u003earmv7m_info.core_mode \u003d ARM_MODE_THREAD;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4eb5a3bc_46d19ef3","line":474,"updated":"2026-05-13 12:04:54.000000000","message":"Same here","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":false,"context_lines":[{"line_number":471,"context_line":"\t\ttarget_write_u32(target, icer, 0xFFFFFFFF);"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":474,"context_line":"\ttarget_write_u32(target, 0xE000ED94, 0x00000000);"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"\tam13_info-\u003earmv7m_info.common_magic \u003d ARMV7M_COMMON_MAGIC;"},{"line_number":477,"context_line":"\tam13_info-\u003earmv7m_info.core_mode \u003d ARM_MODE_THREAD;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"0fa09c7b_45389b4e","line":474,"in_reply_to":"4eb5a3bc_46d19ef3","updated":"2026-06-08 12:24:25.000000000","message":"Done","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":552,"context_line":"}"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"static int am13_write(struct flash_bank *bank, const unsigned char *buffer,"},{"line_number":555,"context_line":"\t\t      unsigned int offset, unsigned int count)"},{"line_number":556,"context_line":"{"},{"line_number":557,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":558,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ad71a9f6_4f366d4b","line":555,"updated":"2026-05-13 12:04:54.000000000","message":"On all current OpenOCD platforms `unsigned char \u003d\u003d uint8_t` and\n`unsigned int \u003d\u003d uint32_t`, so this compiles without warning.\nStill, consistent use of `uint8_t *` and `uint32_t` would follow\nthe same pattern as every other NOR driver in the tree.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":false,"context_lines":[{"line_number":552,"context_line":"}"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"static int am13_write(struct flash_bank *bank, const unsigned char *buffer,"},{"line_number":555,"context_line":"\t\t      unsigned int offset, unsigned int count)"},{"line_number":556,"context_line":"{"},{"line_number":557,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":558,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c1a6cd42_9b724eb8","line":555,"in_reply_to":"ad71a9f6_4f366d4b","updated":"2026-06-08 12:24:25.000000000","message":"Done","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"d57adaa26e79dc224c60bddb685f296ed2d1d220","unresolved":true,"context_lines":[{"line_number":625,"context_line":"\t\tretval \u003d am13_algo_wait_done(bank, params_addr[index]);"},{"line_number":626,"context_line":"\t}"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"\t(void)am13_algo_quit(bank);"},{"line_number":629,"context_line":"\treturn retval;"},{"line_number":630,"context_line":"}"},{"line_number":631,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4861f178_7c316f4b","line":628,"updated":"2026-05-13 12:04:54.000000000","message":"why we are ignoring the error value? If the algorithm is stuck (e.g., flash error during the last buffer), the quit error is lost and the caller only sees the write-loop `retval`.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"0aec8819886f4238345eb70516b045cab8ef7441","unresolved":false,"context_lines":[{"line_number":625,"context_line":"\t\tretval \u003d am13_algo_wait_done(bank, params_addr[index]);"},{"line_number":626,"context_line":"\t}"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"\t(void)am13_algo_quit(bank);"},{"line_number":629,"context_line":"\treturn retval;"},{"line_number":630,"context_line":"}"},{"line_number":631,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"223c57f2_cfd6c242","line":628,"in_reply_to":"40550157_451a58f3","updated":"2026-06-08 13:59:31.000000000","message":"Ack","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"0be37489c19602830df8298d8fad20be8503156c","unresolved":true,"context_lines":[{"line_number":625,"context_line":"\t\tretval \u003d am13_algo_wait_done(bank, params_addr[index]);"},{"line_number":626,"context_line":"\t}"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"\t(void)am13_algo_quit(bank);"},{"line_number":629,"context_line":"\treturn retval;"},{"line_number":630,"context_line":"}"},{"line_number":631,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"40550157_451a58f3","line":628,"in_reply_to":"4861f178_7c316f4b","updated":"2026-06-08 12:24:25.000000000","message":"Thanks, updated to return `am13_algo_quit`\u0027s return value in case `retval` is not `ERROR_OK`.","commit_id":"1b7b531fa738391be5a80aa296c8a2149aa19a36"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"3e6258481c3779913fdf724cb29b44492907e476","unresolved":true,"context_lines":[{"line_number":344,"context_line":"\t\tretval \u003d am13_fctl_sector_erase(bank, addr);"},{"line_number":345,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":346,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":347,"context_line":"\t\t\tam13_clear_gsc_semaphore(bank);"},{"line_number":348,"context_line":"\t\t\treturn retval;"},{"line_number":349,"context_line":"\t\t}"},{"line_number":350,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"da1dd458_18a09872","line":347,"updated":"2026-06-08 14:17:46.000000000","message":"```\nint retval1 \u003d am13_clear_gsc_semaphore(bank);\nif (retval1 !\u003d ERROR_OK) {\nLOG_ERROR...\n}\n```\n??","commit_id":"ddacd580ad5ce9934551906d272e5db2059cb122"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"9f737a42b91012a4dc9141a18da2978d0510937a","unresolved":false,"context_lines":[{"line_number":344,"context_line":"\t\tretval \u003d am13_fctl_sector_erase(bank, addr);"},{"line_number":345,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":346,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":347,"context_line":"\t\t\tam13_clear_gsc_semaphore(bank);"},{"line_number":348,"context_line":"\t\t\treturn retval;"},{"line_number":349,"context_line":"\t\t}"},{"line_number":350,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"d34a9e2b_2d196741","line":347,"in_reply_to":"96316573_f458e8da","updated":"2026-06-10 15:06:42.000000000","message":"Ack","commit_id":"ddacd580ad5ce9934551906d272e5db2059cb122"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"b17c19f02d240e41b0a55bbe105697ecaeb89a42","unresolved":true,"context_lines":[{"line_number":344,"context_line":"\t\tretval \u003d am13_fctl_sector_erase(bank, addr);"},{"line_number":345,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":346,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":347,"context_line":"\t\t\tam13_clear_gsc_semaphore(bank);"},{"line_number":348,"context_line":"\t\t\treturn retval;"},{"line_number":349,"context_line":"\t\t}"},{"line_number":350,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"96316573_f458e8da","line":347,"in_reply_to":"da1dd458_18a09872","updated":"2026-06-10 06:30:30.000000000","message":"Thanks for the catch, added return value check there.","commit_id":"ddacd580ad5ce9934551906d272e5db2059cb122"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"9f737a42b91012a4dc9141a18da2978d0510937a","unresolved":true,"context_lines":[{"line_number":346,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"\t\t\tint retval1 \u003d am13_clear_gsc_semaphore(bank);"},{"line_number":349,"context_line":"\t\t\tif (retval1 !\u003d ERROR_OK) {"},{"line_number":350,"context_line":"\t\t\t\treturn retval1;"},{"line_number":351,"context_line":"\t\t\t}"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"cdd4630a_e2d87724","line":349,"updated":"2026-06-10 15:06:42.000000000","message":"Add a LOG_ERROR here to indicate that gsc sem was\u0027nt cleared.","commit_id":"4a4ceb491579eb5f0da9b31f02f6df9488055e2e"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"d31d73aed25bcb4192496ea349344795d994bd30","unresolved":false,"context_lines":[{"line_number":346,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"\t\t\tint retval1 \u003d am13_clear_gsc_semaphore(bank);"},{"line_number":349,"context_line":"\t\t\tif (retval1 !\u003d ERROR_OK) {"},{"line_number":350,"context_line":"\t\t\t\treturn retval1;"},{"line_number":351,"context_line":"\t\t\t}"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"9971dfca_6395a78a","line":349,"updated":"2026-06-11 06:10:02.000000000","message":"[openocd-gerrit-build #22454](https://build.openocd.org/job/openocd-gerrit-build/22454/TARGET\u003dmingw64/console) failure:\n```\nERROR:BRACES: braces {} are not necessary for single statement blocks\n#389: FILE: src/flash/nor/am13e230x.c:349:\n+\t\t\tif (retval1 !\u003d ERROR_OK) {\n+\t\t\t\treturn retval1;\n+\t\t\t}\n```\n\nRemoved braces.","commit_id":"4a4ceb491579eb5f0da9b31f02f6df9488055e2e"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":false,"context_lines":[{"line_number":346,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"\t\t\tint retval1 \u003d am13_clear_gsc_semaphore(bank);"},{"line_number":349,"context_line":"\t\t\tif (retval1 !\u003d ERROR_OK) {"},{"line_number":350,"context_line":"\t\t\t\treturn retval1;"},{"line_number":351,"context_line":"\t\t\t}"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"007ed4df_0fdd6a50","line":349,"in_reply_to":"c0389722_b3e25c5b","updated":"2026-06-11 13:29:10.000000000","message":"aah i missed it. makes sense.","commit_id":"4a4ceb491579eb5f0da9b31f02f6df9488055e2e"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"d31d73aed25bcb4192496ea349344795d994bd30","unresolved":true,"context_lines":[{"line_number":346,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"\t\t\tint retval1 \u003d am13_clear_gsc_semaphore(bank);"},{"line_number":349,"context_line":"\t\t\tif (retval1 !\u003d ERROR_OK) {"},{"line_number":350,"context_line":"\t\t\t\treturn retval1;"},{"line_number":351,"context_line":"\t\t\t}"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"c0389722_b3e25c5b","line":349,"in_reply_to":"cdd4630a_e2d87724","updated":"2026-06-11 06:10:02.000000000","message":"There\u0027s a LOG_ERROR inside `am13_clear_gsc_semaphore`: https://review.openocd.org/c/openocd/+/9527/6/src/flash/nor/am13e230x.c#159","commit_id":"4a4ceb491579eb5f0da9b31f02f6df9488055e2e"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":201,"context_line":"\tif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0) {"},{"line_number":202,"context_line":"\t\tLOG_ERROR(\"Flash command timeout: %s\", am13_fctl_strerror(status));"},{"line_number":203,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":204,"context_line":"\t}"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"\treturn ERROR_OK;"},{"line_number":207,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"5124a37a_944965ab","line":204,"updated":"2026-06-11 13:29:10.000000000","message":"Should we report differently?\n```\nbool timed_out \u003d false;\nwhile ((status \u0026 FCTL_STATCMD_CMDDONE) \u003d\u003d 0) {\n    ...\n    if (timeval_ms() - start_ms \u003e AM13_FLASH_TIMEOUT_MS) {\n        timed_out \u003d true;\n        break;\n    }\n}\nif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0) {\n    if (timed_out)\n        LOG_ERROR(\"AM13: flash command timed out after %d ms\", AM13_FLASH_TIMEOUT_MS);\n    else\n        LOG_ERROR(\"AM13: flash command failed: %s\", am13_fctl_strerror(status));\n    return ERROR_FAIL;\n}\n```","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":201,"context_line":"\tif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0) {"},{"line_number":202,"context_line":"\t\tLOG_ERROR(\"Flash command timeout: %s\", am13_fctl_strerror(status));"},{"line_number":203,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":204,"context_line":"\t}"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"\treturn ERROR_OK;"},{"line_number":207,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"12b29ecd_02a4e9e4","line":204,"in_reply_to":"5124a37a_944965ab","updated":"2026-06-15 06:21:40.000000000","message":"Yes, updated to separately report timeout.","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":321,"context_line":"}"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"static int am13_erase(struct flash_bank *bank, unsigned int first,"},{"line_number":324,"context_line":"\t\t      unsigned int last)"},{"line_number":325,"context_line":"{"},{"line_number":326,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"},{"line_number":327,"context_line":"\tint retval;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"2d31318b_09908941","line":324,"updated":"2026-06-11 13:29:10.000000000","message":"tools/checkpatch.sh uses the project\u0027s .checkpatch.conf which sets --tab-size\u003d4. With 4-space tab stops, continuation indentation of the form \\t\\t (2 tabs + 6 spaces \u003d 14 chars) must instead be written as \\t\\t\\t (3 tabs + 2 spaces \u003d 14 chars) to maximise tab use.jenkins ci seems to use --tab-size\u003d8.\n\nSimple fix -\u003e just move the arg to the same line:\n```\nstatic int am13_erase(struct flash_bank *bank, unsigned int first, unsigned int last)\n```","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":321,"context_line":"}"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"static int am13_erase(struct flash_bank *bank, unsigned int first,"},{"line_number":324,"context_line":"\t\t      unsigned int last)"},{"line_number":325,"context_line":"{"},{"line_number":326,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"},{"line_number":327,"context_line":"\tint retval;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"4c74abf2_86ab6ab3","line":324,"in_reply_to":"2d31318b_09908941","updated":"2026-06-15 06:21:40.000000000","message":"Done","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":365,"context_line":" * SRAM is needed by a RAM-resident application)."},{"line_number":366,"context_line":" */"},{"line_number":367,"context_line":"static int am13_write_direct(struct flash_bank *bank, const uint8_t *buffer,"},{"line_number":368,"context_line":"\t\t\t     uint32_t offset, uint32_t count)"},{"line_number":369,"context_line":"{"},{"line_number":370,"context_line":"\tif (count \u003d\u003d 0)"},{"line_number":371,"context_line":"\t\treturn ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"d6720c37_272d58e3","line":368,"updated":"2026-06-11 13:29:10.000000000","message":"same issue running checkpatch.sh locally -\u003e just flatten it.","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":365,"context_line":" * SRAM is needed by a RAM-resident application)."},{"line_number":366,"context_line":" */"},{"line_number":367,"context_line":"static int am13_write_direct(struct flash_bank *bank, const uint8_t *buffer,"},{"line_number":368,"context_line":"\t\t\t     uint32_t offset, uint32_t count)"},{"line_number":369,"context_line":"{"},{"line_number":370,"context_line":"\tif (count \u003d\u003d 0)"},{"line_number":371,"context_line":"\t\treturn ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"3dddd937_69fd7b1f","line":368,"in_reply_to":"d6720c37_272d58e3","updated":"2026-06-15 06:21:40.000000000","message":"Done","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":431,"context_line":"\t\t\tbreak;"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"\t\tretval \u003d target_write_buffer(target, FCTL_REG_CMDDATA0,"},{"line_number":434,"context_line":"\t\t\t\t\t     n_send, word);"},{"line_number":435,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":436,"context_line":"\t\t\tbreak;"},{"line_number":437,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"5472457d_9112ac57","line":434,"updated":"2026-06-11 13:29:10.000000000","message":"same issue running checkpatch.sh locally at this commit -\u003e just flatten it.","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":431,"context_line":"\t\t\tbreak;"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"\t\tretval \u003d target_write_buffer(target, FCTL_REG_CMDDATA0,"},{"line_number":434,"context_line":"\t\t\t\t\t     n_send, word);"},{"line_number":435,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":436,"context_line":"\t\t\tbreak;"},{"line_number":437,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"d9ce35fe_c19340c0","line":434,"in_reply_to":"5472457d_9112ac57","updated":"2026-06-15 06:21:40.000000000","message":"Done","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":495,"context_line":"\t}"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"\tretval \u003d target_write_buffer(target, AM13_ALGO_BASE,"},{"line_number":498,"context_line":"\t\t\t\t     sizeof(am13_algo), am13_algo);"},{"line_number":499,"context_line":"\tif (retval !\u003d ERROR_OK) {"},{"line_number":500,"context_line":"\t\tLOG_ERROR(\"AM13: failed to load flash algorithm\");"},{"line_number":501,"context_line":"\t\ttarget_free_working_area(target, am13_info-\u003eworking_area);"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"765512a3_ec0ee120","line":498,"updated":"2026-06-11 13:29:10.000000000","message":"same issue running checkpatch.sh locally -\u003e just flatten it.","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":495,"context_line":"\t}"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"\tretval \u003d target_write_buffer(target, AM13_ALGO_BASE,"},{"line_number":498,"context_line":"\t\t\t\t     sizeof(am13_algo), am13_algo);"},{"line_number":499,"context_line":"\tif (retval !\u003d ERROR_OK) {"},{"line_number":500,"context_line":"\t\tLOG_ERROR(\"AM13: failed to load flash algorithm\");"},{"line_number":501,"context_line":"\t\ttarget_free_working_area(target, am13_info-\u003eworking_area);"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"cae59eaa_a41c6544","line":498,"in_reply_to":"765512a3_ec0ee120","updated":"2026-06-15 06:21:40.000000000","message":"Done","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":610,"context_line":"}"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"static int am13_write(struct flash_bank *bank, const uint8_t *buffer,"},{"line_number":613,"context_line":"\t\t      uint32_t offset, uint32_t count)"},{"line_number":614,"context_line":"{"},{"line_number":615,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":616,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"211535e4_7d99f6b3","line":613,"updated":"2026-06-11 13:29:10.000000000","message":"same issue running checkpatch.sh locally -\u003e just flatten it.","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":610,"context_line":"}"},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"static int am13_write(struct flash_bank *bank, const uint8_t *buffer,"},{"line_number":613,"context_line":"\t\t      uint32_t offset, uint32_t count)"},{"line_number":614,"context_line":"{"},{"line_number":615,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":616,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"283543da_efaf7679","line":613,"in_reply_to":"211535e4_7d99f6b3","updated":"2026-06-15 06:21:40.000000000","message":"Done","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":649,"context_line":"\t\tuint32_t size \u003d MIN(count, AM13_SECTOR_SIZE_BYTES);"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"\t\tretval \u003d target_write_buffer(target, buffer_addr[index],"},{"line_number":652,"context_line":"\t\t\t\t\t     size, buffer);"},{"line_number":653,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":654,"context_line":"\t\t\tbreak;"},{"line_number":655,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"3e6dbcbd_3bc2a49e","line":652,"updated":"2026-06-11 13:29:10.000000000","message":"same issue running checkpatch.sh locally -\u003e just flatten it.","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":649,"context_line":"\t\tuint32_t size \u003d MIN(count, AM13_SECTOR_SIZE_BYTES);"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"\t\tretval \u003d target_write_buffer(target, buffer_addr[index],"},{"line_number":652,"context_line":"\t\t\t\t\t     size, buffer);"},{"line_number":653,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":654,"context_line":"\t\t\tbreak;"},{"line_number":655,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"6e2679c8_cb61d1e3","line":652,"in_reply_to":"3e6dbcbd_3bc2a49e","updated":"2026-06-15 06:21:40.000000000","message":"Done","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":660,"context_line":"\t\t/* Write dest/len/cmd/status only — preserve algorithm\u0027s buf_addr */"},{"line_number":661,"context_line":"\t\tretval \u003d target_write_buffer(target, params_addr[index],"},{"line_number":662,"context_line":"\t\t\t\t\t     offsetof(struct am13_algo_params, buf_addr),"},{"line_number":663,"context_line":"\t\t\t\t\t     (uint8_t *)\u0026algo_params[index]);"},{"line_number":664,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":665,"context_line":"\t\t\tbreak;"},{"line_number":666,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"a9a0b86a_6fa178a5","line":663,"updated":"2026-06-11 13:29:10.000000000","message":"same issue running checkpatch.sh locally. please use the indentation of 4 and ensure tools/checkpath.sh reports no issues.","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":660,"context_line":"\t\t/* Write dest/len/cmd/status only — preserve algorithm\u0027s buf_addr */"},{"line_number":661,"context_line":"\t\tretval \u003d target_write_buffer(target, params_addr[index],"},{"line_number":662,"context_line":"\t\t\t\t\t     offsetof(struct am13_algo_params, buf_addr),"},{"line_number":663,"context_line":"\t\t\t\t\t     (uint8_t *)\u0026algo_params[index]);"},{"line_number":664,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":665,"context_line":"\t\t\tbreak;"},{"line_number":666,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"3d6b0f7b_eb8205ce","line":663,"in_reply_to":"a9a0b86a_6fa178a5","updated":"2026-06-15 06:21:40.000000000","message":"Done","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":754,"context_line":"\t\tbank-\u003esectors[i].size \u003d am13_info-\u003esector_size;"},{"line_number":755,"context_line":"\t\tbank-\u003esectors[i].is_erased \u003d -1;"},{"line_number":756,"context_line":"\t\tbank-\u003esectors[i].is_protected \u003d 0;"},{"line_number":757,"context_line":"\t}"},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"\tLOG_INFO(\"AM13: %s flash: %u KB (%u sectors), %u bank(s), SRAM: %u KB\","},{"line_number":760,"context_line":"\t\t (bank-\u003ebase \u003d\u003d AM13_FLASH_BASE_MAIN) ? \"MAIN\" : \"NONMAIN\","}],"source_content_type":"text/x-csrc","patch_set":7,"id":"511153f8_dd9411e2","line":757,"updated":"2026-06-15 06:21:40.000000000","message":"NONMAIN sector 0 of each bank is write-protected which causes `flash sector_erase 1 0 last` returns `FAILILLADDR`. These have to be marked protected here to prevent this error.  \n\n`fctl_sector_erase` has also been updated to accept bank and sector command sizes.","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"7c41153643b99222cfc1193b8a77a5471672ccf5","unresolved":true,"context_lines":[{"line_number":787,"context_line":"\t\t\t       \" TRACEID\u003d0x%08\" PRIx32"},{"line_number":788,"context_line":"\t\t\t       \" banks\u003d%u\","},{"line_number":789,"context_line":"\t\t\t       am13_info-\u003edid, am13_info-\u003etraceid,"},{"line_number":790,"context_line":"\t\t\t       am13_info-\u003emain_flash_num_banks);"},{"line_number":791,"context_line":"\treturn ERROR_OK;"},{"line_number":792,"context_line":"}"},{"line_number":793,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"ac0f374e_8893acff","line":790,"updated":"2026-06-11 13:29:10.000000000","message":"same issue running checkpatch.sh locally","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"6e21ca29b415b8cf6b436480980f1a694d9fe7a1","unresolved":false,"context_lines":[{"line_number":787,"context_line":"\t\t\t       \" TRACEID\u003d0x%08\" PRIx32"},{"line_number":788,"context_line":"\t\t\t       \" banks\u003d%u\","},{"line_number":789,"context_line":"\t\t\t       am13_info-\u003edid, am13_info-\u003etraceid,"},{"line_number":790,"context_line":"\t\t\t       am13_info-\u003emain_flash_num_banks);"},{"line_number":791,"context_line":"\treturn ERROR_OK;"},{"line_number":792,"context_line":"}"},{"line_number":793,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"ec96012f_a5d65fdd","line":790,"in_reply_to":"ac0f374e_8893acff","updated":"2026-06-15 06:21:40.000000000","message":"Done","commit_id":"4f1170df0cd42d5d3db991f6bb26e3e7d7d60e87"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"ae96fe28250a25e2f2b462e87426ab82690269c1","unresolved":false,"context_lines":[{"line_number":617,"context_line":"\t\tint64_t elapsed_ms \u003d timeval_ms() - start_ms;"},{"line_number":618,"context_line":"\t\tif (elapsed_ms \u003e 500)"},{"line_number":619,"context_line":"\t\t\tkeep_alive();"},{"line_number":620,"context_line":"\t\tif (elapsed_ms \u003e AM13_FLASH_TIMEOUT_MS)"},{"line_number":621,"context_line":"\t\t\tbreak;"},{"line_number":622,"context_line":"\t}"},{"line_number":623,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"ef75ff50_1e24fb4c","line":620,"updated":"2026-06-17 05:41:04.000000000","message":"Algorithm timeout error isn\u0027t logged. Fixed using the same `bool timed_out` pattern as `am13_fctl_wait_done`.","commit_id":"c43a4481cccac920d7724507d995a609e7a75cf9"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"2d4b6f7c933324548e2aaaeb5c7410da4528a193","unresolved":true,"context_lines":[{"line_number":358,"context_line":"\t\tif (sectors_per_nm_bank \u0026\u0026 (s % sectors_per_nm_bank) \u003d\u003d 0) {"},{"line_number":359,"context_line":"\t\t\tLOG_WARNING(\"AM13: NONMAIN sector %u (0x%08\" TARGET_PRIxADDR"},{"line_number":360,"context_line":"\t\t\t\t    \") is factory-protected, skipping\","},{"line_number":361,"context_line":"\t\t\t\t    s, bank-\u003ebase + s * am13_info-\u003esector_size);"},{"line_number":362,"context_line":"\t\t\tcontinue;"},{"line_number":363,"context_line":"\t\t}"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":10,"id":"567d6749_61929aca","line":361,"updated":"2026-06-16 16:27:11.000000000","message":"Drop the spaces in the indentation. (just use tabs)","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"ae96fe28250a25e2f2b462e87426ab82690269c1","unresolved":false,"context_lines":[{"line_number":358,"context_line":"\t\tif (sectors_per_nm_bank \u0026\u0026 (s % sectors_per_nm_bank) \u003d\u003d 0) {"},{"line_number":359,"context_line":"\t\t\tLOG_WARNING(\"AM13: NONMAIN sector %u (0x%08\" TARGET_PRIxADDR"},{"line_number":360,"context_line":"\t\t\t\t    \") is factory-protected, skipping\","},{"line_number":361,"context_line":"\t\t\t\t    s, bank-\u003ebase + s * am13_info-\u003esector_size);"},{"line_number":362,"context_line":"\t\t\tcontinue;"},{"line_number":363,"context_line":"\t\t}"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":10,"id":"2c9ca085_40e4ea77","line":361,"in_reply_to":"567d6749_61929aca","updated":"2026-06-17 05:41:04.000000000","message":"Done","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ada4585a8b2d97f782f652e6b72f17619f1fe512","unresolved":true,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"\t\tretval \u003d am13_fctl_erase(bank, addr, FCTL_CMDTYPE_SIZE_SECTOR);"},{"line_number":368,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":369,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"\t\t\tint retval1 \u003d am13_clear_gsc_semaphore(bank);"},{"line_number":372,"context_line":"\t\t\tif (retval1 !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"50267860_c8d50aaf","line":369,"updated":"2026-06-16 14:52:59.000000000","message":"add the retval here in the log?","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"ae96fe28250a25e2f2b462e87426ab82690269c1","unresolved":false,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"\t\tretval \u003d am13_fctl_erase(bank, addr, FCTL_CMDTYPE_SIZE_SECTOR);"},{"line_number":368,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":369,"context_line":"\t\t\tLOG_ERROR(\"Sector erase failed at 0x%08\" PRIx32, addr);"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"\t\t\tint retval1 \u003d am13_clear_gsc_semaphore(bank);"},{"line_number":372,"context_line":"\t\t\tif (retval1 !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"8668b3b0_153314c2","line":369,"in_reply_to":"50267860_c8d50aaf","updated":"2026-06-17 05:41:04.000000000","message":"Done","commit_id":"dbbeb46f43a6be53fbcc22030dbe3677cc8a4f4b"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":320,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"\t/* Protection resets after every operation; report as unprotected */"},{"line_number":323,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c bank-\u003enum_sectors; i++)"},{"line_number":324,"context_line":"\t\tbank-\u003esectors[i].is_protected \u003d 0;"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"\treturn ERROR_OK;"},{"line_number":327,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"7cb165b9_4e261cef","line":324,"range":{"start_line":323,"start_character":1,"end_line":324,"end_character":36},"updated":"2026-06-23 05:01:42.000000000","message":"What about the first sectors in each nonmain bank, set as protected in `am13_probe`?\nI think you may drop whole `am13_protect_check()`. It\u0027ll cause message \"Flash protection check is not implemented.\" which seems correct for the device.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":false,"context_lines":[{"line_number":320,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"\t/* Protection resets after every operation; report as unprotected */"},{"line_number":323,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c bank-\u003enum_sectors; i++)"},{"line_number":324,"context_line":"\t\tbank-\u003esectors[i].is_protected \u003d 0;"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"\treturn ERROR_OK;"},{"line_number":327,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"553080b3_1fa6729b","line":324,"range":{"start_line":323,"start_character":1,"end_line":324,"end_character":36},"in_reply_to":"7cb165b9_4e261cef","updated":"2026-06-23 12:48:10.000000000","message":"Dropped `am13_protect_check()`.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":336,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":337,"context_line":"\t}"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"\tif (!am13_info-\u003edid)"},{"line_number":340,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"\tretval \u003d am13_request_gsc_semaphore(bank);"},{"line_number":343,"context_line":"\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"5ab0c4f4_d5eb14b1","line":340,"range":{"start_line":339,"start_character":1,"end_line":340,"end_character":37},"updated":"2026-06-23 05:01:42.000000000","message":"Useless, ensured by the flash infrastructure","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":false,"context_lines":[{"line_number":336,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":337,"context_line":"\t}"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"\tif (!am13_info-\u003edid)"},{"line_number":340,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"\tretval \u003d am13_request_gsc_semaphore(bank);"},{"line_number":343,"context_line":"\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"f0dba948_6709588e","line":340,"range":{"start_line":339,"start_character":1,"end_line":340,"end_character":37},"in_reply_to":"5ab0c4f4_d5eb14b1","updated":"2026-06-23 12:48:10.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":402,"context_line":"\t\treturn retval;"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"\twhile (count \u003e 0) {"},{"line_number":405,"context_line":"\t\tuint32_t n \u003d MIN(count, AM13_FLASH_WORD_SIZE);"},{"line_number":406,"context_line":"\t\t/* Round up to 8-byte ECC chunk boundary */"},{"line_number":407,"context_line":"\t\tuint32_t n_send \u003d (n + 7) \u0026 ~0x7U;"},{"line_number":408,"context_line":"\t\tuint8_t word[AM13_FLASH_WORD_SIZE];"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"ffc170eb_84649b86","line":405,"range":{"start_line":405,"start_character":2,"end_line":405,"end_character":48},"updated":"2026-06-23 05:01:42.000000000","message":"This code assumes flash offset (or addr) is aligned to flash word boundary. An image from linker usually is. But try `flash fillw`, it doesn\u0027t impose any limits to the entered address.\n\nTo ensure alignment, you should set `bank-\u003ewrite_start_alignment` in `am13_flash_bank_command()` or in `am13_probe()`.\n\nInstead of padding to AM13_FLASH_WORD_SIZE, simply set also `bank-\u003ewrite_end_alignment`","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"65c856604248eaa317ef577230b2df39738efb32","unresolved":false,"context_lines":[{"line_number":402,"context_line":"\t\treturn retval;"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"\twhile (count \u003e 0) {"},{"line_number":405,"context_line":"\t\tuint32_t n \u003d MIN(count, AM13_FLASH_WORD_SIZE);"},{"line_number":406,"context_line":"\t\t/* Round up to 8-byte ECC chunk boundary */"},{"line_number":407,"context_line":"\t\tuint32_t n_send \u003d (n + 7) \u0026 ~0x7U;"},{"line_number":408,"context_line":"\t\tuint8_t word[AM13_FLASH_WORD_SIZE];"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"9674d701_9a76fccd","line":405,"range":{"start_line":405,"start_character":2,"end_line":405,"end_character":48},"in_reply_to":"dcc8632f_681447fc","updated":"2026-07-04 08:12:11.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":true,"context_lines":[{"line_number":402,"context_line":"\t\treturn retval;"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"\twhile (count \u003e 0) {"},{"line_number":405,"context_line":"\t\tuint32_t n \u003d MIN(count, AM13_FLASH_WORD_SIZE);"},{"line_number":406,"context_line":"\t\t/* Round up to 8-byte ECC chunk boundary */"},{"line_number":407,"context_line":"\t\tuint32_t n_send \u003d (n + 7) \u0026 ~0x7U;"},{"line_number":408,"context_line":"\t\tuint8_t word[AM13_FLASH_WORD_SIZE];"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"dcc8632f_681447fc","line":405,"range":{"start_line":405,"start_character":2,"end_line":405,"end_character":48},"in_reply_to":"ffc170eb_84649b86","updated":"2026-06-23 12:48:10.000000000","message":"Thanks, removed rounding+padding logic and now setting `bank-\u003ewrite_start_alignment` and `bank-\u003ewrite_end_alignment`.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":483,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"},{"line_number":484,"context_line":"\tint retval;"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"\tretval \u003d am13_auto_probe(bank);"},{"line_number":487,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":488,"context_line":"\t\treturn retval;"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"\t/*"},{"line_number":491,"context_line":"\t * The flash loader is not position-independent: it references"},{"line_number":492,"context_line":"\t * parameter blocks (AM13_ALGO_PARAMS_0/1) and data buffers"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"8523a600_092370eb","line":489,"range":{"start_line":486,"start_character":1,"end_line":489,"end_character":0},"updated":"2026-06-23 05:01:42.000000000","message":"Useless, always called by the flash infrastructure before calling driver.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":false,"context_lines":[{"line_number":483,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"},{"line_number":484,"context_line":"\tint retval;"},{"line_number":485,"context_line":""},{"line_number":486,"context_line":"\tretval \u003d am13_auto_probe(bank);"},{"line_number":487,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":488,"context_line":"\t\treturn retval;"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"\t/*"},{"line_number":491,"context_line":"\t * The flash loader is not position-independent: it references"},{"line_number":492,"context_line":"\t * parameter blocks (AM13_ALGO_PARAMS_0/1) and data buffers"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"0150c188_e21f1aac","line":489,"range":{"start_line":486,"start_character":1,"end_line":489,"end_character":0},"in_reply_to":"8523a600_092370eb","updated":"2026-06-23 12:48:10.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":495,"context_line":"\t * at AM13_ALGO_BASE (0x20000000). If the target config is set to a"},{"line_number":496,"context_line":"\t * different WORKAREABASE, the algorithm will malfunction silently."},{"line_number":497,"context_line":"\t */"},{"line_number":498,"context_line":"\tif (target-\u003eworking_area_phys !\u003d AM13_ALGO_BASE) {"},{"line_number":499,"context_line":"\t\tLOG_ERROR(\"AM13: working area must be at 0x%08x (got 0x%08\" PRIx64"},{"line_number":500,"context_line":"\t\t\t  \"); set \u0027_WORKAREABASE 0x%08x\u0027 in your target config\","},{"line_number":501,"context_line":"\t\t\t  AM13_ALGO_BASE,"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"bd487df3_4107f402","line":498,"updated":"2026-06-23 05:01:42.000000000","message":"Honestly I don\u0027t like abusing `target_alloc_working_area()` for fixed address regions. The preferred solution is to make position independent code, it should be easy on Cortex-M33.\n\nIf you have to stay at fixed address, please check the address of the allocated working area instead. Even if `target-\u003eworking_area_phys` is correct some future code could allocate a working area chunk before flash write is run.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"65c856604248eaa317ef577230b2df39738efb32","unresolved":false,"context_lines":[{"line_number":495,"context_line":"\t * at AM13_ALGO_BASE (0x20000000). If the target config is set to a"},{"line_number":496,"context_line":"\t * different WORKAREABASE, the algorithm will malfunction silently."},{"line_number":497,"context_line":"\t */"},{"line_number":498,"context_line":"\tif (target-\u003eworking_area_phys !\u003d AM13_ALGO_BASE) {"},{"line_number":499,"context_line":"\t\tLOG_ERROR(\"AM13: working area must be at 0x%08x (got 0x%08\" PRIx64"},{"line_number":500,"context_line":"\t\t\t  \"); set \u0027_WORKAREABASE 0x%08x\u0027 in your target config\","},{"line_number":501,"context_line":"\t\t\t  AM13_ALGO_BASE,"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"625cb149_cd17c8b1","line":498,"in_reply_to":"653e69c9_4075a365","updated":"2026-07-04 08:12:11.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":true,"context_lines":[{"line_number":495,"context_line":"\t * at AM13_ALGO_BASE (0x20000000). If the target config is set to a"},{"line_number":496,"context_line":"\t * different WORKAREABASE, the algorithm will malfunction silently."},{"line_number":497,"context_line":"\t */"},{"line_number":498,"context_line":"\tif (target-\u003eworking_area_phys !\u003d AM13_ALGO_BASE) {"},{"line_number":499,"context_line":"\t\tLOG_ERROR(\"AM13: working area must be at 0x%08x (got 0x%08\" PRIx64"},{"line_number":500,"context_line":"\t\t\t  \"); set \u0027_WORKAREABASE 0x%08x\u0027 in your target config\","},{"line_number":501,"context_line":"\t\t\t  AM13_ALGO_BASE,"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"653e69c9_4075a365","line":498,"in_reply_to":"bd487df3_4107f402","updated":"2026-06-23 12:48:10.000000000","message":"Updated to check the allocated address by reading `working_area-\u003eaddress`.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":537,"context_line":"\t}"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"\t/* Disable NVIC — stale Zephyr ISRs would fault on overwritten SRAM */"},{"line_number":540,"context_line":"\tfor (uint32_t icer \u003d 0xE000E180; icer \u003c\u003d 0xE000E19C; icer +\u003d 4) {"},{"line_number":541,"context_line":"\t\tretval \u003d target_write_u32(target, icer, 0xFFFFFFFF);"},{"line_number":542,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":543,"context_line":"\t\t\tgoto err_free_working_area;"},{"line_number":544,"context_line":"\t}"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":547,"context_line":"\tretval \u003d target_write_u32(target, 0xE000ED94, 0x00000000);"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"7e8e6283_0fa32f04","line":544,"range":{"start_line":540,"start_character":1,"end_line":544,"end_character":2},"updated":"2026-06-23 05:01:42.000000000","message":"Please see\nhttps://openocd.org/doc/html/Flash-Commands.html#Preparing-a-Target-before-Flash-Programming\n\nSo if there are problems with stale Zephyr ISRs then Zephyr config prevents to issue `reset init` before flash programming. This should be fixed in Zephyr, not in OpenOCD flash driver.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":false,"context_lines":[{"line_number":537,"context_line":"\t}"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"\t/* Disable NVIC — stale Zephyr ISRs would fault on overwritten SRAM */"},{"line_number":540,"context_line":"\tfor (uint32_t icer \u003d 0xE000E180; icer \u003c\u003d 0xE000E19C; icer +\u003d 4) {"},{"line_number":541,"context_line":"\t\tretval \u003d target_write_u32(target, icer, 0xFFFFFFFF);"},{"line_number":542,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":543,"context_line":"\t\t\tgoto err_free_working_area;"},{"line_number":544,"context_line":"\t}"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":547,"context_line":"\tretval \u003d target_write_u32(target, 0xE000ED94, 0x00000000);"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"627e7c54_de92bb6a","line":544,"range":{"start_line":540,"start_character":1,"end_line":544,"end_character":2},"in_reply_to":"7e8e6283_0fa32f04","updated":"2026-06-23 12:48:10.000000000","message":"Understood. Removed this block.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":544,"context_line":"\t}"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":547,"context_line":"\tretval \u003d target_write_u32(target, 0xE000ED94, 0x00000000);"},{"line_number":548,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":549,"context_line":"\t\tgoto err_free_working_area;"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"\tam13_info-\u003earmv7m_info.common_magic \u003d ARMV7M_COMMON_MAGIC;"},{"line_number":552,"context_line":"\tam13_info-\u003earmv7m_info.core_mode \u003d ARM_MODE_THREAD;"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"a3750bda_3f7316eb","line":549,"range":{"start_line":547,"start_character":1,"end_line":549,"end_character":29},"updated":"2026-06-23 05:01:42.000000000","message":"Probably same as above, MPU is disabled after proper reset","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":false,"context_lines":[{"line_number":544,"context_line":"\t}"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"\t/* Disable MPU — previous app may restrict peripheral access */"},{"line_number":547,"context_line":"\tretval \u003d target_write_u32(target, 0xE000ED94, 0x00000000);"},{"line_number":548,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":549,"context_line":"\t\tgoto err_free_working_area;"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"\tam13_info-\u003earmv7m_info.common_magic \u003d ARMV7M_COMMON_MAGIC;"},{"line_number":552,"context_line":"\tam13_info-\u003earmv7m_info.core_mode \u003d ARM_MODE_THREAD;"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"ab6bdfee_f30cf580","line":549,"range":{"start_line":547,"start_character":1,"end_line":549,"end_character":29},"in_reply_to":"a3750bda_3f7316eb","updated":"2026-06-23 12:48:10.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":558,"context_line":"\t * mode with nPRIV\u003d1, CONTROL is left untouched and the algorithm"},{"line_number":559,"context_line":"\t * inherits unprivileged mode."},{"line_number":560,"context_line":"\t */"},{"line_number":561,"context_line":"\tstruct reg_param reg_params[1];"},{"line_number":562,"context_line":"\tinit_reg_param(\u0026reg_params[0], \"pmsk_bpri_fltmsk_ctrl\", 32, PARAM_OUT);"},{"line_number":563,"context_line":"\tbuf_set_u32(reg_params[0].value, 0, 32, 0x00000000);"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"\tLOG_DEBUG(\"AM13: starting flash algorithm\");"},{"line_number":566,"context_line":"\tretval \u003d target_start_algorithm(target, 0, NULL, 1, reg_params,"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"7ed7b016_7dbbe74c","line":563,"range":{"start_line":561,"start_character":1,"end_line":563,"end_character":53},"updated":"2026-06-23 05:01:42.000000000","message":"Probably also lack of proper reset before flash programming.  If not, should be fixed at the target level, not in the flash driver.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":false,"context_lines":[{"line_number":558,"context_line":"\t * mode with nPRIV\u003d1, CONTROL is left untouched and the algorithm"},{"line_number":559,"context_line":"\t * inherits unprivileged mode."},{"line_number":560,"context_line":"\t */"},{"line_number":561,"context_line":"\tstruct reg_param reg_params[1];"},{"line_number":562,"context_line":"\tinit_reg_param(\u0026reg_params[0], \"pmsk_bpri_fltmsk_ctrl\", 32, PARAM_OUT);"},{"line_number":563,"context_line":"\tbuf_set_u32(reg_params[0].value, 0, 32, 0x00000000);"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"\tLOG_DEBUG(\"AM13: starting flash algorithm\");"},{"line_number":566,"context_line":"\tretval \u003d target_start_algorithm(target, 0, NULL, 1, reg_params,"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"6433403b_792166b7","line":563,"range":{"start_line":561,"start_character":1,"end_line":563,"end_character":53},"in_reply_to":"7ed7b016_7dbbe74c","updated":"2026-06-23 12:48:10.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":651,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":652,"context_line":"\t}"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"\tif (!am13_info-\u003edid)"},{"line_number":655,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"\tretval \u003d am13_algo_init(bank);"},{"line_number":658,"context_line":"\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"24d6704a_790d9a70","line":655,"range":{"start_line":654,"start_character":1,"end_line":655,"end_character":37},"updated":"2026-06-23 05:01:42.000000000","message":"Useless, ensured by the flash infrastructure","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":false,"context_lines":[{"line_number":651,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":652,"context_line":"\t}"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"\tif (!am13_info-\u003edid)"},{"line_number":655,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"\tretval \u003d am13_algo_init(bank);"},{"line_number":658,"context_line":"\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"3825dd0d_954aea07","line":655,"range":{"start_line":654,"start_character":1,"end_line":655,"end_character":37},"in_reply_to":"24d6704a_790d9a70","updated":"2026-06-23 12:48:10.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":675,"context_line":"\tbuf_set_u32(algo_params[1].cmd, 0, 32, AM13_CMD_ERASE_AND_PROGRAM);"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"\twhile (count \u003e 0) {"},{"line_number":678,"context_line":"\t\tuint32_t size \u003d MIN(count, AM13_SECTOR_SIZE_BYTES);"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"\t\tretval \u003d target_write_buffer(target, buffer_addr[index], size, buffer);"},{"line_number":681,"context_line":"\t\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"dde22de0_da46ca02","line":678,"range":{"start_line":678,"start_character":11,"end_line":678,"end_character":53},"updated":"2026-06-23 05:01:42.000000000","message":"Do not assume `offset` is aligned to AM13 flash sector boundary!","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"65c856604248eaa317ef577230b2df39738efb32","unresolved":false,"context_lines":[{"line_number":675,"context_line":"\tbuf_set_u32(algo_params[1].cmd, 0, 32, AM13_CMD_ERASE_AND_PROGRAM);"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"\twhile (count \u003e 0) {"},{"line_number":678,"context_line":"\t\tuint32_t size \u003d MIN(count, AM13_SECTOR_SIZE_BYTES);"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"\t\tretval \u003d target_write_buffer(target, buffer_addr[index], size, buffer);"},{"line_number":681,"context_line":"\t\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"90b1a625_59f36ccf","line":678,"range":{"start_line":678,"start_character":11,"end_line":678,"end_character":53},"in_reply_to":"3b196ae2_d3cc5998","updated":"2026-07-04 08:12:11.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":true,"context_lines":[{"line_number":675,"context_line":"\tbuf_set_u32(algo_params[1].cmd, 0, 32, AM13_CMD_ERASE_AND_PROGRAM);"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"\twhile (count \u003e 0) {"},{"line_number":678,"context_line":"\t\tuint32_t size \u003d MIN(count, AM13_SECTOR_SIZE_BYTES);"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"\t\tretval \u003d target_write_buffer(target, buffer_addr[index], size, buffer);"},{"line_number":681,"context_line":"\t\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"3b196ae2_d3cc5998","line":678,"range":{"start_line":678,"start_character":11,"end_line":678,"end_character":53},"in_reply_to":"dde22de0_da46ca02","updated":"2026-06-23 12:48:10.000000000","message":"Updated to cap the first chunk to bytes remaining in current sector, so subsequent iterations will be aligned.","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"5f359304a121c9147499e1f8ef9b2216959b6fe7","unresolved":true,"context_lines":[{"line_number":819,"context_line":"{"},{"line_number":820,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"\tif (!am13_info-\u003edid)"},{"line_number":823,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"\tcommand_print_sameline(cmd, \"AM13E23X: DID\u003d0x%08\" PRIx32"},{"line_number":826,"context_line":"\t\t\t\t\t\t   \" TRACEID\u003d0x%08\" PRIx32"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"d8537de3_ebc02e98","line":823,"range":{"start_line":822,"start_character":1,"end_line":823,"end_character":37},"updated":"2026-06-23 05:01:42.000000000","message":"Useless, ensured by the flash infrastructure","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"166c6f27a4209234aa188779d8e75b9b30ec20c3","unresolved":false,"context_lines":[{"line_number":819,"context_line":"{"},{"line_number":820,"context_line":"\tstruct am13_flash_bank *am13_info \u003d bank-\u003edriver_priv;"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"\tif (!am13_info-\u003edid)"},{"line_number":823,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"\tcommand_print_sameline(cmd, \"AM13E23X: DID\u003d0x%08\" PRIx32"},{"line_number":826,"context_line":"\t\t\t\t\t\t   \" TRACEID\u003d0x%08\" PRIx32"}],"source_content_type":"text/x-csrc","patch_set":13,"id":"ecb18865_55c469d9","line":823,"range":{"start_line":822,"start_character":1,"end_line":823,"end_character":37},"in_reply_to":"d8537de3_ebc02e98","updated":"2026-06-23 12:48:10.000000000","message":"Done","commit_id":"21408da109276291a16308f2345d4c4b5e407e21"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c85c33b441560156d15be0e4c06229b6c02ee465","unresolved":true,"context_lines":[{"line_number":602,"context_line":"\tuint32_t index \u003d 0;"},{"line_number":603,"context_line":"\tint64_t start_ms \u003d timeval_ms();"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"\tbuf_set_u32(algo_params[0].cmd, 0, 32, AM13_CMD_ERASE_AND_PROGRAM);"},{"line_number":606,"context_line":"\tbuf_set_u32(algo_params[1].cmd, 0, 32, AM13_CMD_ERASE_AND_PROGRAM);"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"\twhile (count \u003e 0) {"}],"source_content_type":"text/x-csrc","patch_set":14,"id":"090e347b_56b3a281","line":605,"range":{"start_line":605,"start_character":40,"end_line":605,"end_character":66},"updated":"2026-07-04 08:34:40.000000000","message":"Sorry, not noticed at the first look:\n`am13_write()` should just write (or program if you want), not erase.\nOtherwise it breaks splitting flash commands to erase / write. Also may cause double erase if flashed usual OpenOCD way.","commit_id":"ff4c76725e02c681dd0716b9f19c935fd2729238"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"ae23873d9e9fba7a85ca527ccbe42099c1de63f6","unresolved":true,"context_lines":[{"line_number":602,"context_line":"\tuint32_t index \u003d 0;"},{"line_number":603,"context_line":"\tint64_t start_ms \u003d timeval_ms();"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"\tbuf_set_u32(algo_params[0].cmd, 0, 32, AM13_CMD_ERASE_AND_PROGRAM);"},{"line_number":606,"context_line":"\tbuf_set_u32(algo_params[1].cmd, 0, 32, AM13_CMD_ERASE_AND_PROGRAM);"},{"line_number":607,"context_line":""},{"line_number":608,"context_line":"\twhile (count \u003e 0) {"}],"source_content_type":"text/x-csrc","patch_set":14,"id":"7a998480_69b8737a","line":605,"range":{"start_line":605,"start_character":40,"end_line":605,"end_character":66},"in_reply_to":"090e347b_56b3a281","updated":"2026-07-20 09:59:03.000000000","message":"Updated to use `AM13_CMD_PROGRAM`.","commit_id":"ff4c76725e02c681dd0716b9f19c935fd2729238"}]}
