)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"00a142b4882965e2ef53d5b0adf8a0346c275099","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3fc844ad_c04d03aa","updated":"2024-06-09 14:15:51.000000000","message":"Michale,\nI don\u0027t like the concept of function specific file handling.\nI would recommend to implement the signature area as another flash bank.\nThis would allow to write a file in any supported format (.bin or .hex, there is probably no point in writing from .elf)\nand use standard flash commands to erase, erase check, fill, verify etc...\nThe tricky part is addressing: the signature area reads at the address range overlapping the first page of program flash. OpenOCD does not have a specific support for a bank outside of address space. However we can (ab)use 64-bit address capability and locate the bank above 32-bit max address. We can use\n\u0027flash write_bank` for write without bothering with the base address.","commit_id":"f7c37a50e527fca3ab15b1a0158defcae3b2588a"},{"author":{"_account_id":1001529,"name":"Alan C. de Assis","email":"acassis@gmail.com","username":"acassis"},"change_message_id":"d42bdc5d2fba335de7ecf1153839fe521e5582e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"dfe33d9f_7c892389","updated":"2024-05-31 22:06:40.000000000","message":"Nice contribution Michal!","commit_id":"f7c37a50e527fca3ab15b1a0158defcae3b2588a"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"75c1d8de3910e57d07c7227653ea07616b056b6a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c3fd7169_ff9e9f84","in_reply_to":"3fc844ad_c04d03aa","updated":"2024-06-21 08:51:19.000000000","message":"Hi, sorry for the late reply, I had some other things to attend to.\nI have refactored the solution with new flash bank for user signature area. It required a little but more changes to the code including samv specific read operation and others. The advantage of your approach is that possible following implementation of user id (similar principle to user signature area in SAMv7) will be pretty straightforward.\n\nI wanted to push the new commit to this review (as a fixup, just to see the differences between two versions properly, that would be squashed before merge) with git push review, but something went wrong and it created a new merge request https://review.openocd.org/c/openocd/+/8374. Not quite sure how to add another commit here.","commit_id":"f7c37a50e527fca3ab15b1a0158defcae3b2588a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"98f0a3e5_c0d8f251","in_reply_to":"4b4a4972_674acdf9","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"f7c37a50e527fca3ab15b1a0158defcae3b2588a"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"6daffb1ccf04214f880dd292709efc7ff21b3fcc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4b4a4972_674acdf9","in_reply_to":"c3fd7169_ff9e9f84","updated":"2024-07-30 06:20:37.000000000","message":"Hi,\njust reminding myself. It has been here for more than a month now, do you consider the current reworked state ok for the merge?","commit_id":"f7c37a50e527fca3ab15b1a0158defcae3b2588a"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"859371b4b63a5ce16ca7e88db9d7d5eb010d675c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"105cf802_4707f73d","updated":"2024-06-23 12:07:17.000000000","message":"I have squashed the changes to one commit so they are present in one \"merge request\" as Paul suggested here https://review.openocd.org/c/openocd/+/8374. Sorry for the little mess, I have never worked with Gerrit before and I expected it would just another commit here.","commit_id":"476f601b2096f5b0cfde30ce178b0f53a661da0f"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"58ec20a06244de7f7d1472e646735fa638874e89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8dfb1adb_d3f04e5e","in_reply_to":"105cf802_4707f73d","updated":"2024-07-30 06:21:09.000000000","message":"Done","commit_id":"476f601b2096f5b0cfde30ce178b0f53a661da0f"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"2d97e00b1a5a596b45f6431400c8454e5823f3b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"26c284ea_524b1e42","updated":"2025-02-17 08:47:01.000000000","message":"Rebased to current master to solve merge conflict.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7f9b5670_ec25c11c","updated":"2025-02-18 05:25:06.000000000","message":"Sorry, Michale, for long delay.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"27338167a92204d85677577ea8af3aa4f5da83e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0d9e4ac9_c9ba0cda","in_reply_to":"7f9b5670_ec25c11c","updated":"2025-02-19 08:28:24.000000000","message":"Thanks for the feedback, I\u0027ll look at it next week probably.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"96819888d94d5d4e7913953914c2d2157d4a44bb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a80a8072_d4c15d0f","updated":"2025-07-21 12:51:59.000000000","message":"Hi, are there any further questions/changes required or can this be merged? It\u0027s more than a year now since the original patch was introduced. Thanks.","commit_id":"4359f20060523d89c8390abad3a19d9a33568454"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f3fdf89e_26cb478f","updated":"2025-07-23 06:54:39.000000000","message":"Looks good, give me week or so to test on hw. Thanks","commit_id":"4359f20060523d89c8390abad3a19d9a33568454"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"e65282f409e162402f7065302730df7bb1162b1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6781212d_f79a3636","updated":"2025-07-28 06:24:41.000000000","message":"Tested for program flash erase/write regression on ATSAME70V21. No problems spotted.","commit_id":"4359f20060523d89c8390abad3a19d9a33568454"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"c36b4fff22a5f76963995abfd21a4eeed5c0f801","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"7d1ae044_aa07c31b","in_reply_to":"a80a8072_d4c15d0f","updated":"2025-08-29 06:53:14.000000000","message":"Ack","commit_id":"4359f20060523d89c8390abad3a19d9a33568454"}],"doc/openocd.texi":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"da3c29376cdc8dd5ca31135ab48e0f3738e56d06","unresolved":true,"context_lines":[{"line_number":6793,"context_line":"@cindex atsamv"},{"line_number":6794,"context_line":"All members of the ATSAMV7x, ATSAMS70, and ATSAME70 families from"},{"line_number":6795,"context_line":"Atmel include internal flash and use ARM\u0027s Cortex-M7 core."},{"line_number":6796,"context_line":"This driver uses the same command names/syntax as @xref{at91sam3}."},{"line_number":6797,"context_line":""},{"line_number":6798,"context_line":"@example"},{"line_number":6799,"context_line":"flash bank $_FLASHNAME atsamv 0x00400000 0 0 0 $_TARGETNAME"}],"source_content_type":"text/x-texinfo","patch_set":8,"id":"745c7524_55826094","line":6796,"updated":"2025-08-09 21:25:32.000000000","message":"Should we have some info here that the flash signature area is also supported by this driver?\nAn that it is at a fake address above 32bits address space?\nIt can be added through a separate patch, if you prefer.\n\nBy the way, could GDB be used to program this signature area? If so, can arm-none-eabi-gdb able to write at address above 32 bits?","commit_id":"4359f20060523d89c8390abad3a19d9a33568454"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"d884c1425058467eaff485173fe351f54bdeaf9c","unresolved":true,"context_lines":[{"line_number":6793,"context_line":"@cindex atsamv"},{"line_number":6794,"context_line":"All members of the ATSAMV7x, ATSAMS70, and ATSAME70 families from"},{"line_number":6795,"context_line":"Atmel include internal flash and use ARM\u0027s Cortex-M7 core."},{"line_number":6796,"context_line":"This driver uses the same command names/syntax as @xref{at91sam3}."},{"line_number":6797,"context_line":""},{"line_number":6798,"context_line":"@example"},{"line_number":6799,"context_line":"flash bank $_FLASHNAME atsamv 0x00400000 0 0 0 $_TARGETNAME"}],"source_content_type":"text/x-texinfo","patch_set":8,"id":"a3d926c8_da317fc6","line":6796,"in_reply_to":"745c7524_55826094","updated":"2025-08-25 13:45:15.000000000","message":"Patch with additional documentation is here https://review.openocd.org/c/openocd/+/9096\n\nNot sure about GDB though, don\u0027t have much experience with program load over it.","commit_id":"4359f20060523d89c8390abad3a19d9a33568454"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"af0742f5672a1f1a2862cf583362a4821722ff0c","unresolved":true,"context_lines":[{"line_number":6793,"context_line":"@cindex atsamv"},{"line_number":6794,"context_line":"All members of the ATSAMV7x, ATSAMS70, and ATSAME70 families from"},{"line_number":6795,"context_line":"Atmel include internal flash and use ARM\u0027s Cortex-M7 core."},{"line_number":6796,"context_line":"This driver uses the same command names/syntax as @xref{at91sam3}."},{"line_number":6797,"context_line":""},{"line_number":6798,"context_line":"@example"},{"line_number":6799,"context_line":"flash bank $_FLASHNAME atsamv 0x00400000 0 0 0 $_TARGETNAME"}],"source_content_type":"text/x-texinfo","patch_set":8,"id":"c863743a_1354c4bd","line":6796,"in_reply_to":"a3d926c8_da317fc6","updated":"2025-08-27 14:50:42.000000000","message":"As the signature area is **write-once** and used to store configuration, keys, trimming values I would not expect somebody needs to regularly update it during debugging. Might be better that it is not accessible from gdb.","commit_id":"4359f20060523d89c8390abad3a19d9a33568454"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b53273130509a2631e3bd9a3793c9f4230dc7936","unresolved":false,"context_lines":[{"line_number":6793,"context_line":"@cindex atsamv"},{"line_number":6794,"context_line":"All members of the ATSAMV7x, ATSAMS70, and ATSAME70 families from"},{"line_number":6795,"context_line":"Atmel include internal flash and use ARM\u0027s Cortex-M7 core."},{"line_number":6796,"context_line":"This driver uses the same command names/syntax as @xref{at91sam3}."},{"line_number":6797,"context_line":""},{"line_number":6798,"context_line":"@example"},{"line_number":6799,"context_line":"flash bank $_FLASHNAME atsamv 0x00400000 0 0 0 $_TARGETNAME"}],"source_content_type":"text/x-texinfo","patch_set":8,"id":"1be6d0ab_a551d7f0","line":6796,"in_reply_to":"c863743a_1354c4bd","updated":"2025-08-27 16:42:30.000000000","message":"ok, thanks for the explication","commit_id":"4359f20060523d89c8390abad3a19d9a33568454"}],"src/flash/nor/atsamv.c":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":26,"context_line":"#endif"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"#include \"imp.h\""},{"line_number":29,"context_line":"#include \u003chelper/configuration.h\u003e"},{"line_number":30,"context_line":"#include \u003chelper/time_support.h\u003e"},{"line_number":31,"context_line":"#include \u003chelper/bits.h\u003e"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"1b35f0cb_d52443a2","line":29,"updated":"2025-02-18 05:25:06.000000000","message":"Is the header used at all?","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":26,"context_line":"#endif"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"#include \"imp.h\""},{"line_number":29,"context_line":"#include \u003chelper/configuration.h\u003e"},{"line_number":30,"context_line":"#include \u003chelper/time_support.h\u003e"},{"line_number":31,"context_line":"#include \u003chelper/bits.h\u003e"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"b1170a86_45216fca","line":29,"in_reply_to":"1b35f0cb_d52443a2","updated":"2025-02-26 14:58:13.000000000","message":"No, removed.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"#endif"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"#include \"imp.h\""},{"line_number":29,"context_line":"#include \u003chelper/configuration.h\u003e"},{"line_number":30,"context_line":"#include \u003chelper/time_support.h\u003e"},{"line_number":31,"context_line":"#include \u003chelper/bits.h\u003e"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"a00c7ac7_a8b59eaf","line":29,"in_reply_to":"b1170a86_45216fca","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":47,"context_line":"#define SAMV_EFC_FCMD_GFB    (0xD)\t/* (EFC) Get Fuse Bit */"},{"line_number":48,"context_line":"#define SAMV_EFC_FCMD_WUS    (0x12)\t/* (EFC) Write User Signature */"},{"line_number":49,"context_line":"#define SAMV_EFC_FCMD_EUS    (0x13)\t/* (EFC) Erase User Signature */"},{"line_number":50,"context_line":"#define SAMV_EFC_FCMD_STU    (0x14)\t/* (EFC) Start Read User Signature */"},{"line_number":51,"context_line":"#define SAMV_EFC_FCMD_SPUS   (0x15)\t/* (EFC) Stop Read User Signature */"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"#define SAMV_EFC_FMR_SCOD BIT(16) /* Sequantial Code Optimalization Disable */"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"b8ded7b7_3ac77c34","line":50,"range":{"start_line":50,"start_character":22,"end_line":50,"end_character":25},"updated":"2025-02-18 05:25:06.000000000","message":"STUS","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"#define SAMV_EFC_FCMD_GFB    (0xD)\t/* (EFC) Get Fuse Bit */"},{"line_number":48,"context_line":"#define SAMV_EFC_FCMD_WUS    (0x12)\t/* (EFC) Write User Signature */"},{"line_number":49,"context_line":"#define SAMV_EFC_FCMD_EUS    (0x13)\t/* (EFC) Erase User Signature */"},{"line_number":50,"context_line":"#define SAMV_EFC_FCMD_STU    (0x14)\t/* (EFC) Start Read User Signature */"},{"line_number":51,"context_line":"#define SAMV_EFC_FCMD_SPUS   (0x15)\t/* (EFC) Stop Read User Signature */"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"#define SAMV_EFC_FMR_SCOD BIT(16) /* Sequantial Code Optimalization Disable */"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"5a56f023_1bc62d98","line":50,"range":{"start_line":50,"start_character":22,"end_line":50,"end_character":25},"in_reply_to":"8f8939d7_512aa2e3","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":47,"context_line":"#define SAMV_EFC_FCMD_GFB    (0xD)\t/* (EFC) Get Fuse Bit */"},{"line_number":48,"context_line":"#define SAMV_EFC_FCMD_WUS    (0x12)\t/* (EFC) Write User Signature */"},{"line_number":49,"context_line":"#define SAMV_EFC_FCMD_EUS    (0x13)\t/* (EFC) Erase User Signature */"},{"line_number":50,"context_line":"#define SAMV_EFC_FCMD_STU    (0x14)\t/* (EFC) Start Read User Signature */"},{"line_number":51,"context_line":"#define SAMV_EFC_FCMD_SPUS   (0x15)\t/* (EFC) Stop Read User Signature */"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"#define SAMV_EFC_FMR_SCOD BIT(16) /* Sequantial Code Optimalization Disable */"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"8f8939d7_512aa2e3","line":50,"range":{"start_line":50,"start_character":22,"end_line":50,"end_character":25},"in_reply_to":"b8ded7b7_3ac77c34","updated":"2025-02-26 14:58:13.000000000","message":"Changed.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":69,"context_line":" * a bank outside of address range, we use address above maximum 32-bit"},{"line_number":70,"context_line":" * address space."},{"line_number":71,"context_line":" */"},{"line_number":72,"context_line":"#define SAMV_FLASH_SIGNATURE_BASE (0x100000000)"},{"line_number":73,"context_line":"#define SAMV_FLASH_SIGNATURE_SIZE (SAMV_PAGE_SIZE)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"struct samv_flash_bank {"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"8581bcae_52d929b6","line":72,"range":{"start_line":72,"start_character":34,"end_line":72,"end_character":35},"updated":"2025-02-18 05:25:06.000000000","message":"Please don\u0027t add more useless parenthesis in new code.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":69,"context_line":" * a bank outside of address range, we use address above maximum 32-bit"},{"line_number":70,"context_line":" * address space."},{"line_number":71,"context_line":" */"},{"line_number":72,"context_line":"#define SAMV_FLASH_SIGNATURE_BASE (0x100000000)"},{"line_number":73,"context_line":"#define SAMV_FLASH_SIGNATURE_SIZE (SAMV_PAGE_SIZE)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"struct samv_flash_bank {"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ca3396c7_1de1cafc","line":72,"range":{"start_line":72,"start_character":34,"end_line":72,"end_character":35},"in_reply_to":"8581bcae_52d929b6","updated":"2025-02-26 14:58:13.000000000","message":"Ok, removed.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":69,"context_line":" * a bank outside of address range, we use address above maximum 32-bit"},{"line_number":70,"context_line":" * address space."},{"line_number":71,"context_line":" */"},{"line_number":72,"context_line":"#define SAMV_FLASH_SIGNATURE_BASE (0x100000000)"},{"line_number":73,"context_line":"#define SAMV_FLASH_SIGNATURE_SIZE (SAMV_PAGE_SIZE)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"struct samv_flash_bank {"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"585a16a4_c9a62af0","line":72,"range":{"start_line":72,"start_character":34,"end_line":72,"end_character":35},"in_reply_to":"ca3396c7_1de1cafc","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":92,"context_line":"\treturn r;"},{"line_number":93,"context_line":"}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"static int samv_efc_check_status(struct target *target, uint8_t desired)"},{"line_number":96,"context_line":"{"},{"line_number":97,"context_line":"\tuint32_t v;"},{"line_number":98,"context_line":"\tsamv_efc_get_status(target, \u0026v);"},{"line_number":99,"context_line":"\tif ((v \u0026 1) !\u003d desired)"},{"line_number":100,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"\treturn ERROR_OK;"},{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"static int samv_efc_wait_status(struct target *target, uint8_t desired,"},{"line_number":106,"context_line":"\t\tint64_t timeout, uint32_t *status)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"8631596f_8688517d","line":103,"range":{"start_line":95,"start_character":0,"end_line":103,"end_character":1},"updated":"2025-02-18 05:25:06.000000000","message":"Used just once. TBH I would prefer to drop this function and simply use `samv_efc_get_status()` and compare the result. And be more careful a don\u0027t ignore the error code from `samv_efc_get_status()`.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":92,"context_line":"\treturn r;"},{"line_number":93,"context_line":"}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"static int samv_efc_check_status(struct target *target, uint8_t desired)"},{"line_number":96,"context_line":"{"},{"line_number":97,"context_line":"\tuint32_t v;"},{"line_number":98,"context_line":"\tsamv_efc_get_status(target, \u0026v);"},{"line_number":99,"context_line":"\tif ((v \u0026 1) !\u003d desired)"},{"line_number":100,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"\treturn ERROR_OK;"},{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"static int samv_efc_wait_status(struct target *target, uint8_t desired,"},{"line_number":106,"context_line":"\t\tint64_t timeout, uint32_t *status)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"de4f958a_20c86db5","line":103,"range":{"start_line":95,"start_character":0,"end_line":103,"end_character":1},"in_reply_to":"8631596f_8688517d","updated":"2025-02-26 14:58:13.000000000","message":"Ok, samv_efc_check_status removed and return value checked.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"\treturn r;"},{"line_number":93,"context_line":"}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"static int samv_efc_check_status(struct target *target, uint8_t desired)"},{"line_number":96,"context_line":"{"},{"line_number":97,"context_line":"\tuint32_t v;"},{"line_number":98,"context_line":"\tsamv_efc_get_status(target, \u0026v);"},{"line_number":99,"context_line":"\tif ((v \u0026 1) !\u003d desired)"},{"line_number":100,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"\treturn ERROR_OK;"},{"line_number":103,"context_line":"}"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"static int samv_efc_wait_status(struct target *target, uint8_t desired,"},{"line_number":106,"context_line":"\t\tint64_t timeout, uint32_t *status)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"4c9ce14a_a4078b3a","line":103,"range":{"start_line":95,"start_character":0,"end_line":103,"end_character":1},"in_reply_to":"de4f958a_20c86db5","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":125,"context_line":"\t\tif (ms_now \u003e ms_end) {"},{"line_number":126,"context_line":"\t\t\t/* error */"},{"line_number":127,"context_line":"\t\t\tLOG_ERROR(\"Command timeout\");"},{"line_number":128,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":129,"context_line":"\t\t}"},{"line_number":130,"context_line":"\t} while ((v \u0026 1) !\u003d desired);"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ec54d8a4_0cd1f336","line":128,"range":{"start_line":128,"start_character":10,"end_line":128,"end_character":20},"updated":"2025-02-18 05:25:06.000000000","message":"ERROR_FLASH_BUSY","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":125,"context_line":"\t\tif (ms_now \u003e ms_end) {"},{"line_number":126,"context_line":"\t\t\t/* error */"},{"line_number":127,"context_line":"\t\t\tLOG_ERROR(\"Command timeout\");"},{"line_number":128,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":129,"context_line":"\t\t}"},{"line_number":130,"context_line":"\t} while ((v \u0026 1) !\u003d desired);"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"942d2c55_3c5589bc","line":128,"range":{"start_line":128,"start_character":10,"end_line":128,"end_character":20},"in_reply_to":"0dd807b0_d73e2f03","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":125,"context_line":"\t\tif (ms_now \u003e ms_end) {"},{"line_number":126,"context_line":"\t\t\t/* error */"},{"line_number":127,"context_line":"\t\t\tLOG_ERROR(\"Command timeout\");"},{"line_number":128,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":129,"context_line":"\t\t}"},{"line_number":130,"context_line":"\t} while ((v \u0026 1) !\u003d desired);"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"0dd807b0_d73e2f03","line":128,"range":{"start_line":128,"start_character":10,"end_line":128,"end_character":20},"in_reply_to":"ec54d8a4_0cd1f336","updated":"2025-02-26 14:58:13.000000000","message":"Fixed.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":180,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":181,"context_line":"\t\treturn r;"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"\tr \u003d samv_efc_wait_status(target, 1, 10000, \u0026v);"},{"line_number":184,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":185,"context_line":"\t\treturn r;"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"dbd14889_b250d9de","line":183,"range":{"start_line":183,"start_character":34,"end_line":183,"end_character":42},"updated":"2025-02-18 05:25:06.000000000","message":"Could you please #define both status values and timeout? e.g. EFC_FSR_FRDY, TIMEOUT_MS or EFC_CMD_TIMEOUT_MS\nMany occurrences.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":180,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":181,"context_line":"\t\treturn r;"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"\tr \u003d samv_efc_wait_status(target, 1, 10000, \u0026v);"},{"line_number":184,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":185,"context_line":"\t\treturn r;"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"f3c4da1e_3fca3ea2","line":183,"range":{"start_line":183,"start_character":34,"end_line":183,"end_character":42},"in_reply_to":"dbd14889_b250d9de","updated":"2025-02-26 14:58:13.000000000","message":"Added few timeouts and decided based on the operation. I used maximum erase time based on the characteristics from a reference manual, it is enough, but little bit less effective if only some pages are erased. But I think it is sufficient and we don\u0027t need to compute \"actual\" erase time based on the number of pages.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":180,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":181,"context_line":"\t\treturn r;"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"\tr \u003d samv_efc_wait_status(target, 1, 10000, \u0026v);"},{"line_number":184,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":185,"context_line":"\t\treturn r;"},{"line_number":186,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"4b763d9b_bda5ec83","line":183,"range":{"start_line":183,"start_character":34,"end_line":183,"end_character":42},"in_reply_to":"f3c4da1e_3fca3ea2","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":190,"context_line":"\treturn ERROR_OK;"},{"line_number":191,"context_line":"}"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"static int samv_efc_read_sequence(struct target *target, unsigned int start_cmd,"},{"line_number":194,"context_line":"\t\tunsigned int stop_cmd, uint8_t *buf, size_t read_size)"},{"line_number":195,"context_line":"{"},{"line_number":196,"context_line":"\tuint32_t v;"},{"line_number":197,"context_line":"\tuint32_t addr \u003d SAMV_FLASH_BASE;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"e82bd269_3197ef48","line":194,"range":{"start_line":193,"start_character":57,"end_line":194,"end_character":23},"updated":"2025-02-18 05:25:06.000000000","message":"Unfortunately `samv_efc_start_command()` uses wrong types for cmd and arg.\ncmd should be uint8_t as it is limited to 8 bits. Please use the correct type in the new code. See https://openocd.org/doc/doxygen/html/stylec.html","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":190,"context_line":"\treturn ERROR_OK;"},{"line_number":191,"context_line":"}"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"static int samv_efc_read_sequence(struct target *target, unsigned int start_cmd,"},{"line_number":194,"context_line":"\t\tunsigned int stop_cmd, uint8_t *buf, size_t read_size)"},{"line_number":195,"context_line":"{"},{"line_number":196,"context_line":"\tuint32_t v;"},{"line_number":197,"context_line":"\tuint32_t addr \u003d SAMV_FLASH_BASE;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"861f5b45_6333876b","line":194,"range":{"start_line":193,"start_character":57,"end_line":194,"end_character":23},"in_reply_to":"53d62451_5e470700","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":190,"context_line":"\treturn ERROR_OK;"},{"line_number":191,"context_line":"}"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"static int samv_efc_read_sequence(struct target *target, unsigned int start_cmd,"},{"line_number":194,"context_line":"\t\tunsigned int stop_cmd, uint8_t *buf, size_t read_size)"},{"line_number":195,"context_line":"{"},{"line_number":196,"context_line":"\tuint32_t v;"},{"line_number":197,"context_line":"\tuint32_t addr \u003d SAMV_FLASH_BASE;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"53d62451_5e470700","line":194,"range":{"start_line":193,"start_character":57,"end_line":194,"end_character":23},"in_reply_to":"e82bd269_3197ef48","updated":"2025-02-26 14:58:13.000000000","message":"Fixed","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":202,"context_line":"\tsamv_efc_set_mode(target, v);"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"\tr \u003d samv_efc_start_command(target, start_cmd, 0);"},{"line_number":205,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":206,"context_line":"\t\treturn r;"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"\tr \u003d samv_efc_wait_status(target, 0, 10000, NULL);"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"3ed192f4_21e31e2b","line":205,"updated":"2025-02-18 05:25:06.000000000","message":"In the case of error returned from memory write don\u0027t make any assumption: most likely the value was not written however there is some probability the error appeared after the write was triggered.\n\nBetter issue the stop_cmd anyway.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":202,"context_line":"\tsamv_efc_set_mode(target, v);"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"\tr \u003d samv_efc_start_command(target, start_cmd, 0);"},{"line_number":205,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":206,"context_line":"\t\treturn r;"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"\tr \u003d samv_efc_wait_status(target, 0, 10000, NULL);"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"c843a5b7_3a8a42c8","line":205,"in_reply_to":"3ed192f4_21e31e2b","updated":"2025-02-26 14:58:13.000000000","message":"stop_cmd called","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"\tsamv_efc_set_mode(target, v);"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"\tr \u003d samv_efc_start_command(target, start_cmd, 0);"},{"line_number":205,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":206,"context_line":"\t\treturn r;"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"\tr \u003d samv_efc_wait_status(target, 0, 10000, NULL);"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"fefa79f9_8a9516eb","line":205,"in_reply_to":"c843a5b7_3a8a42c8","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":205,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":206,"context_line":"\t\treturn r;"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"\tr \u003d samv_efc_wait_status(target, 0, 10000, NULL);"},{"line_number":209,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":210,"context_line":"\t\tgoto rs_finish;"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"132915d0_3d41a126","line":208,"range":{"start_line":208,"start_character":37,"end_line":208,"end_character":42},"updated":"2025-02-18 05:25:06.000000000","message":"We might need differentiate timeouts: 10 sec is way too long here (and too short for 2 MByte chip erase)","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":205,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":206,"context_line":"\t\treturn r;"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"\tr \u003d samv_efc_wait_status(target, 0, 10000, NULL);"},{"line_number":209,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":210,"context_line":"\t\tgoto rs_finish;"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"dd43282b_cf7e07f7","line":208,"range":{"start_line":208,"start_character":37,"end_line":208,"end_character":42},"in_reply_to":"132915d0_3d41a126","updated":"2025-02-26 14:58:13.000000000","message":"See previous comments","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":205,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":206,"context_line":"\t\treturn r;"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"\tr \u003d samv_efc_wait_status(target, 0, 10000, NULL);"},{"line_number":209,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":210,"context_line":"\t\tgoto rs_finish;"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"546a2149_a8181e67","line":208,"range":{"start_line":208,"start_character":37,"end_line":208,"end_character":42},"in_reply_to":"dd43282b_cf7e07f7","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":213,"context_line":"\t\t\tread_size / sizeof(uint32_t), buf);"},{"line_number":214,"context_line":"\tif (r !\u003d ERROR_OK) {"},{"line_number":215,"context_line":"\t\tLOG_ERROR(\"flash program failed to read page @ 0x%08x\","},{"line_number":216,"context_line":"\t\t\t\t\t\t\t(unsigned int)(addr));"},{"line_number":217,"context_line":"\t\tgoto rs_finish;"},{"line_number":218,"context_line":"\t}"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"45f7b4d3_a53e7aa5","line":216,"range":{"start_line":216,"start_character":7,"end_line":216,"end_character":27},"updated":"2025-02-18 05:25:06.000000000","message":"Don\u0027t typecast LOG_xxx parameters, use proper printf type specifier instead (e.g. PRIx32). See https://openocd.org/doc/doxygen/html/stylec.html\nI know the original samv.c code is full of such crap. Damn...","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":213,"context_line":"\t\t\tread_size / sizeof(uint32_t), buf);"},{"line_number":214,"context_line":"\tif (r !\u003d ERROR_OK) {"},{"line_number":215,"context_line":"\t\tLOG_ERROR(\"flash program failed to read page @ 0x%08x\","},{"line_number":216,"context_line":"\t\t\t\t\t\t\t(unsigned int)(addr));"},{"line_number":217,"context_line":"\t\tgoto rs_finish;"},{"line_number":218,"context_line":"\t}"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"5181ee73_a2748a7a","line":216,"range":{"start_line":216,"start_character":7,"end_line":216,"end_character":27},"in_reply_to":"45f7b4d3_a53e7aa5","updated":"2025-02-26 14:58:13.000000000","message":"Should be fixed in all occurrences now.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":213,"context_line":"\t\t\tread_size / sizeof(uint32_t), buf);"},{"line_number":214,"context_line":"\tif (r !\u003d ERROR_OK) {"},{"line_number":215,"context_line":"\t\tLOG_ERROR(\"flash program failed to read page @ 0x%08x\","},{"line_number":216,"context_line":"\t\t\t\t\t\t\t(unsigned int)(addr));"},{"line_number":217,"context_line":"\t\tgoto rs_finish;"},{"line_number":218,"context_line":"\t}"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"84a45aff_f28bad06","line":216,"range":{"start_line":216,"start_character":7,"end_line":216,"end_character":27},"in_reply_to":"5181ee73_a2748a7a","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"\tr \u003d samv_efc_start_command(target, stop_cmd, 0);"},{"line_number":221,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":222,"context_line":"\t\treturn r;"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"\tr \u003d samv_efc_wait_status(target, 1, 10000, NULL);"},{"line_number":225,"context_line":"\tif (r !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"50d7127e_38324e1d","line":222,"updated":"2025-02-18 05:25:06.000000000","message":"goto","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"\tr \u003d samv_efc_start_command(target, stop_cmd, 0);"},{"line_number":221,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":222,"context_line":"\t\treturn r;"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"\tr \u003d samv_efc_wait_status(target, 1, 10000, NULL);"},{"line_number":225,"context_line":"\tif (r !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"a8913b75_4d205f71","line":222,"in_reply_to":"50d7127e_38324e1d","updated":"2025-02-26 14:58:13.000000000","message":"Changed","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"\tr \u003d samv_efc_start_command(target, stop_cmd, 0);"},{"line_number":221,"context_line":"\tif (r !\u003d ERROR_OK)"},{"line_number":222,"context_line":"\t\treturn r;"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"\tr \u003d samv_efc_wait_status(target, 1, 10000, NULL);"},{"line_number":225,"context_line":"\tif (r !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"b601ac29_2b766271","line":222,"in_reply_to":"a8913b75_4d205f71","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":228,"context_line":"rs_finish:"},{"line_number":229,"context_line":"\tsamv_efc_get_mode(target, \u0026v);"},{"line_number":230,"context_line":"\tv \u0026\u003d ~SAMV_EFC_FMR_SCOD;"},{"line_number":231,"context_line":"\tsamv_efc_set_mode(target, v);"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"\treturn r;"},{"line_number":234,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"687ba025_c222b776","line":231,"updated":"2025-02-18 05:25:06.000000000","message":"Couldn\u0027t we just restore the mode read @ line 200?","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":228,"context_line":"rs_finish:"},{"line_number":229,"context_line":"\tsamv_efc_get_mode(target, \u0026v);"},{"line_number":230,"context_line":"\tv \u0026\u003d ~SAMV_EFC_FMR_SCOD;"},{"line_number":231,"context_line":"\tsamv_efc_set_mode(target, v);"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"\treturn r;"},{"line_number":234,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"571203fd_9ae6c09a","line":231,"in_reply_to":"5a8990b9_21646805","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":228,"context_line":"rs_finish:"},{"line_number":229,"context_line":"\tsamv_efc_get_mode(target, \u0026v);"},{"line_number":230,"context_line":"\tv \u0026\u003d ~SAMV_EFC_FMR_SCOD;"},{"line_number":231,"context_line":"\tsamv_efc_set_mode(target, v);"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"\treturn r;"},{"line_number":234,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"5a8990b9_21646805","line":231,"in_reply_to":"687ba025_c222b776","updated":"2025-02-26 14:58:13.000000000","message":"Actually yes, good point.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":"static int samv_probe(struct flash_bank *bank)"},{"line_number":419,"context_line":"{"},{"line_number":420,"context_line":"\tif (bank-\u003ebank_number \u003d\u003d 1) {"},{"line_number":421,"context_line":"\t\tbank-\u003ebase \u003d SAMV_FLASH_SIGNATURE_BASE;"},{"line_number":422,"context_line":"\t\tbank-\u003esize \u003d SAMV_FLASH_SIGNATURE_SIZE;"},{"line_number":423,"context_line":"\t\tbank-\u003enum_sectors \u003d 1;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"a6197943_3a40ba79","line":420,"range":{"start_line":420,"start_character":5,"end_line":420,"end_character":27},"updated":"2025-02-18 05:25:06.000000000","message":"Don\u0027t assume that bank numbers corresponds to the creation sequence in target cfg.\nUser might configure more devices in JTAG chain and SAMV is not the first.\n\nYou should set the bank address in cfg and test it here","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":"static int samv_probe(struct flash_bank *bank)"},{"line_number":419,"context_line":"{"},{"line_number":420,"context_line":"\tif (bank-\u003ebank_number \u003d\u003d 1) {"},{"line_number":421,"context_line":"\t\tbank-\u003ebase \u003d SAMV_FLASH_SIGNATURE_BASE;"},{"line_number":422,"context_line":"\t\tbank-\u003esize \u003d SAMV_FLASH_SIGNATURE_SIZE;"},{"line_number":423,"context_line":"\t\tbank-\u003enum_sectors \u003d 1;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"bdbb96f0_5297a89f","line":420,"range":{"start_line":420,"start_character":5,"end_line":420,"end_character":27},"in_reply_to":"30a9af2d_80ae773c","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":"static int samv_probe(struct flash_bank *bank)"},{"line_number":419,"context_line":"{"},{"line_number":420,"context_line":"\tif (bank-\u003ebank_number \u003d\u003d 1) {"},{"line_number":421,"context_line":"\t\tbank-\u003ebase \u003d SAMV_FLASH_SIGNATURE_BASE;"},{"line_number":422,"context_line":"\t\tbank-\u003esize \u003d SAMV_FLASH_SIGNATURE_SIZE;"},{"line_number":423,"context_line":"\t\tbank-\u003enum_sectors \u003d 1;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"30a9af2d_80ae773c","line":420,"range":{"start_line":420,"start_character":5,"end_line":420,"end_character":27},"in_reply_to":"a6197943_3a40ba79","updated":"2025-02-26 14:58:13.000000000","message":"Changed to address","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":581,"context_line":"\tconst uint32_t addr \u003d SAMV_FLASH_BASE;"},{"line_number":582,"context_line":"\tint r;"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"\t/* We need to erase user signature before writing it. This is not described"},{"line_number":585,"context_line":"\t * in the datasheet, but the results are not correct unless erase is done"},{"line_number":586,"context_line":"\t * prior to write operation."},{"line_number":587,"context_line":"\t */"},{"line_number":588,"context_line":"\tr \u003d samv_erase_user_signature(target);"},{"line_number":589,"context_line":"\tif (r !\u003d ERROR_OK) {"},{"line_number":590,"context_line":"\t\tLOG_ERROR(\"error performing user signature erase\");"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"34cc101b_029b3eeb","line":587,"range":{"start_line":584,"start_character":1,"end_line":587,"end_character":4},"updated":"2025-02-18 05:25:06.000000000","message":"Is not it same as for the rest of flash?\n`samv_write_standard_page()` does not erase the page before writing, it relies on proper use `flash erase_xxx` or `flash write_xxx erase`.\nWhy the signature page is handled differently?","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":581,"context_line":"\tconst uint32_t addr \u003d SAMV_FLASH_BASE;"},{"line_number":582,"context_line":"\tint r;"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"\t/* We need to erase user signature before writing it. This is not described"},{"line_number":585,"context_line":"\t * in the datasheet, but the results are not correct unless erase is done"},{"line_number":586,"context_line":"\t * prior to write operation."},{"line_number":587,"context_line":"\t */"},{"line_number":588,"context_line":"\tr \u003d samv_erase_user_signature(target);"},{"line_number":589,"context_line":"\tif (r !\u003d ERROR_OK) {"},{"line_number":590,"context_line":"\t\tLOG_ERROR(\"error performing user signature erase\");"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"8eef12d5_253a902c","line":587,"range":{"start_line":584,"start_character":1,"end_line":587,"end_character":4},"in_reply_to":"34cc101b_029b3eeb","updated":"2025-02-26 14:58:13.000000000","message":"Ok, I agree it is better to have the behavior unified, erase removed.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":581,"context_line":"\tconst uint32_t addr \u003d SAMV_FLASH_BASE;"},{"line_number":582,"context_line":"\tint r;"},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"\t/* We need to erase user signature before writing it. This is not described"},{"line_number":585,"context_line":"\t * in the datasheet, but the results are not correct unless erase is done"},{"line_number":586,"context_line":"\t * prior to write operation."},{"line_number":587,"context_line":"\t */"},{"line_number":588,"context_line":"\tr \u003d samv_erase_user_signature(target);"},{"line_number":589,"context_line":"\tif (r !\u003d ERROR_OK) {"},{"line_number":590,"context_line":"\t\tLOG_ERROR(\"error performing user signature erase\");"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"6f3d93d1_4f24c0b4","line":587,"range":{"start_line":584,"start_character":1,"end_line":587,"end_character":4},"in_reply_to":"8eef12d5_253a902c","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":645,"context_line":"\treturn r;"},{"line_number":646,"context_line":"}"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"static int samv_read(struct flash_bank *bank, uint8_t *buffer,"},{"line_number":649,"context_line":"\t\tuint32_t offset, uint32_t count)"},{"line_number":650,"context_line":"{"},{"line_number":651,"context_line":"\tint r;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"2074045e_1643dd70","line":648,"updated":"2025-02-18 05:25:06.000000000","message":"The read ops seems to be copied and slightly reworked write ops.\nBut the substantial difference is neglected: read does not need to be aligned to pages, it actually does not need to be aligned at all.\n\nSee `default_flash_read()` definition in src/flash/nor/core.c","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":645,"context_line":"\treturn r;"},{"line_number":646,"context_line":"}"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"static int samv_read(struct flash_bank *bank, uint8_t *buffer,"},{"line_number":649,"context_line":"\t\tuint32_t offset, uint32_t count)"},{"line_number":650,"context_line":"{"},{"line_number":651,"context_line":"\tint r;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"500e0a52_be3d392a","line":648,"in_reply_to":"2074045e_1643dd70","updated":"2025-02-26 14:58:13.000000000","message":"Yes, that was my clumsiness. Should be fixed now.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":645,"context_line":"\treturn r;"},{"line_number":646,"context_line":"}"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"static int samv_read(struct flash_bank *bank, uint8_t *buffer,"},{"line_number":649,"context_line":"\t\tuint32_t offset, uint32_t count)"},{"line_number":650,"context_line":"{"},{"line_number":651,"context_line":"\tint r;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"5cadba63_ba9ab83b","line":648,"in_reply_to":"500e0a52_be3d392a","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ae767d37f2935a8068cd9d5eb31b9612985246af","unresolved":true,"context_lines":[{"line_number":652,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"\tLOG_DEBUG(\"%s: offset\u003d0x%08\" PRIx32 \" count\u003d0x%08\" PRIx32,"},{"line_number":655,"context_line":"\t\t  __func__, offset, count);"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"\tif (target-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":658,"context_line":"\t\tLOG_ERROR(\"Target not halted\");"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"2432fef8_fe72b4bd","line":655,"range":{"start_line":655,"start_character":4,"end_line":655,"end_character":12},"updated":"2025-02-18 05:25:06.000000000","message":"Don\u0027t add function name to `LOG_DEBUG()`. The `LOG_DEBUG()` macro inserts \\__file__ \\__line__ and \\__func__ so there is no point to have the func name twice in the log","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1002282,"name":"Michal Lenc","email":"michallenc@seznam.cz","username":"michallenc"},"change_message_id":"aa9f3c059d3bc3e5920cd1bbfb6d25863e284675","unresolved":true,"context_lines":[{"line_number":652,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"\tLOG_DEBUG(\"%s: offset\u003d0x%08\" PRIx32 \" count\u003d0x%08\" PRIx32,"},{"line_number":655,"context_line":"\t\t  __func__, offset, count);"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"\tif (target-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":658,"context_line":"\t\tLOG_ERROR(\"Target not halted\");"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"6a4df35d_cb755a46","line":655,"range":{"start_line":655,"start_character":4,"end_line":655,"end_character":12},"in_reply_to":"2432fef8_fe72b4bd","updated":"2025-02-26 14:58:13.000000000","message":"Ok, __func__ removed.","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"3ca690c2c14a7ecfbcab7c62b458ffeebf59e15b","unresolved":false,"context_lines":[{"line_number":652,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"\tLOG_DEBUG(\"%s: offset\u003d0x%08\" PRIx32 \" count\u003d0x%08\" PRIx32,"},{"line_number":655,"context_line":"\t\t  __func__, offset, count);"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"\tif (target-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":658,"context_line":"\t\tLOG_ERROR(\"Target not halted\");"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"e988e2a7_bdd87577","line":655,"range":{"start_line":655,"start_character":4,"end_line":655,"end_character":12},"in_reply_to":"6a4df35d_cb755a46","updated":"2025-07-23 06:54:39.000000000","message":"Done","commit_id":"a894224931b7ce86352d25913c98f3f3196ea9ab"}]}
