)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","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":"contrib: loaders: add am13e230x flash loader algorithm"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Created a flash loader for AM13E230X that receives flash sectors via"},{"line_number":10,"context_line":"shared memory ping-pong buffers, similar to the CC26xx flash loader."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7ddf3702_e580b1cb","line":7,"updated":"2026-06-08 14:17:58.000000000","message":"contrib/loaders/flash/am13e230x: add flash loader algorithm","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"1dd1ffeaeade64f0cc7ce7d7d9da614dd25e9d17","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":"contrib: loaders: add am13e230x flash loader algorithm"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Created a flash loader for AM13E230X that receives flash sectors via"},{"line_number":10,"context_line":"shared memory ping-pong buffers, similar to the CC26xx flash loader."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9e92a9fd_7f348682","line":7,"in_reply_to":"7ddf3702_e580b1cb","updated":"2026-06-10 06:30:10.000000000","message":"Done","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"contrib: loaders: add am13e230x flash loader algorithm"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Created a flash loader for AM13E230X that receives flash sectors via"},{"line_number":10,"context_line":"shared memory ping-pong buffers, similar to the CC26xx flash loader."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Signed-off-by: Sameer Srivastava \u003cs-srivastava4@ti.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ac4f1d04_8d6dbd52","line":9,"updated":"2026-06-08 14:17:58.000000000","message":"s/Created/Add","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"1dd1ffeaeade64f0cc7ce7d7d9da614dd25e9d17","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"contrib: loaders: add am13e230x flash loader algorithm"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Created a flash loader for AM13E230X that receives flash sectors via"},{"line_number":10,"context_line":"shared memory ping-pong buffers, similar to the CC26xx flash loader."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Signed-off-by: Sameer Srivastava \u003cs-srivastava4@ti.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"a1f17a97_76957f18","line":9,"in_reply_to":"ac4f1d04_8d6dbd52","updated":"2026-06-10 06:30:10.000000000","message":"Done","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","unresolved":true,"context_lines":[{"line_number":10,"context_line":"shared memory ping-pong buffers, similar to the CC26xx flash loader."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Signed-off-by: Sameer Srivastava \u003cs-srivastava4@ti.com\u003e"},{"line_number":13,"context_line":"Change-Id: If5759b6f513cf94a0208d1bf4e95eb012a297d17"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a9580b7_0a0df4ef","line":13,"updated":"2026-06-08 14:17:58.000000000","message":"move the Change-Id: before the Signed-off-by for all patches.","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"1dd1ffeaeade64f0cc7ce7d7d9da614dd25e9d17","unresolved":false,"context_lines":[{"line_number":10,"context_line":"shared memory ping-pong buffers, similar to the CC26xx flash loader."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Signed-off-by: Sameer Srivastava \u003cs-srivastava4@ti.com\u003e"},{"line_number":13,"context_line":"Change-Id: If5759b6f513cf94a0208d1bf4e95eb012a297d17"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ace7b563_ee052ec7","line":13,"in_reply_to":"9a9580b7_0a0df4ef","updated":"2026-06-10 06:30:10.000000000","message":"Done","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"992fa220daea0431535b38c8b08dee08fbaf1d98","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c271f620_21013763","updated":"2026-06-16 16:15:34.000000000","message":"minor.. please check other flash.h definitions","commit_id":"39f5e641f04be9dc68cce2e0afd24ba8f7cbcf9c"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"3aabc0d61bd3333e46b91a5970c995545989a431","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b8755939_3eb00644","updated":"2026-06-17 14:40:17.000000000","message":"Antonio, Paul - I think the code is in good shape now. Lets know if something catches your eye.","commit_id":"33f67db3565128f5119b35bf7815eb92f6eaae10"}],"contrib/loaders/flash/am13e230x/flash.c":[{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"8881447903f386e7d81d629747e0be2c13162dba","unresolved":true,"context_lines":[{"line_number":117,"context_line":"static void flash_unprotect(void)"},{"line_number":118,"context_line":"{"},{"line_number":119,"context_line":"\tHWREG(FCTL_REG_CMDWEPROTA) \u003d 0;"},{"line_number":120,"context_line":"\tHWREG(FCTL_REG_CMDWEPROTB) \u003d 0;"},{"line_number":121,"context_line":"}"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"int flash_sector_erase(uint32_t addr)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1d654852_69b21355","line":120,"updated":"2026-05-13 12:41:05.000000000","message":"The driver (`src/flash/nor/am13e230x.c`) defines a third register\n`FCTL_REG_CMDWEPROTNM` for the NONMAIN flash region. When the\nOpenOCD driver invokes the algorithm to write to the NONMAIN bank\n(at `0x60100000`), `flash_unprotect()` never clears\n`CMDWEPROTNM`, so the write-protection is not released and every\nflash write to NONMAIN will silently fail inside the algorithm. - is that intentional?","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"36eb30baa36ff9493cceb256ec32e137f4b1d7e7","unresolved":true,"context_lines":[{"line_number":117,"context_line":"static void flash_unprotect(void)"},{"line_number":118,"context_line":"{"},{"line_number":119,"context_line":"\tHWREG(FCTL_REG_CMDWEPROTA) \u003d 0;"},{"line_number":120,"context_line":"\tHWREG(FCTL_REG_CMDWEPROTB) \u003d 0;"},{"line_number":121,"context_line":"}"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"int flash_sector_erase(uint32_t addr)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"61d1dd02_39530159","line":120,"in_reply_to":"1d654852_69b21355","updated":"2026-06-08 12:23:13.000000000","message":"That is a bug. Fixed by always clearing `CMDWEPROTNM` in `flash_unprotect()` alongside `WEPROTA/WEPROTB` and added the missing register definition to flash.h.","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","unresolved":false,"context_lines":[{"line_number":117,"context_line":"static void flash_unprotect(void)"},{"line_number":118,"context_line":"{"},{"line_number":119,"context_line":"\tHWREG(FCTL_REG_CMDWEPROTA) \u003d 0;"},{"line_number":120,"context_line":"\tHWREG(FCTL_REG_CMDWEPROTB) \u003d 0;"},{"line_number":121,"context_line":"}"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"int flash_sector_erase(uint32_t addr)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"62bbe830_452da108","line":120,"in_reply_to":"61d1dd02_39530159","updated":"2026-06-08 14:17:58.000000000","message":"Ack","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"8881447903f386e7d81d629747e0be2c13162dba","unresolved":true,"context_lines":[{"line_number":128,"context_line":"\tflash_unprotect();"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"\tHWREG(FCTL_REG_CMDTYPE) \u003d FCTL_CMDTYPE_ERASE | FCTL_CMDTYPE_SIZE_SECTOR;"},{"line_number":131,"context_line":"\tHWREG(FCTL_REG_CMDADDR) \u003d addr \u0026 0xFFFFFFF0;"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\treturn flash_execute_cmd();"},{"line_number":134,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"719efb3d_70f49d8e","line":131,"updated":"2026-05-13 12:41:05.000000000","message":"Please document the address masking -\u003e nor driver does: retval \u003d target_write_u32(target, FCTL_REG_CMDADDR, addr);\n\nDoes the hardware ignore the lower bits for a sector-erase command, both are\nequivalent. If it requires an exact sector-aligned address, only one\nof them is correct (driver should reject unaligned address). Could you align these two paths to use the same address computation?","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"\tflash_unprotect();"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"\tHWREG(FCTL_REG_CMDTYPE) \u003d FCTL_CMDTYPE_ERASE | FCTL_CMDTYPE_SIZE_SECTOR;"},{"line_number":131,"context_line":"\tHWREG(FCTL_REG_CMDADDR) \u003d addr \u0026 0xFFFFFFF0;"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\treturn flash_execute_cmd();"},{"line_number":134,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"48569c79_0d92d70b","line":131,"in_reply_to":"44fe4d65_5c3a41fa","updated":"2026-06-08 14:17:58.000000000","message":"Ack","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"36eb30baa36ff9493cceb256ec32e137f4b1d7e7","unresolved":true,"context_lines":[{"line_number":128,"context_line":"\tflash_unprotect();"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"\tHWREG(FCTL_REG_CMDTYPE) \u003d FCTL_CMDTYPE_ERASE | FCTL_CMDTYPE_SIZE_SECTOR;"},{"line_number":131,"context_line":"\tHWREG(FCTL_REG_CMDADDR) \u003d addr \u0026 0xFFFFFFF0;"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\treturn flash_execute_cmd();"},{"line_number":134,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"44fe4d65_5c3a41fa","line":131,"in_reply_to":"719efb3d_70f49d8e","updated":"2026-06-08 12:23:13.000000000","message":"Added `\u0026 0xFFFFFFF0` to the sector-erase CMDADDR write in the driver to match the masking in the loader.","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"8881447903f386e7d81d629747e0be2c13162dba","unresolved":true,"context_lines":[{"line_number":153,"context_line":"\t\tuint32_t bytes_en \u003d (1u \u003c\u003c num_send) - 1;"},{"line_number":154,"context_line":"\t\tbytes_en |\u003d (1u \u003c\u003c 16);           /* ECC chunk 0 */"},{"line_number":155,"context_line":"\t\tif (num_send \u003e 8)"},{"line_number":156,"context_line":"\t\t\tbytes_en |\u003d (1u \u003c\u003c 17);   /* ECC chunk 1 */"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\t\t/* SDK calls executeClearStatus + unprotect before every word write */"},{"line_number":159,"context_line":"\t\tflash_clear_status();"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"016dc116_c2294fb7","line":156,"updated":"2026-05-13 12:41:05.000000000","message":"The flash nor driver\u0027s direct-write fallback always sets all 18 bits:\n\n```c\nretval \u003d target_write_u32(target, FCTL_REG_CMDBYTEN,\n                          AM13_PROGRAM_128_BYTEN);  /* 0x0003FFFF */\n```\n\nTRM (page 496) states:\n\u003e b. If subword programming (programming of less than the full 128 or 144 bit flash word) is desired,\n\u003e configure the CMDBYTEN register to set the bytes within the addressed flash word which are to\n\u003e be programmed. Each bit in CMDBYTEN corresponds to a byte in the addressed flash word to be\n\u003e programmed, including the ECC byte. For example, programming of the ECC code can be masked by\n\u003e clearing bit 8 in CMDBYTEN while programming the data bytes of the flash word. Note that there is a\n\u003e maximum number of program operations allowed per word line before a sector erase \u003e must be applied\n\u003e (see the device specific data sheet for the maximum).\n\nDo both of these result in equivalent results at ECC?","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"36eb30baa36ff9493cceb256ec32e137f4b1d7e7","unresolved":true,"context_lines":[{"line_number":153,"context_line":"\t\tuint32_t bytes_en \u003d (1u \u003c\u003c num_send) - 1;"},{"line_number":154,"context_line":"\t\tbytes_en |\u003d (1u \u003c\u003c 16);           /* ECC chunk 0 */"},{"line_number":155,"context_line":"\t\tif (num_send \u003e 8)"},{"line_number":156,"context_line":"\t\t\tbytes_en |\u003d (1u \u003c\u003c 17);   /* ECC chunk 1 */"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\t\t/* SDK calls executeClearStatus + unprotect before every word write */"},{"line_number":159,"context_line":"\t\tflash_clear_status();"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"793b254d_721c9d8b","line":156,"in_reply_to":"016dc116_c2294fb7","updated":"2026-06-08 12:23:13.000000000","message":"Always setting all 18 bits is incorrect. ECC results wouldn\u0027t be equivalent for sub-8-byte writes as setting the bits for byte 8-15 computes ECC chunk 1 (bit 17) that serves no purpose.  \n\nUpdated `am13_write_direct` to mirror the loader\u0027s logic that enables only the relevant data bits and corresponding ECC chunk bit(s).","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","unresolved":false,"context_lines":[{"line_number":153,"context_line":"\t\tuint32_t bytes_en \u003d (1u \u003c\u003c num_send) - 1;"},{"line_number":154,"context_line":"\t\tbytes_en |\u003d (1u \u003c\u003c 16);           /* ECC chunk 0 */"},{"line_number":155,"context_line":"\t\tif (num_send \u003e 8)"},{"line_number":156,"context_line":"\t\t\tbytes_en |\u003d (1u \u003c\u003c 17);   /* ECC chunk 1 */"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\t\t/* SDK calls executeClearStatus + unprotect before every word write */"},{"line_number":159,"context_line":"\t\tflash_clear_status();"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"51497698_5f52acb2","line":156,"in_reply_to":"793b254d_721c9d8b","updated":"2026-06-08 14:17:58.000000000","message":"Ack","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"8881447903f386e7d81d629747e0be2c13162dba","unresolved":true,"context_lines":[{"line_number":156,"context_line":"\t\t\tbytes_en |\u003d (1u \u003c\u003c 17);   /* ECC chunk 1 */"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\t\t/* SDK calls executeClearStatus + unprotect before every word write */"},{"line_number":159,"context_line":"\t\tflash_clear_status();"},{"line_number":160,"context_line":"\t\tflash_unprotect();"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"\t\tHWREG(FCTL_REG_CMDTYPE) \u003d FCTL_CMDTYPE_PROGRAM | FCTL_CMDTYPE_SIZE_ONEWORD;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"457a786b_cf6d7342","line":159,"updated":"2026-05-13 12:41:05.000000000","message":"A `flash_clear_status()` failure (timeout) is silently swallowed. The\nsubsequent `flash_execute_cmd()` would then execute against a controller\nthat may still have status bits set from a prior command, making the\nerror condition harder to diagnose. Should this return an error?","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","unresolved":false,"context_lines":[{"line_number":156,"context_line":"\t\t\tbytes_en |\u003d (1u \u003c\u003c 17);   /* ECC chunk 1 */"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\t\t/* SDK calls executeClearStatus + unprotect before every word write */"},{"line_number":159,"context_line":"\t\tflash_clear_status();"},{"line_number":160,"context_line":"\t\tflash_unprotect();"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"\t\tHWREG(FCTL_REG_CMDTYPE) \u003d FCTL_CMDTYPE_PROGRAM | FCTL_CMDTYPE_SIZE_ONEWORD;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a575c09b_e7d1250f","line":159,"in_reply_to":"2f7cda36_88a530b3","updated":"2026-06-08 14:17:58.000000000","message":"Ack","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"36eb30baa36ff9493cceb256ec32e137f4b1d7e7","unresolved":true,"context_lines":[{"line_number":156,"context_line":"\t\t\tbytes_en |\u003d (1u \u003c\u003c 17);   /* ECC chunk 1 */"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\t\t/* SDK calls executeClearStatus + unprotect before every word write */"},{"line_number":159,"context_line":"\t\tflash_clear_status();"},{"line_number":160,"context_line":"\t\tflash_unprotect();"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"\t\tHWREG(FCTL_REG_CMDTYPE) \u003d FCTL_CMDTYPE_PROGRAM | FCTL_CMDTYPE_SIZE_ONEWORD;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"2f7cda36_88a530b3","line":159,"in_reply_to":"457a786b_cf6d7342","updated":"2026-06-08 12:23:13.000000000","message":"Fixed. A timeout will now return `-1` immediately.","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"8d8c0c756f1011a6a23f5f4de8d0c94fe40c42a7","unresolved":true,"context_lines":[{"line_number":77,"context_line":"\t\t\t FCTL_STATCMD_CMDINPROGRESS);"},{"line_number":78,"context_line":"\t\tif (--timeout \u003d\u003d 0)"},{"line_number":79,"context_line":"\t\t\treturn -1;"},{"line_number":80,"context_line":"\t} while (status \u003d\u003d FCTL_STATCMD_CMDINPROGRESS);"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"\tif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0)"},{"line_number":83,"context_line":"\t\treturn -2;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"912f3c8e_124bb4ad","line":80,"updated":"2026-06-11 06:10:05.000000000","message":"The polling loop in `flash_execute_cmd()` exits on any value that is not\nexactly `FCTL_STATCMD_CMDINPROGRESS (0x4)`.\n\nIf the CPU reads `STATCMD` before the flash controller has asserted\n`CMDINPROGRESS`, `status` will be `0`. The loop exits, `CMDPASS` is\nnot set in `0`, and the function returns `-2` (false failure).\n\nUpdated to `CMDDONE`-based polling: stays in the loop when status \u003d 0 because CMDDONE is not set yet. Only exits when CMDDONE goes high, regardless of what was seen before.","commit_id":"89eac11e1b00bddb33b392c895125df05dde4d11"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"73404cce3f96dfddffb4fcff68ca9f205f30b4fb","unresolved":false,"context_lines":[{"line_number":77,"context_line":"\t\t\t FCTL_STATCMD_CMDINPROGRESS);"},{"line_number":78,"context_line":"\t\tif (--timeout \u003d\u003d 0)"},{"line_number":79,"context_line":"\t\t\treturn -1;"},{"line_number":80,"context_line":"\t} while (status \u003d\u003d FCTL_STATCMD_CMDINPROGRESS);"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"\tif ((status \u0026 FCTL_STATCMD_CMDPASS) \u003d\u003d 0)"},{"line_number":83,"context_line":"\t\treturn -2;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"5c83004d_f0595876","line":80,"in_reply_to":"912f3c8e_124bb4ad","updated":"2026-06-11 06:10:31.000000000","message":"Done","commit_id":"89eac11e1b00bddb33b392c895125df05dde4d11"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"6b9619c46a9cf4c507feacc5d65fabd062acb720","unresolved":true,"context_lines":[{"line_number":145,"context_line":"int flash_write_sector(const uint8_t *data, uint32_t addr, uint32_t count)"},{"line_number":146,"context_line":"{"},{"line_number":147,"context_line":"\twhile (count \u003e 0) {"},{"line_number":148,"context_line":"\t\tuint32_t num_bytes \u003d (count \u003c FLASH_WORD_SIZE) ? count : FLASH_WORD_SIZE;"},{"line_number":149,"context_line":"\t\tuint32_t num_send \u003d num_bytes;"},{"line_number":150,"context_line":"\t\tuint8_t padded[16];"},{"line_number":151,"context_line":"\t\tconst uint8_t *write_buf \u003d data;"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"\t\t/* Pad partial writes to 8-byte ECC boundary */"},{"line_number":154,"context_line":"\t\tif (num_bytes \u0026 0x7) {"},{"line_number":155,"context_line":"\t\t\tnum_send \u003d (num_bytes + 7) \u0026 ~0x7;"},{"line_number":156,"context_line":"\t\t\tlocal_memset(padded, 0xFF, sizeof(padded));"},{"line_number":157,"context_line":"\t\t\tlocal_memcpy(padded, data, num_bytes);"},{"line_number":158,"context_line":"\t\t\twrite_buf \u003d padded;"},{"line_number":159,"context_line":"\t\t}"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"\t\t/* Byte enable: one bit per data byte + ECC chunk bits */"},{"line_number":162,"context_line":"\t\tuint32_t bytes_en \u003d (1u \u003c\u003c num_send) - 1;"},{"line_number":163,"context_line":"\t\tbytes_en |\u003d (1u \u003c\u003c 16);           /* ECC chunk 0 */"},{"line_number":164,"context_line":"\t\tif (num_send \u003e 8)"},{"line_number":165,"context_line":"\t\t\tbytes_en |\u003d (1u \u003c\u003c 17);   /* ECC chunk 1 */"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"\t\t/* SDK calls executeClearStatus + unprotect before every word write */"},{"line_number":168,"context_line":"\t\tif (flash_clear_status() !\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"d7baa7eb_9631eecc","line":165,"range":{"start_line":148,"start_character":1,"end_line":165,"end_character":46},"updated":"2026-07-04 08:35:32.000000000","message":"Similarly as in src/flash/nor/am13e230x.c:\nAlignment/padding is already handled, remove it from here.","commit_id":"33f67db3565128f5119b35bf7815eb92f6eaae10"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"7c61b7accfc09cdd35d0e0abb206987ccf364a83","unresolved":true,"context_lines":[{"line_number":145,"context_line":"int flash_write_sector(const uint8_t *data, uint32_t addr, uint32_t count)"},{"line_number":146,"context_line":"{"},{"line_number":147,"context_line":"\twhile (count \u003e 0) {"},{"line_number":148,"context_line":"\t\tuint32_t num_bytes \u003d (count \u003c FLASH_WORD_SIZE) ? count : FLASH_WORD_SIZE;"},{"line_number":149,"context_line":"\t\tuint32_t num_send \u003d num_bytes;"},{"line_number":150,"context_line":"\t\tuint8_t padded[16];"},{"line_number":151,"context_line":"\t\tconst uint8_t *write_buf \u003d data;"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"\t\t/* Pad partial writes to 8-byte ECC boundary */"},{"line_number":154,"context_line":"\t\tif (num_bytes \u0026 0x7) {"},{"line_number":155,"context_line":"\t\t\tnum_send \u003d (num_bytes + 7) \u0026 ~0x7;"},{"line_number":156,"context_line":"\t\t\tlocal_memset(padded, 0xFF, sizeof(padded));"},{"line_number":157,"context_line":"\t\t\tlocal_memcpy(padded, data, num_bytes);"},{"line_number":158,"context_line":"\t\t\twrite_buf \u003d padded;"},{"line_number":159,"context_line":"\t\t}"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"\t\t/* Byte enable: one bit per data byte + ECC chunk bits */"},{"line_number":162,"context_line":"\t\tuint32_t bytes_en \u003d (1u \u003c\u003c num_send) - 1;"},{"line_number":163,"context_line":"\t\tbytes_en |\u003d (1u \u003c\u003c 16);           /* ECC chunk 0 */"},{"line_number":164,"context_line":"\t\tif (num_send \u003e 8)"},{"line_number":165,"context_line":"\t\t\tbytes_en |\u003d (1u \u003c\u003c 17);   /* ECC chunk 1 */"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"\t\t/* SDK calls executeClearStatus + unprotect before every word write */"},{"line_number":168,"context_line":"\t\tif (flash_clear_status() !\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"eacb426e_22cd9a2e","line":165,"range":{"start_line":148,"start_character":1,"end_line":165,"end_character":46},"in_reply_to":"d7baa7eb_9631eecc","updated":"2026-07-20 09:58:55.000000000","message":"Removed padding logic and updated loader binary.","commit_id":"33f67db3565128f5119b35bf7815eb92f6eaae10"}],"contrib/loaders/flash/am13e230x/flash.h":[{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"/* Flash region bases */"},{"line_number":67,"context_line":"#define FLASH_BASE_MAIN             0x00000000"},{"line_number":68,"context_line":"#define FLASH_BASE_DATA             0x60118000"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"/* Timeout loop count */"},{"line_number":71,"context_line":"#define FLASH_TIMEOUT               0x00800000"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"76859031_d505885e","line":68,"updated":"2026-06-08 14:17:58.000000000","message":"none of the loader functions reference FLASH_BASE_DATA — all addresses come from the dest field of the params struct populated by the OpenOCD driver. The driver uses AM13_FLASH_BASE_NONMAIN \u003d 0x60100000 for the non-main region. The two addresses differ (0x60100000 vs 0x60118000). If this constant is unused and its meaning is unclear, removing it would reduce confusion.","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"1dd1ffeaeade64f0cc7ce7d7d9da614dd25e9d17","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"/* Flash region bases */"},{"line_number":67,"context_line":"#define FLASH_BASE_MAIN             0x00000000"},{"line_number":68,"context_line":"#define FLASH_BASE_DATA             0x60118000"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"/* Timeout loop count */"},{"line_number":71,"context_line":"#define FLASH_TIMEOUT               0x00800000"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"f70c6618_9f929138","line":68,"in_reply_to":"76859031_d505885e","updated":"2026-06-10 06:30:10.000000000","message":"removed `FLASH_BASE_DATA`","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"e1a6220253e87947f554c6b1f13c256f9c769370","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"/* Flash region bases */"},{"line_number":67,"context_line":"#define FLASH_BASE_MAIN             0x00000000"},{"line_number":68,"context_line":"#define FLASH_BASE_DATA             0x60118000"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"/* Timeout loop count */"},{"line_number":71,"context_line":"#define FLASH_TIMEOUT               0x00800000"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"56503285_6bfcde46","line":68,"in_reply_to":"f70c6618_9f929138","updated":"2026-06-10 15:03:57.000000000","message":"Ack","commit_id":"4edf517905b178595ead336b36d0ec0efc5111f9"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"992fa220daea0431535b38c8b08dee08fbaf1d98","unresolved":true,"context_lines":[{"line_number":10,"context_line":" *****************************************************************************/"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"#ifndef AM13E230X_FLASH_H"},{"line_number":13,"context_line":"#define AM13E230X_FLASH_H"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"#include \u003cstdint.h\u003e"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"86caa767_cf259033","line":13,"updated":"2026-06-16 16:15:34.000000000","message":"OPENOCD_LOADERS_FLASH_AM13E230X_FLASH_H I think this is the convention.","commit_id":"39f5e641f04be9dc68cce2e0afd24ba8f7cbcf9c"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"21f369c703ae172fd0e2af09be5677b3891167b1","unresolved":false,"context_lines":[{"line_number":10,"context_line":" *****************************************************************************/"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"#ifndef AM13E230X_FLASH_H"},{"line_number":13,"context_line":"#define AM13E230X_FLASH_H"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"#include \u003cstdint.h\u003e"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":7,"id":"c2c6f8e6_5c43c094","line":13,"in_reply_to":"86caa767_cf259033","updated":"2026-06-17 05:37:48.000000000","message":"Done","commit_id":"39f5e641f04be9dc68cce2e0afd24ba8f7cbcf9c"}],"contrib/loaders/flash/am13e230x/main.c":[{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"8881447903f386e7d81d629747e0be2c13162dba","unresolved":true,"context_lines":[{"line_number":177,"context_line":"\t\t\tbreak;"},{"line_number":178,"context_line":"\t\tcase CMD_ERASE_SECTORS:"},{"line_number":179,"context_line":"\t\t\tstatus \u003d do_erase_sectors(\u0026g_params[curr_buf]);"},{"line_number":180,"context_line":"\t\t\tbreak;"},{"line_number":181,"context_line":"\t\tdefault:"},{"line_number":182,"context_line":"\t\t\tstatus \u003d STATUS_FAILED_UNKNOWN_CMD;"},{"line_number":183,"context_line":"\t\t\tbreak;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"896a358c_1e990110","line":180,"updated":"2026-05-13 12:41:05.000000000","message":"are we missing CMD_ERASE_ALL ?","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1001678,"name":"Nishanth Menon","email":"nm@ti.com","username":"nmenon"},"change_message_id":"ed3cff1c34e4bbae74965f0bdb08c24943d8277f","unresolved":false,"context_lines":[{"line_number":177,"context_line":"\t\t\tbreak;"},{"line_number":178,"context_line":"\t\tcase CMD_ERASE_SECTORS:"},{"line_number":179,"context_line":"\t\t\tstatus \u003d do_erase_sectors(\u0026g_params[curr_buf]);"},{"line_number":180,"context_line":"\t\t\tbreak;"},{"line_number":181,"context_line":"\t\tdefault:"},{"line_number":182,"context_line":"\t\t\tstatus \u003d STATUS_FAILED_UNKNOWN_CMD;"},{"line_number":183,"context_line":"\t\t\tbreak;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e2ab05ee_7add6f21","line":180,"in_reply_to":"1cd2ce6a_5064f4fe","updated":"2026-06-08 14:17:58.000000000","message":"Ack","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"},{"author":{"_account_id":1002511,"name":"Sameer Srivastava","email":"sam33r012@gmail.com","username":"s-m33r"},"change_message_id":"36eb30baa36ff9493cceb256ec32e137f4b1d7e7","unresolved":true,"context_lines":[{"line_number":177,"context_line":"\t\t\tbreak;"},{"line_number":178,"context_line":"\t\tcase CMD_ERASE_SECTORS:"},{"line_number":179,"context_line":"\t\t\tstatus \u003d do_erase_sectors(\u0026g_params[curr_buf]);"},{"line_number":180,"context_line":"\t\t\tbreak;"},{"line_number":181,"context_line":"\t\tdefault:"},{"line_number":182,"context_line":"\t\t\tstatus \u003d STATUS_FAILED_UNKNOWN_CMD;"},{"line_number":183,"context_line":"\t\t\tbreak;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1cd2ce6a_5064f4fe","line":180,"in_reply_to":"896a358c_1e990110","updated":"2026-06-08 12:23:13.000000000","message":"Erase is done directly using `am13_erase`. Removed definitions for this command on both sides.","commit_id":"607fdf8ba5006cd5b532da9c52abfbf9374a6f58"}]}
