)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     stfnbr \u003cstfnbr@disroot.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-08-21 11:14:10 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"new target: PAC55XX"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"add flash driver and config file for PAC55XX"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"d5e4c8a7_6b66aaa8","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":10},"updated":"2026-08-31 16:25:23.000000000","message":"flash/nor, tcl/target: add PAC55XX","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     stfnbr \u003cstfnbr@disroot.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-08-21 11:14:10 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"new target: PAC55XX"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"add flash driver and config file for PAC55XX"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"0ea76f49_5931746f","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":10},"in_reply_to":"308e0e87_b34ccb90","updated":"2026-09-02 15:45:38.000000000","message":"Next time please use DONE button below the text, this also checks Resolved box.","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     stfnbr \u003cstfnbr@disroot.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-08-21 11:14:10 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"new target: PAC55XX"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"add flash driver and config file for PAC55XX"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"308e0e87_b34ccb90","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":10},"in_reply_to":"d5e4c8a7_6b66aaa8","updated":"2026-09-02 14:49:12.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"97671648b208432fb77cd417151250bf16a991d3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ecd03b7e_364055c8","updated":"2026-08-21 11:35:01.000000000","message":"I added basic support for the PAC55XX microcontroller family. As this is my first time contributing to OpenOCD, it is heavily inspired by the other already supported targets and I\u0027m grateful for feedback. There are still some features of the microcontroller family not implemented (like code protection or flash readback) but I think this is a good starting point.","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"489fdeb3_bf468860","updated":"2026-08-31 16:25:23.000000000","message":"Thanks for the new device support!","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c05aaed8_18910020","updated":"2026-09-02 14:49:12.000000000","message":"Thanks for the feedback!\nAll the issues should hopefully be resolved now. Especially mentioning the two implementations (src/flash/nor/swm050.c and src/flash/nor/artery.c) that do the things correctly helped me.","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"aa0f513c_056afe31","updated":"2026-09-02 17:39:53.000000000","message":"If fixed the issues and tested again with the hardware on my side. Thanks for having another look at it. It works for me which obviously doesn\u0027t mean its correct.","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"4740efd87dfada0ba3d33495872c27c4342138e5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2ad00dfe_469470cb","updated":"2026-09-02 20:22:57.000000000","message":"Please document the driver in `docs/openocd.texi`.","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"caab49c8af220e3596ff7557bb3c68efa59cdf4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"592b7f41_4fb080fd","updated":"2026-09-03 08:31:07.000000000","message":"Sorry, forgot to include this in the last feedback.","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"f8f5578aa60a27789a2d5ad654c6990d614d8382","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f7737e10_26b74f99","updated":"2026-09-02 18:27:30.000000000","message":"Thanks!","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"91050d50680a1c4b3efcea281c6d88ec99fbc00b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a53a4899_e3c0e4a6","in_reply_to":"0a39ff8a_c0023b07","updated":"2026-09-03 12:27:51.000000000","message":"Done - it is rather short but I think that\u0027s all there is to say","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"29edd1112772c1a787ad058315c13008a9d90e84","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0a39ff8a_c0023b07","in_reply_to":"2ad00dfe_469470cb","updated":"2026-09-03 05:35:36.000000000","message":"Ooops 😞","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"cdfef854c0f46a2d6533c3eef0666709fcd38920","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"21ea388d_93fc0715","updated":"2026-09-08 14:08:46.000000000","message":"I now made the changes but have to test tomorrow with the actual hardware if everything still works. How do I go forward with pushing the changes? I would prefer to not mess with any other pull-request again. So far I did this:\n```\n# git fetch https://stfnbr@review.openocd.org/a/openocd refs/changes/01/9701/5 \u0026\u0026 git reset --hard FETCH_HEAD\nFrom https://review.openocd.org/a/openocd\n * branch                refs/changes/01/9701/5 -\u003e FETCH_HEAD\nHEAD is now at 6978467dc flash/nor, tcl/target: add PAC55XX\n```\nthen made my changes and commited them. But `git status` does not really look correct\n```\n# git status\nOn branch master\nYour branch and \u0027origin/master\u0027 have diverged,\nand have 10 and 30 different commits each, respectively.\n  (use \"git pull\" if you want to integrate the remote branch with yours)\n\nnothing to commit, working tree clean\n```\n\nDo I run the proposed `git pull`?","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"91050d50680a1c4b3efcea281c6d88ec99fbc00b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a722f73d_5e39c66e","updated":"2026-09-03 12:27:51.000000000","message":"I resolved your comments and rebased my changes. Let me know if there is still something missing.","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9b9d69e6_29038432","in_reply_to":"0c285bdc_3ca62c32","updated":"2026-09-09 16:08:46.000000000","message":"Done - thanks","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"ec5427b285f96c239f32170b2dec39d820e0d65f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0c285bdc_3ca62c32","in_reply_to":"21ea388d_93fc0715","updated":"2026-09-08 14:20:53.000000000","message":"As I wrote all changes were merged (this patch was made dependent to).\nSo simply forget about them, work on top of the current git master:\n```\ngit reset --hard origin/master\ngit pull\ngit cherry-pick this change\n```\nwork on it\n```\ngit add -p\ngit commit --amend\ntools/checkpatch.sh\ngit push review\n```","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"067f22a6_693f8161","updated":"2026-09-09 16:08:46.000000000","message":"I think I fixed all the issues you found. I also tested everything with the actual hardware again and everything seems to work - even reading.","commit_id":"29bab6c43baf04a176290b4570f776207f7a4e1d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"45c5d7703d30237d4f63a0a7d10adb94933b25cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f3f5cb4a_41f62f45","updated":"2026-09-13 05:02:13.000000000","message":"Thanks!\n\nAntonio?","commit_id":"29bab6c43baf04a176290b4570f776207f7a4e1d"}],"doc/openocd.texi":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"3ec91ae6b0909e79546472775139a07cab4b64b2","unresolved":true,"context_lines":[{"line_number":7968,"context_line":""},{"line_number":7969,"context_line":"@deffn {Flash Driver} {pac55xx}"},{"line_number":7970,"context_line":"Supports the PAC55XX series from Qorvo. Currently only erasing and"},{"line_number":7971,"context_line":"writing but not reading is supported."},{"line_number":7972,"context_line":""},{"line_number":7973,"context_line":"@example"},{"line_number":7974,"context_line":"flash bank $_FLASHNAME pac55xx 0 0 0 0 $_TARGETNAME"}],"source_content_type":"text/x-texinfo","patch_set":5,"id":"2d33f7c9_d4190c2a","line":7971,"range":{"start_line":7971,"start_character":8,"end_line":7971,"end_character":23},"updated":"2026-09-03 16:30:39.000000000","message":"I think there is no reason to emphasise this fact.\nThe read is mainly for external flash or other memories not accessible (or not always mapped) in target\u0027s memory. Most of drivers for internal flash just use `default_flash_read`","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":7968,"context_line":""},{"line_number":7969,"context_line":"@deffn {Flash Driver} {pac55xx}"},{"line_number":7970,"context_line":"Supports the PAC55XX series from Qorvo. Currently only erasing and"},{"line_number":7971,"context_line":"writing but not reading is supported."},{"line_number":7972,"context_line":""},{"line_number":7973,"context_line":"@example"},{"line_number":7974,"context_line":"flash bank $_FLASHNAME pac55xx 0 0 0 0 $_TARGETNAME"}],"source_content_type":"text/x-texinfo","patch_set":5,"id":"9a797b07_79234516","line":7971,"range":{"start_line":7971,"start_character":8,"end_line":7971,"end_character":23},"in_reply_to":"2d33f7c9_d4190c2a","updated":"2026-09-09 16:08:46.000000000","message":"Done - I tested with `openocd -f interface/jlink.cfg -f target/qorvo/pac55xx.cfg -c \"init\" -c \"reset halt\" -c \"mdw 0x0 32\" -c \"shutdown\"` and it seems to work.","commit_id":"6978467dcfeb50654049162927adc4849656dfde"}],"src/flash/nor/pac55xx.c":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":54,"context_line":"\t\t\t(status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY) \u003d\u003d 0)"},{"line_number":55,"context_line":"\t\t\treturn ret;"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"\t\t--timeout;"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"\t\tif (timeout \u003c\u003d 0) {"},{"line_number":60,"context_line":"\t\t\tLOG_ERROR(\"Write or erase operation took longer than expected\");"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"5763c9a1_dbfe41bf","line":57,"updated":"2026-08-31 16:25:23.000000000","message":"I would prefer timeout based on `timeval_ms()` instead of loop counting - depending on the adapter type/speed the loop may take from 1 to 5 msec. I admit that in this flash driver with universal 20 ms timeout there is not much point in triggering timeouts precisely. See e.g. src/flash/nor/artery.c","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":54,"context_line":"\t\t\t(status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY) \u003d\u003d 0)"},{"line_number":55,"context_line":"\t\t\treturn ret;"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"\t\t--timeout;"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"\t\tif (timeout \u003c\u003d 0) {"},{"line_number":60,"context_line":"\t\t\tLOG_ERROR(\"Write or erase operation took longer than expected\");"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"619e9e6d_22df7f94","line":57,"in_reply_to":"5763c9a1_dbfe41bf","updated":"2026-09-02 14:49:12.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":54,"context_line":"\t\t\t(status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY) \u003d\u003d 0)"},{"line_number":55,"context_line":"\t\t\treturn ret;"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"\t\t--timeout;"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"\t\tif (timeout \u003c\u003d 0) {"},{"line_number":60,"context_line":"\t\t\tLOG_ERROR(\"Write or erase operation took longer than expected\");"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d39e779f_033fe09e","line":57,"in_reply_to":"619e9e6d_22df7f94","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":97,"context_line":"\t\tif (ret !\u003d ERROR_OK)"},{"line_number":98,"context_line":"\t\t\treturn ret;"},{"line_number":99,"context_line":"\t}"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"\treturn ret;"},{"line_number":102,"context_line":"}"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"12dfdc80_98dec536","line":100,"updated":"2026-08-31 16:25:23.000000000","message":"Should not lock the flash in case of error?","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":97,"context_line":"\t\tif (ret !\u003d ERROR_OK)"},{"line_number":98,"context_line":"\t\t\treturn ret;"},{"line_number":99,"context_line":"\t}"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"\treturn ret;"},{"line_number":102,"context_line":"}"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"64b9043e_0f141adc","line":100,"in_reply_to":"12dfdc80_98dec536","updated":"2026-09-02 14:49:12.000000000","message":"I now lock the flash again in case of a timeout. If one of the `target_write_u32` failed I don\u0027t try to lock the flash because I think the `target_write_u32` to actually lock the flash will also fail anyway or do you think it makes sense to add this?\nI now also lock the flash if the function ends successfully which was also missing before.","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":97,"context_line":"\t\tif (ret !\u003d ERROR_OK)"},{"line_number":98,"context_line":"\t\t\treturn ret;"},{"line_number":99,"context_line":"\t}"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"\treturn ret;"},{"line_number":102,"context_line":"}"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"974fe8b5_8792b3de","line":100,"in_reply_to":"145a811f_7f20bc66","updated":"2026-09-02 17:39:53.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":true,"context_lines":[{"line_number":97,"context_line":"\t\tif (ret !\u003d ERROR_OK)"},{"line_number":98,"context_line":"\t\t\treturn ret;"},{"line_number":99,"context_line":"\t}"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"\treturn ret;"},{"line_number":102,"context_line":"}"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"145a811f_7f20bc66","line":100,"in_reply_to":"64b9043e_0f141adc","updated":"2026-09-02 15:45:38.000000000","message":"We should not assume anything about the error and the following operation. It may be a random bit error and the next operation will succeed. We should at least to try.\n\nAlso if we get an error code from a write operation (e.g. unlocking), it is unlikely the value was written - but there is still some probability that the error appeared in the confirmation phase of the operation and the value was really written.\n\nFor reliable and robust locking, write lock in all paths since unlock was tried.","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":106,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":107,"context_line":"\t// target must be halted"},{"line_number":108,"context_line":"\tif (bank-\u003etarget-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":109,"context_line":"\t\tLOG_ERROR(\"Target must be halted to erase.\");"},{"line_number":110,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":111,"context_line":"\t}"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"ccdc8274_be02cbfe","line":109,"range":{"start_line":109,"start_character":38,"end_line":109,"end_character":43},"updated":"2026-08-31 16:25:23.000000000","message":"Copypasta, should be write?","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":106,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":107,"context_line":"\t// target must be halted"},{"line_number":108,"context_line":"\tif (bank-\u003etarget-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":109,"context_line":"\t\tLOG_ERROR(\"Target must be halted to erase.\");"},{"line_number":110,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":111,"context_line":"\t}"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"404410f2_84cf20d0","line":109,"range":{"start_line":109,"start_character":38,"end_line":109,"end_character":43},"in_reply_to":"7fca8060_7d3eeb62","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":106,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":107,"context_line":"\t// target must be halted"},{"line_number":108,"context_line":"\tif (bank-\u003etarget-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":109,"context_line":"\t\tLOG_ERROR(\"Target must be halted to erase.\");"},{"line_number":110,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":111,"context_line":"\t}"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7fca8060_7d3eeb62","line":109,"range":{"start_line":109,"start_character":38,"end_line":109,"end_character":43},"in_reply_to":"ccdc8274_be02cbfe","updated":"2026-09-02 14:49:12.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":115,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":116,"context_line":"\t\treturn ret;"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"\t// check if start address is aligned to page size"},{"line_number":119,"context_line":"\tif (offset % 16 !\u003d 0) {"},{"line_number":120,"context_line":"\t\tLOG_ERROR(\"Writing must start at an address aligned to 16 bytes\");"},{"line_number":121,"context_line":"\t\treturn ERROR_NOT_IMPLEMENTED;"},{"line_number":122,"context_line":"\t}"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"\t// check if size is aligned to page size"},{"line_number":125,"context_line":"\tif (count % 16 !\u003d 0) {"},{"line_number":126,"context_line":"\t\tLOG_ERROR(\"Size of write operation must always be aligned to 16 bytes\");"},{"line_number":127,"context_line":"\t\treturn ERROR_NOT_IMPLEMENTED;"},{"line_number":128,"context_line":"\t}"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"\tfor (uint32_t flash_address \u003d PAC55XX_FLASH_BASE + offset;"},{"line_number":131,"context_line":"\t\t flash_address \u003c PAC55XX_FLASH_BASE + offset + count;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"268db717_66359785","line":128,"range":{"start_line":118,"start_character":1,"end_line":128,"end_character":2},"updated":"2026-08-31 16:25:23.000000000","message":"Setting `bank-\u003ewrite_start_alignment` and `bank-\u003ewrite_end_alignment` in probe ensures this. If you don\u0027t trust you may re-check by assert().","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":115,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":116,"context_line":"\t\treturn ret;"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"\t// check if start address is aligned to page size"},{"line_number":119,"context_line":"\tif (offset % 16 !\u003d 0) {"},{"line_number":120,"context_line":"\t\tLOG_ERROR(\"Writing must start at an address aligned to 16 bytes\");"},{"line_number":121,"context_line":"\t\treturn ERROR_NOT_IMPLEMENTED;"},{"line_number":122,"context_line":"\t}"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"\t// check if size is aligned to page size"},{"line_number":125,"context_line":"\tif (count % 16 !\u003d 0) {"},{"line_number":126,"context_line":"\t\tLOG_ERROR(\"Size of write operation must always be aligned to 16 bytes\");"},{"line_number":127,"context_line":"\t\treturn ERROR_NOT_IMPLEMENTED;"},{"line_number":128,"context_line":"\t}"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"\tfor (uint32_t flash_address \u003d PAC55XX_FLASH_BASE + offset;"},{"line_number":131,"context_line":"\t\t flash_address \u003c PAC55XX_FLASH_BASE + offset + count;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"83940ca6_e2d06c0c","line":128,"range":{"start_line":118,"start_character":1,"end_line":128,"end_character":2},"in_reply_to":"268db717_66359785","updated":"2026-09-02 14:49:12.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":115,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":116,"context_line":"\t\treturn ret;"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"\t// check if start address is aligned to page size"},{"line_number":119,"context_line":"\tif (offset % 16 !\u003d 0) {"},{"line_number":120,"context_line":"\t\tLOG_ERROR(\"Writing must start at an address aligned to 16 bytes\");"},{"line_number":121,"context_line":"\t\treturn ERROR_NOT_IMPLEMENTED;"},{"line_number":122,"context_line":"\t}"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"\t// check if size is aligned to page size"},{"line_number":125,"context_line":"\tif (count % 16 !\u003d 0) {"},{"line_number":126,"context_line":"\t\tLOG_ERROR(\"Size of write operation must always be aligned to 16 bytes\");"},{"line_number":127,"context_line":"\t\treturn ERROR_NOT_IMPLEMENTED;"},{"line_number":128,"context_line":"\t}"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"\tfor (uint32_t flash_address \u003d PAC55XX_FLASH_BASE + offset;"},{"line_number":131,"context_line":"\t\t flash_address \u003c PAC55XX_FLASH_BASE + offset + count;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2c67554f_a59624d8","line":128,"range":{"start_line":118,"start_character":1,"end_line":128,"end_character":2},"in_reply_to":"83940ca6_e2d06c0c","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":146,"context_line":"\tret \u003d pac55xx_wait_for_operation_to_finish(bank, 20);"},{"line_number":147,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":148,"context_line":"\t\treturn ret;"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\treturn ret;"},{"line_number":151,"context_line":"}"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"5308ace4_76752c68","line":149,"updated":"2026-08-31 16:25:23.000000000","message":"Again, should not lock the flash in case of error?","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":146,"context_line":"\tret \u003d pac55xx_wait_for_operation_to_finish(bank, 20);"},{"line_number":147,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":148,"context_line":"\t\treturn ret;"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\treturn ret;"},{"line_number":151,"context_line":"}"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"763d99ac_4103e22e","line":149,"in_reply_to":"5308ace4_76752c68","updated":"2026-09-02 14:49:12.000000000","message":"Same as above: Lock the flash in case of timeout.","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":146,"context_line":"\tret \u003d pac55xx_wait_for_operation_to_finish(bank, 20);"},{"line_number":147,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":148,"context_line":"\t\treturn ret;"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\treturn ret;"},{"line_number":151,"context_line":"}"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6a666cd0_4a0b2671","line":149,"in_reply_to":"763d99ac_4103e22e","updated":"2026-09-02 17:39:53.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":150,"context_line":"\treturn ret;"},{"line_number":151,"context_line":"}"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"int pac55xx_probe(struct flash_bank *bank)"},{"line_number":154,"context_line":"{"},{"line_number":155,"context_line":"\tuint32_t num_pages \u003d 128;"},{"line_number":156,"context_line":"\tuint32_t page_size \u003d 0x400; // page size in bytes"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2c75c039_df6c6b5d","line":153,"updated":"2026-08-31 16:25:23.000000000","message":"BTW For one size flash the probe is useless too. See src/flash/nor/swm050.c\nIf you expect a future expansion for more devices/flash sizes, keep the probe as is.","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":150,"context_line":"\treturn ret;"},{"line_number":151,"context_line":"}"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"int pac55xx_probe(struct flash_bank *bank)"},{"line_number":154,"context_line":"{"},{"line_number":155,"context_line":"\tuint32_t num_pages \u003d 128;"},{"line_number":156,"context_line":"\tuint32_t page_size \u003d 0x400; // page size in bytes"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b03931a1_e3a5541b","line":153,"in_reply_to":"2c75c039_df6c6b5d","updated":"2026-09-02 14:49:12.000000000","message":"Done - flash size is not expected to change and other devices in the same family have the same flash size","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":150,"context_line":"\treturn ret;"},{"line_number":151,"context_line":"}"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"int pac55xx_probe(struct flash_bank *bank)"},{"line_number":154,"context_line":"{"},{"line_number":155,"context_line":"\tuint32_t num_pages \u003d 128;"},{"line_number":156,"context_line":"\tuint32_t page_size \u003d 0x400; // page size in bytes"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1c08c022_d6990a1c","line":153,"in_reply_to":"b03931a1_e3a5541b","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":161,"context_line":"\tbank-\u003ewrite_end_alignment \u003d 16;"},{"line_number":162,"context_line":"\tbank-\u003enum_sectors \u003d num_pages;"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"\tif (bank-\u003esectors) {"},{"line_number":165,"context_line":"\t\tfree(bank-\u003esectors);"},{"line_number":166,"context_line":"\t\tbank-\u003esectors \u003d NULL;"},{"line_number":167,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3f2529f6_18a1e4b4","line":164,"range":{"start_line":164,"start_character":1,"end_line":164,"end_character":21},"updated":"2026-08-31 16:25:23.000000000","message":"Useless condition, call `free()` always.\nSetting `bank-\u003esectors` to NULL is also useless as another setting immediately and unconditionally follows.","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":161,"context_line":"\tbank-\u003ewrite_end_alignment \u003d 16;"},{"line_number":162,"context_line":"\tbank-\u003enum_sectors \u003d num_pages;"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"\tif (bank-\u003esectors) {"},{"line_number":165,"context_line":"\t\tfree(bank-\u003esectors);"},{"line_number":166,"context_line":"\t\tbank-\u003esectors \u003d NULL;"},{"line_number":167,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"8da7180e_0181c5db","line":164,"range":{"start_line":164,"start_character":1,"end_line":164,"end_character":21},"in_reply_to":"3f2529f6_18a1e4b4","updated":"2026-09-02 14:49:12.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":161,"context_line":"\tbank-\u003ewrite_end_alignment \u003d 16;"},{"line_number":162,"context_line":"\tbank-\u003enum_sectors \u003d num_pages;"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"\tif (bank-\u003esectors) {"},{"line_number":165,"context_line":"\t\tfree(bank-\u003esectors);"},{"line_number":166,"context_line":"\t\tbank-\u003esectors \u003d NULL;"},{"line_number":167,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6a4e227a_d6afb72c","line":164,"range":{"start_line":164,"start_character":1,"end_line":164,"end_character":21},"in_reply_to":"8da7180e_0181c5db","updated":"2026-09-02 17:39:53.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":166,"context_line":"\t\tbank-\u003esectors \u003d NULL;"},{"line_number":167,"context_line":"\t}"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"\tbank-\u003esectors \u003d calloc(num_pages, sizeof(struct flash_sector));"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c num_pages; ++i) {"},{"line_number":172,"context_line":"\t\tbank-\u003esectors[i].size \u003d page_size;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1f44ba39_8a71fc98","line":169,"updated":"2026-08-31 16:25:23.000000000","message":"Check return value, LOG_ERROR and return ERROR_FAIL if NULL","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":166,"context_line":"\t\tbank-\u003esectors \u003d NULL;"},{"line_number":167,"context_line":"\t}"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"\tbank-\u003esectors \u003d calloc(num_pages, sizeof(struct flash_sector));"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c num_pages; ++i) {"},{"line_number":172,"context_line":"\t\tbank-\u003esectors[i].size \u003d page_size;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"99296e1c_c2dedfde","line":169,"in_reply_to":"1f44ba39_8a71fc98","updated":"2026-09-02 14:49:12.000000000","message":"Done - I now use `alloc_block_array` instead as I found this in `flash/nor/swm050.c` and check its return value","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":166,"context_line":"\t\tbank-\u003esectors \u003d NULL;"},{"line_number":167,"context_line":"\t}"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"\tbank-\u003esectors \u003d calloc(num_pages, sizeof(struct flash_sector));"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c num_pages; ++i) {"},{"line_number":172,"context_line":"\t\tbank-\u003esectors[i].size \u003d page_size;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"cd487fdb_7d681d7f","line":169,"in_reply_to":"99296e1c_c2dedfde","updated":"2026-09-02 17:39:53.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":182,"context_line":"\treturn ERROR_OK;"},{"line_number":183,"context_line":"}"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"int pac55xx_erase_check(struct flash_bank *bank)"},{"line_number":186,"context_line":"{"},{"line_number":187,"context_line":"\treturn default_flash_blank_check(bank);"},{"line_number":188,"context_line":"}"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"int pac55xx_auto_probe(struct flash_bank *bank)"},{"line_number":191,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"cdb57ba0_ccbb3791","line":188,"range":{"start_line":185,"start_character":0,"end_line":188,"end_character":1},"updated":"2026-08-31 16:25:23.000000000","message":"Remove and use `default_flash_blank_check()` in `const struct flash_driver pac55xx_flash` if not a placeholder for future extension.","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":182,"context_line":"\treturn ERROR_OK;"},{"line_number":183,"context_line":"}"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"int pac55xx_erase_check(struct flash_bank *bank)"},{"line_number":186,"context_line":"{"},{"line_number":187,"context_line":"\treturn default_flash_blank_check(bank);"},{"line_number":188,"context_line":"}"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"int pac55xx_auto_probe(struct flash_bank *bank)"},{"line_number":191,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"432b4b98_2daf661f","line":188,"range":{"start_line":185,"start_character":0,"end_line":188,"end_character":1},"in_reply_to":"497cff53_e6a13276","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":182,"context_line":"\treturn ERROR_OK;"},{"line_number":183,"context_line":"}"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"int pac55xx_erase_check(struct flash_bank *bank)"},{"line_number":186,"context_line":"{"},{"line_number":187,"context_line":"\treturn default_flash_blank_check(bank);"},{"line_number":188,"context_line":"}"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"int pac55xx_auto_probe(struct flash_bank *bank)"},{"line_number":191,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"497cff53_e6a13276","line":188,"range":{"start_line":185,"start_character":0,"end_line":188,"end_character":1},"in_reply_to":"cdb57ba0_ccbb3791","updated":"2026-09-02 14:49:12.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":197,"context_line":"\treturn ERROR_OK;"},{"line_number":198,"context_line":"}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"void pac55xx_free_driver_priv(struct flash_bank *bank)"},{"line_number":201,"context_line":"{"},{"line_number":202,"context_line":"\tif (bank-\u003edriver_priv) {"},{"line_number":203,"context_line":"\t\tfree(bank-\u003edriver_priv);"},{"line_number":204,"context_line":"\t\tbank-\u003edriver_priv \u003d NULL;"},{"line_number":205,"context_line":"\t}"},{"line_number":206,"context_line":"}"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"FLASH_BANK_COMMAND_HANDLER(pac55xx_flash_bank_command)"},{"line_number":209,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"74f0e57e_109d5ce2","line":206,"range":{"start_line":200,"start_character":0,"end_line":206,"end_character":1},"updated":"2026-08-31 16:25:23.000000000","message":"Remove, use `default_flash_free_driver_priv` in `const struct flash_driver pac55xx_flash`","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":197,"context_line":"\treturn ERROR_OK;"},{"line_number":198,"context_line":"}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"void pac55xx_free_driver_priv(struct flash_bank *bank)"},{"line_number":201,"context_line":"{"},{"line_number":202,"context_line":"\tif (bank-\u003edriver_priv) {"},{"line_number":203,"context_line":"\t\tfree(bank-\u003edriver_priv);"},{"line_number":204,"context_line":"\t\tbank-\u003edriver_priv \u003d NULL;"},{"line_number":205,"context_line":"\t}"},{"line_number":206,"context_line":"}"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"FLASH_BANK_COMMAND_HANDLER(pac55xx_flash_bank_command)"},{"line_number":209,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f936c51c_2a13bdfe","line":206,"range":{"start_line":200,"start_character":0,"end_line":206,"end_character":1},"in_reply_to":"74f0e57e_109d5ce2","updated":"2026-09-02 14:49:12.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":197,"context_line":"\treturn ERROR_OK;"},{"line_number":198,"context_line":"}"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"void pac55xx_free_driver_priv(struct flash_bank *bank)"},{"line_number":201,"context_line":"{"},{"line_number":202,"context_line":"\tif (bank-\u003edriver_priv) {"},{"line_number":203,"context_line":"\t\tfree(bank-\u003edriver_priv);"},{"line_number":204,"context_line":"\t\tbank-\u003edriver_priv \u003d NULL;"},{"line_number":205,"context_line":"\t}"},{"line_number":206,"context_line":"}"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"FLASH_BANK_COMMAND_HANDLER(pac55xx_flash_bank_command)"},{"line_number":209,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d9d39f2a_af4a875c","line":206,"range":{"start_line":200,"start_character":0,"end_line":206,"end_character":1},"in_reply_to":"f936c51c_2a13bdfe","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":true,"context_lines":[{"line_number":33,"context_line":"#define FLASH_ERASE_TIMEOUT\t20\t// vendor specifies 2ms maximum for erase of a single page -\u003e choose 20 to be safe"},{"line_number":34,"context_line":"#define FLASH_WRITE_TIMEOUT\t20\t// no upper limit specified - 20 seems to work fine"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"struct pac55xx_flash_info {"},{"line_number":37,"context_line":"\tbool is_probed;"},{"line_number":38,"context_line":"};"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"/** ***********************************************************************************************"},{"line_number":41,"context_line":" * @brief Wait until the flash controller is not busy anymore."}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e13aaee0_2996f097","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":2},"updated":"2026-09-02 15:45:38.000000000","message":"Remove, not allocated in swm050.c like version","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":33,"context_line":"#define FLASH_ERASE_TIMEOUT\t20\t// vendor specifies 2ms maximum for erase of a single page -\u003e choose 20 to be safe"},{"line_number":34,"context_line":"#define FLASH_WRITE_TIMEOUT\t20\t// no upper limit specified - 20 seems to work fine"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"struct pac55xx_flash_info {"},{"line_number":37,"context_line":"\tbool is_probed;"},{"line_number":38,"context_line":"};"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"/** ***********************************************************************************************"},{"line_number":41,"context_line":" * @brief Wait until the flash controller is not busy anymore."}],"source_content_type":"text/x-csrc","patch_set":2,"id":"0ec0da4b_ca7aecbd","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":2},"in_reply_to":"e13aaee0_2996f097","updated":"2026-09-02 17:39:53.000000000","message":"Done","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":true,"context_lines":[{"line_number":61,"context_line":"\t\t\t(status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY) \u003d\u003d 0)"},{"line_number":62,"context_line":"\t\t\treturn ret;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"\t\t--timeout;"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"\t\tif ((timeval_ms() - start_time) \u003e timeout) {"},{"line_number":67,"context_line":"\t\t\tLOG_ERROR(\"Timed out waiting for flash\");"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1f02200f_cef090a1","line":64,"range":{"start_line":64,"start_character":2,"end_line":64,"end_character":12},"updated":"2026-09-02 15:45:38.000000000","message":"Remove!","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":61,"context_line":"\t\t\t(status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY) \u003d\u003d 0)"},{"line_number":62,"context_line":"\t\t\treturn ret;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"\t\t--timeout;"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"\t\tif ((timeval_ms() - start_time) \u003e timeout) {"},{"line_number":67,"context_line":"\t\t\tLOG_ERROR(\"Timed out waiting for flash\");"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"242f25db_8617385b","line":64,"range":{"start_line":64,"start_character":2,"end_line":64,"end_character":12},"in_reply_to":"1f02200f_cef090a1","updated":"2026-09-02 17:39:53.000000000","message":"Done","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":true,"context_lines":[{"line_number":171,"context_line":"\treturn ERROR_OK;"},{"line_number":172,"context_line":"}"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"int pac55xx_auto_probe(struct flash_bank *bank)"},{"line_number":175,"context_line":"{"},{"line_number":176,"context_line":"\tstruct pac55xx_flash_info *flash_info \u003d bank-\u003edriver_priv;"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"\tif (!flash_info-\u003eis_probed)"},{"line_number":179,"context_line":"\t\treturn pac55xx_probe(bank);"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"\treturn ERROR_OK;"},{"line_number":182,"context_line":"}"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"FLASH_BANK_COMMAND_HANDLER(pac55xx_flash_bank_command)"},{"line_number":185,"context_line":"{"},{"line_number":186,"context_line":"\tuint32_t num_pages \u003d 128;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"982d8842_c8273a57","line":183,"range":{"start_line":174,"start_character":0,"end_line":183,"end_character":0},"updated":"2026-09-02 15:45:38.000000000","message":"Now this is useless, just use `.auto_probe \u003d pac55xx_probe`\n\nDid you tested this version? I bet OpenOCD fails with segmentation fail in all flash ops except the probe because `flash_info` is NULL and dereferenced here. Please never submit untested code!","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":171,"context_line":"\treturn ERROR_OK;"},{"line_number":172,"context_line":"}"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"int pac55xx_auto_probe(struct flash_bank *bank)"},{"line_number":175,"context_line":"{"},{"line_number":176,"context_line":"\tstruct pac55xx_flash_info *flash_info \u003d bank-\u003edriver_priv;"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"\tif (!flash_info-\u003eis_probed)"},{"line_number":179,"context_line":"\t\treturn pac55xx_probe(bank);"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"\treturn ERROR_OK;"},{"line_number":182,"context_line":"}"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"FLASH_BANK_COMMAND_HANDLER(pac55xx_flash_bank_command)"},{"line_number":185,"context_line":"{"},{"line_number":186,"context_line":"\tuint32_t num_pages \u003d 128;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"2b318643_e2a697c8","line":183,"range":{"start_line":174,"start_character":0,"end_line":183,"end_character":0},"in_reply_to":"982d8842_c8273a57","updated":"2026-09-02 17:39:53.000000000","message":"Done","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":true,"context_lines":[{"line_number":192,"context_line":"\tbank-\u003ewrite_end_alignment \u003d 16;"},{"line_number":193,"context_line":"\tbank-\u003enum_sectors \u003d num_pages;"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"\tfree(bank-\u003esectors);"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"\tbank-\u003esectors \u003d alloc_block_array(0, page_size, num_pages);"},{"line_number":198,"context_line":"\tif (!bank-\u003esectors)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"ab2a5124_229a99c7","line":195,"range":{"start_line":195,"start_character":1,"end_line":195,"end_character":21},"updated":"2026-09-02 15:45:38.000000000","message":"Now useless. (I know, it\u0027s in swm050.c)","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":192,"context_line":"\tbank-\u003ewrite_end_alignment \u003d 16;"},{"line_number":193,"context_line":"\tbank-\u003enum_sectors \u003d num_pages;"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"\tfree(bank-\u003esectors);"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"\tbank-\u003esectors \u003d alloc_block_array(0, page_size, num_pages);"},{"line_number":198,"context_line":"\tif (!bank-\u003esectors)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6d4373e8_6f997dcb","line":195,"range":{"start_line":195,"start_character":1,"end_line":195,"end_character":21},"in_reply_to":"ab2a5124_229a99c7","updated":"2026-09-02 17:39:53.000000000","message":"Done","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"caab49c8af220e3596ff7557bb3c68efa59cdf4d","unresolved":true,"context_lines":[{"line_number":12,"context_line":"#include \u003chelper/bits.h\u003e"},{"line_number":13,"context_line":"#include \u003chelper/time_support.h\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"#define PAC55XX_FLASH_BASE\t\t  (0x00000000UL)"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"#define PAC55XX_PERIPH_BASE\t\t (0x40000000UL)"},{"line_number":18,"context_line":"#define PAC55XX_MEMCTL_BASE\t\t (PAC55XX_PERIPH_BASE + 0xD0000)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"b1b7722c_11e38027","line":15,"updated":"2026-09-03 08:31:07.000000000","message":"Please remove the useless parentheses here and below.","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"91050d50680a1c4b3efcea281c6d88ec99fbc00b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#include \u003chelper/bits.h\u003e"},{"line_number":13,"context_line":"#include \u003chelper/time_support.h\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"#define PAC55XX_FLASH_BASE\t\t  (0x00000000UL)"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"#define PAC55XX_PERIPH_BASE\t\t (0x40000000UL)"},{"line_number":18,"context_line":"#define PAC55XX_MEMCTL_BASE\t\t (PAC55XX_PERIPH_BASE + 0xD0000)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"1cd42ece_2549a861","line":15,"in_reply_to":"b1b7722c_11e38027","updated":"2026-09-03 12:27:51.000000000","message":"Done - removed from all defines that only define a number and not an expression","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":30,"context_line":"#define PAC55XX_MEMCTL_FLASHERASE_ERASE\t\t\t\t0x8C799CA7"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"// Flash timeout values in milliseconds."},{"line_number":33,"context_line":"#define FLASH_ERASE_TIMEOUT\t20\t// vendor specifies 2ms maximum for erase of a single page -\u003e choose 20 to be safe"},{"line_number":34,"context_line":"#define FLASH_WRITE_TIMEOUT\t20\t// no upper limit specified - 20 seems to work fine"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"/** ***********************************************************************************************"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"211eac4d_db350ba9","line":33,"updated":"2026-09-03 13:13:08.000000000","message":"Please add the suffix \u0027_MS\u0027 to this and next macros\n`#define FLASH_ERASE_TIMEOUT_MS 20`","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":30,"context_line":"#define PAC55XX_MEMCTL_FLASHERASE_ERASE\t\t\t\t0x8C799CA7"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"// Flash timeout values in milliseconds."},{"line_number":33,"context_line":"#define FLASH_ERASE_TIMEOUT\t20\t// vendor specifies 2ms maximum for erase of a single page -\u003e choose 20 to be safe"},{"line_number":34,"context_line":"#define FLASH_WRITE_TIMEOUT\t20\t// no upper limit specified - 20 seems to work fine"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"/** ***********************************************************************************************"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"864a84d5_bc68a01b","line":33,"in_reply_to":"211eac4d_db350ba9","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":39,"context_line":" * @param bank current flash bank"},{"line_number":40,"context_line":" * @return ERROR_OK in case of success, ERROR_XXX code otherwise"},{"line_number":41,"context_line":" *************************************************************************************************/"},{"line_number":42,"context_line":"static int pac55xx_wait_for_operation_to_finish(struct flash_bank *bank, int timeout)"},{"line_number":43,"context_line":"{"},{"line_number":44,"context_line":"\tconst int64_t start_time \u003d timeval_ms();"},{"line_number":45,"context_line":"\tint ret \u003d ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"70fc808b_0eb24743","line":42,"updated":"2026-09-03 13:13:08.000000000","message":"use `unsigned int` for the timeout, and please rename the variable as `timeout_ms`","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":39,"context_line":" * @param bank current flash bank"},{"line_number":40,"context_line":" * @return ERROR_OK in case of success, ERROR_XXX code otherwise"},{"line_number":41,"context_line":" *************************************************************************************************/"},{"line_number":42,"context_line":"static int pac55xx_wait_for_operation_to_finish(struct flash_bank *bank, int timeout)"},{"line_number":43,"context_line":"{"},{"line_number":44,"context_line":"\tconst int64_t start_time \u003d timeval_ms();"},{"line_number":45,"context_line":"\tint ret \u003d ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"bd216eed_40b1e117","line":42,"in_reply_to":"70fc808b_0eb24743","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":42,"context_line":"static int pac55xx_wait_for_operation_to_finish(struct flash_bank *bank, int timeout)"},{"line_number":43,"context_line":"{"},{"line_number":44,"context_line":"\tconst int64_t start_time \u003d timeval_ms();"},{"line_number":45,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"\twhile (true) {"},{"line_number":48,"context_line":"\t\tuint32_t status;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"37aa1303_319200a9","line":45,"updated":"2026-09-03 13:13:08.000000000","message":"No need to initialize it, as it get assigned below.\nEven, no need to declare it here, as you can have directly below:\n`int ret \u003d target_read_u32(bank-\u003etarget, PAC55XX_MEMCTL_FLASHSTATUS, \u0026status);`","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":42,"context_line":"static int pac55xx_wait_for_operation_to_finish(struct flash_bank *bank, int timeout)"},{"line_number":43,"context_line":"{"},{"line_number":44,"context_line":"\tconst int64_t start_time \u003d timeval_ms();"},{"line_number":45,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"\twhile (true) {"},{"line_number":48,"context_line":"\t\tuint32_t status;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"5e053e2e_52b2b098","line":45,"in_reply_to":"37aa1303_319200a9","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":55,"context_line":"\t\t// check the busy-bits"},{"line_number":56,"context_line":"\t\tif ((status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_ERASEBUSY) \u003d\u003d 0 \u0026\u0026"},{"line_number":57,"context_line":"\t\t\t(status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY) \u003d\u003d 0)"},{"line_number":58,"context_line":"\t\t\treturn ret;"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"\t\tif ((timeval_ms() - start_time) \u003e timeout) {"},{"line_number":61,"context_line":"\t\t\tLOG_ERROR(\"Timed out waiting for flash\");"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"d98c1649_af2ecb70","line":58,"updated":"2026-09-03 13:13:08.000000000","message":"This should be\n`return ERROR_OK;`","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":55,"context_line":"\t\t// check the busy-bits"},{"line_number":56,"context_line":"\t\tif ((status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_ERASEBUSY) \u003d\u003d 0 \u0026\u0026"},{"line_number":57,"context_line":"\t\t\t(status \u0026 PAC55XX_MEMCTL_FLASHSTATUS_WRITEBUSY) \u003d\u003d 0)"},{"line_number":58,"context_line":"\t\t\treturn ret;"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"\t\tif ((timeval_ms() - start_time) \u003e timeout) {"},{"line_number":61,"context_line":"\t\t\tLOG_ERROR(\"Timed out waiting for flash\");"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ce11e391_7c193f20","line":58,"in_reply_to":"d98c1649_af2ecb70","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"\t\tif ((timeval_ms() - start_time) \u003e timeout) {"},{"line_number":61,"context_line":"\t\t\tLOG_ERROR(\"Timed out waiting for flash\");"},{"line_number":62,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":63,"context_line":"\t\t}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"\t\tkeep_alive();"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3070df40_ee22fef2","line":62,"updated":"2026-09-03 13:13:08.000000000","message":"use `ERROR_TIMEOUT_REACHED` here","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"\t\tif ((timeval_ms() - start_time) \u003e timeout) {"},{"line_number":61,"context_line":"\t\t\tLOG_ERROR(\"Timed out waiting for flash\");"},{"line_number":62,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":63,"context_line":"\t\t}"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"\t\tkeep_alive();"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"5f6927dd_4bd07854","line":62,"in_reply_to":"3070df40_ee22fef2","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"int pac55xx_erase(struct flash_bank *bank, unsigned int first, unsigned int last)"},{"line_number":70,"context_line":"{"},{"line_number":71,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"\t// target must be halted"},{"line_number":74,"context_line":"\tif (bank-\u003etarget-\u003estate !\u003d TARGET_HALTED) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"58a375c4_0dff158f","line":71,"updated":"2026-09-03 13:13:08.000000000","message":"no need to init as it get assigned below.\nMove the declaration below at the first assignment","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"int pac55xx_erase(struct flash_bank *bank, unsigned int first, unsigned int last)"},{"line_number":70,"context_line":"{"},{"line_number":71,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"\t// target must be halted"},{"line_number":74,"context_line":"\tif (bank-\u003etarget-\u003estate !\u003d TARGET_HALTED) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"cca2ea99_392e02a9","line":71,"in_reply_to":"58a375c4_0dff158f","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":100,"context_line":"\t}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"flash_lock:"},{"line_number":103,"context_line":"\t{"},{"line_number":104,"context_line":"\t\t// lock the flash"},{"line_number":105,"context_line":"\t\tint ret_lock_flash \u003d target_write_u32(bank-\u003etarget, PAC55XX_MEMCTL_FLASHLOCK, PAC55XX_MEMCTL_FLASHLOCK_LOCKED);"},{"line_number":106,"context_line":"\t\tif (ret \u003d\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"4e6f8b3c_cdcbc1f5","line":103,"updated":"2026-09-03 13:13:08.000000000","message":"Why these extra parenthesis `{}` here?","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"ff3a9a9c3dc30df284f64a7d2904b0c013de73e7","unresolved":true,"context_lines":[{"line_number":100,"context_line":"\t}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"flash_lock:"},{"line_number":103,"context_line":"\t{"},{"line_number":104,"context_line":"\t\t// lock the flash"},{"line_number":105,"context_line":"\t\tint ret_lock_flash \u003d target_write_u32(bank-\u003etarget, PAC55XX_MEMCTL_FLASHLOCK, PAC55XX_MEMCTL_FLASHLOCK_LOCKED);"},{"line_number":106,"context_line":"\t\tif (ret \u003d\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"c7579626_50e12f25","line":103,"in_reply_to":"4e6f8b3c_cdcbc1f5","updated":"2026-09-04 05:02:11.000000000","message":"If we remove parenthesis the very old gcc 4.8.4 complains:\n`src/flash/nor/stm32f1x.c:336:2: error: a label can only be part of a statement and a declaration is not a statement`\nNo idea what gcc version became less picky on labels. I\u0027d like to leave it as is.","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"328d63026a7af07d7b4f5dec99ef9b82450d15ec","unresolved":true,"context_lines":[{"line_number":100,"context_line":"\t}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"flash_lock:"},{"line_number":103,"context_line":"\t{"},{"line_number":104,"context_line":"\t\t// lock the flash"},{"line_number":105,"context_line":"\t\tint ret_lock_flash \u003d target_write_u32(bank-\u003etarget, PAC55XX_MEMCTL_FLASHLOCK, PAC55XX_MEMCTL_FLASHLOCK_LOCKED);"},{"line_number":106,"context_line":"\t\tif (ret \u003d\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"f1077d25_f9135bab","line":103,"in_reply_to":"c7579626_50e12f25","updated":"2026-09-04 07:59:26.000000000","message":"I vaguely remember there was this issue with GCC, but I incorrectly remember it was the comment after the label not the declaration. So I failed to reproduce it locally and I put this comment.\nAccordingly to\nhttps://stackoverflow.com/questions/46341364/label-can-only-be-used-as-part-of-a-statement-error\nit is enough to add a semicolon \u0027;\u0027 after the label in the same line:\n```\nflash_lock:;\n\t// lock the flash\n\tint ret_lock_flash \u003d ...;\n```\nor on separate line:\n```\nflash_lock:\n\t;\n\t// lock the flash\n\tint ret_lock_flash \u003d ...;\n```\n\nThis would reduce the indentation level.\nCheckpatch accept both but in the first example does not accept a space between \u0027:\u0027 and \u0027;\u0027.\nAnd, interesting, this can be used for the declarations in a switch\u0027s case too, where the indentation depth can be more annoying than in this patch. I have met this while re-aligning switch/case indentation in an old series.\nIf we agree on adding the \u0027;\u0027 we could mention it in the coding style and then I will review the switch/case.","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6924987d5bb8171812fb9ed27700d62e1a79c415","unresolved":false,"context_lines":[{"line_number":100,"context_line":"\t}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"flash_lock:"},{"line_number":103,"context_line":"\t{"},{"line_number":104,"context_line":"\t\t// lock the flash"},{"line_number":105,"context_line":"\t\tint ret_lock_flash \u003d target_write_u32(bank-\u003etarget, PAC55XX_MEMCTL_FLASHLOCK, PAC55XX_MEMCTL_FLASHLOCK_LOCKED);"},{"line_number":106,"context_line":"\t\tif (ret \u003d\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"afd46bc9_3a2548e8","line":103,"in_reply_to":"ec18ff8d_86045c40","updated":"2026-09-04 09:51:43.000000000","message":"ok, let\u0027s keep it as is here","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"afe27d98e18ddb14fb58d5c66304ba227aa7b7af","unresolved":true,"context_lines":[{"line_number":100,"context_line":"\t}"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"flash_lock:"},{"line_number":103,"context_line":"\t{"},{"line_number":104,"context_line":"\t\t// lock the flash"},{"line_number":105,"context_line":"\t\tint ret_lock_flash \u003d target_write_u32(bank-\u003etarget, PAC55XX_MEMCTL_FLASHLOCK, PAC55XX_MEMCTL_FLASHLOCK_LOCKED);"},{"line_number":106,"context_line":"\t\tif (ret \u003d\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ec18ff8d_86045c40","line":103,"in_reply_to":"f1077d25_f9135bab","updated":"2026-09-04 08:46:05.000000000","message":"Honestly the semicolon alone looks somewhat weird in the comparison with parenthesis, which are intuitive and only used in the existing OpenOCD code.\nAnd yes, if the indentation level gets too big (which is not the case here), then `;` is good trick, why not. But please don\u0027t require `;` as the only correct in the coding style. We already have more than enough rules to comply...","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"int pac55xx_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)"},{"line_number":114,"context_line":"{"},{"line_number":115,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":116,"context_line":"\t// target must be halted"},{"line_number":117,"context_line":"\tif (bank-\u003etarget-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":118,"context_line":"\t\tLOG_ERROR(\"Target must be halted to write.\");"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"e43dcda0_3efa189e","line":115,"updated":"2026-09-03 13:13:08.000000000","message":"ditto","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"int pac55xx_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)"},{"line_number":114,"context_line":"{"},{"line_number":115,"context_line":"\tint ret \u003d ERROR_OK;"},{"line_number":116,"context_line":"\t// target must be halted"},{"line_number":117,"context_line":"\tif (bank-\u003etarget-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":118,"context_line":"\t\tLOG_ERROR(\"Target must be halted to write.\");"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"184a6599_e23eb33c","line":115,"in_reply_to":"e43dcda0_3efa189e","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":135,"context_line":"\tfor (uint32_t flash_address \u003d PAC55XX_FLASH_BASE + offset;"},{"line_number":136,"context_line":"\t\t flash_address \u003c PAC55XX_FLASH_BASE + offset + count;"},{"line_number":137,"context_line":"\t\t flash_address +\u003d 16, buffer +\u003d 16"},{"line_number":138,"context_line":"\t) {"},{"line_number":139,"context_line":"\t\t// wait until flash is not busy anymore"},{"line_number":140,"context_line":"\t\tret \u003d pac55xx_wait_for_operation_to_finish(bank, FLASH_WRITE_TIMEOUT);"},{"line_number":141,"context_line":"\t\tif (ret !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"6438088a_5c3c28c6","line":138,"updated":"2026-09-03 13:13:08.000000000","message":"use double TAB for the `for` part and keep the lines as:\n```\n\tfor (uint32_t flash_address \u003d PAC55XX_FLASH_BASE + offset;\n\t\t\tflash_address \u003c PAC55XX_FLASH_BASE + offset + count;\n\t\t\tflash_address +\u003d 16, buffer +\u003d 16) {\n\t\t// wait until flash is not busy anymore\n```","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":135,"context_line":"\tfor (uint32_t flash_address \u003d PAC55XX_FLASH_BASE + offset;"},{"line_number":136,"context_line":"\t\t flash_address \u003c PAC55XX_FLASH_BASE + offset + count;"},{"line_number":137,"context_line":"\t\t flash_address +\u003d 16, buffer +\u003d 16"},{"line_number":138,"context_line":"\t) {"},{"line_number":139,"context_line":"\t\t// wait until flash is not busy anymore"},{"line_number":140,"context_line":"\t\tret \u003d pac55xx_wait_for_operation_to_finish(bank, FLASH_WRITE_TIMEOUT);"},{"line_number":141,"context_line":"\t\tif (ret !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"bb3cd28b_2348c8cf","line":138,"in_reply_to":"6438088a_5c3c28c6","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"c7660e03fa69df844b886d8b3f2ec1f1a02f590e","unresolved":true,"context_lines":[{"line_number":153,"context_line":"\t\tgoto flash_lock;"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"flash_lock:"},{"line_number":156,"context_line":"\t{"},{"line_number":157,"context_line":"\t\t// lock the flash"},{"line_number":158,"context_line":"\t\tint ret_lock_flash \u003d target_write_u32(bank-\u003etarget, PAC55XX_MEMCTL_FLASHLOCK, PAC55XX_MEMCTL_FLASHLOCK_LOCKED);"},{"line_number":159,"context_line":"\t\tif (ret \u003d\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"cf484f58_fc9f4ce0","line":156,"updated":"2026-09-03 13:13:08.000000000","message":"ditto","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"6924987d5bb8171812fb9ed27700d62e1a79c415","unresolved":false,"context_lines":[{"line_number":153,"context_line":"\t\tgoto flash_lock;"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"flash_lock:"},{"line_number":156,"context_line":"\t{"},{"line_number":157,"context_line":"\t\t// lock the flash"},{"line_number":158,"context_line":"\t\tint ret_lock_flash \u003d target_write_u32(bank-\u003etarget, PAC55XX_MEMCTL_FLASHLOCK, PAC55XX_MEMCTL_FLASHLOCK_LOCKED);"},{"line_number":159,"context_line":"\t\tif (ret \u003d\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"d46e8a82_99c7bb03","line":156,"in_reply_to":"cf484f58_fc9f4ce0","updated":"2026-09-04 09:51:43.000000000","message":"Let\u0027s drop this comment","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"3ec91ae6b0909e79546472775139a07cab4b64b2","unresolved":true,"context_lines":[{"line_number":197,"context_line":"\t.flash_bank_command \u003d pac55xx_flash_bank_command,"},{"line_number":198,"context_line":"\t.erase \u003d pac55xx_erase,"},{"line_number":199,"context_line":"\t.write \u003d pac55xx_write,"},{"line_number":200,"context_line":"\t.probe \u003d pac55xx_probe,"},{"line_number":201,"context_line":"\t.erase_check \u003d default_flash_blank_check,"},{"line_number":202,"context_line":"\t.auto_probe \u003d pac55xx_probe,"},{"line_number":203,"context_line":"\t.free_driver_priv \u003d default_flash_free_driver_priv,"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"42d4e2d9_6e1a986f","line":200,"updated":"2026-09-03 16:30:39.000000000","message":"Add\n```\n.read \u003d default_flash_read,\n```\notherwise using `flash mdw/h/b`, `flash memory_read` or `flash read_bang` causes OpenOCD to die with segfault","commit_id":"6978467dcfeb50654049162927adc4849656dfde"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"c32e31484b2344e4575554216974ef346801b7ef","unresolved":false,"context_lines":[{"line_number":197,"context_line":"\t.flash_bank_command \u003d pac55xx_flash_bank_command,"},{"line_number":198,"context_line":"\t.erase \u003d pac55xx_erase,"},{"line_number":199,"context_line":"\t.write \u003d pac55xx_write,"},{"line_number":200,"context_line":"\t.probe \u003d pac55xx_probe,"},{"line_number":201,"context_line":"\t.erase_check \u003d default_flash_blank_check,"},{"line_number":202,"context_line":"\t.auto_probe \u003d pac55xx_probe,"},{"line_number":203,"context_line":"\t.free_driver_priv \u003d default_flash_free_driver_priv,"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ab9a0148_f2ec83c6","line":200,"in_reply_to":"42d4e2d9_6e1a986f","updated":"2026-09-09 16:08:46.000000000","message":"Done","commit_id":"6978467dcfeb50654049162927adc4849656dfde"}],"src/flash/nor/stm32f1x.c":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":true,"context_lines":[{"line_number":381,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":382,"context_line":"\t\treturn retval;"},{"line_number":383,"context_line":"\tretval \u003d target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_KEYR), KEY2);"},{"line_number":384,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":385,"context_line":"\t\tgoto flash_lock;"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"\tfor (unsigned int i \u003d first; i \u003c\u003d last; i++) {"},{"line_number":388,"context_line":"\t\tretval \u003d target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_CR), FLASH_PER);"},{"line_number":389,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":390,"context_line":"\t\t\tgoto flash_lock;"},{"line_number":391,"context_line":"\t\tretval \u003d target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_AR),"},{"line_number":392,"context_line":"\t\t\t\tbank-\u003ebase + bank-\u003esectors[i].offset);"},{"line_number":393,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":394,"context_line":"\t\t\tgoto flash_lock;"},{"line_number":395,"context_line":"\t\tretval \u003d target_write_u32(target,"},{"line_number":396,"context_line":"\t\t\t\tstm32x_get_flash_reg(bank, STM32_FLASH_CR), FLASH_PER | FLASH_STRT);"},{"line_number":397,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":398,"context_line":"\t\t\tgoto flash_lock;"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"\t\tretval \u003d stm32x_wait_status_busy(bank, FLASH_ERASE_TIMEOUT);"},{"line_number":401,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":402,"context_line":"\t\t\tgoto flash_lock;"},{"line_number":403,"context_line":"\t}"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"flash_lock:"},{"line_number":406,"context_line":"\t{"},{"line_number":407,"context_line":"\t\tint retval2 \u003d target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_CR), FLASH_LOCK);"},{"line_number":408,"context_line":"\t\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":409,"context_line":"\t\t\tretval \u003d retval2;"},{"line_number":410,"context_line":"\t}"},{"line_number":411,"context_line":"\treturn retval;"},{"line_number":412,"context_line":"}"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1fca15c3_80105ba0","line":410,"range":{"start_line":384,"start_character":1,"end_line":410,"end_character":2},"updated":"2026-09-02 15:45:38.000000000","message":"Take inspiration here. Also see the work with `retval`","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"06097b0805d4b0fa449d14accb5eef27a1e93394","unresolved":false,"context_lines":[{"line_number":381,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":382,"context_line":"\t\treturn retval;"},{"line_number":383,"context_line":"\tretval \u003d target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_KEYR), KEY2);"},{"line_number":384,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":385,"context_line":"\t\tgoto flash_lock;"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"\tfor (unsigned int i \u003d first; i \u003c\u003d last; i++) {"},{"line_number":388,"context_line":"\t\tretval \u003d target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_CR), FLASH_PER);"},{"line_number":389,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":390,"context_line":"\t\t\tgoto flash_lock;"},{"line_number":391,"context_line":"\t\tretval \u003d target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_AR),"},{"line_number":392,"context_line":"\t\t\t\tbank-\u003ebase + bank-\u003esectors[i].offset);"},{"line_number":393,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":394,"context_line":"\t\t\tgoto flash_lock;"},{"line_number":395,"context_line":"\t\tretval \u003d target_write_u32(target,"},{"line_number":396,"context_line":"\t\t\t\tstm32x_get_flash_reg(bank, STM32_FLASH_CR), FLASH_PER | FLASH_STRT);"},{"line_number":397,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":398,"context_line":"\t\t\tgoto flash_lock;"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"\t\tretval \u003d stm32x_wait_status_busy(bank, FLASH_ERASE_TIMEOUT);"},{"line_number":401,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":402,"context_line":"\t\t\tgoto flash_lock;"},{"line_number":403,"context_line":"\t}"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"flash_lock:"},{"line_number":406,"context_line":"\t{"},{"line_number":407,"context_line":"\t\tint retval2 \u003d target_write_u32(target, stm32x_get_flash_reg(bank, STM32_FLASH_CR), FLASH_LOCK);"},{"line_number":408,"context_line":"\t\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":409,"context_line":"\t\t\tretval \u003d retval2;"},{"line_number":410,"context_line":"\t}"},{"line_number":411,"context_line":"\treturn retval;"},{"line_number":412,"context_line":"}"},{"line_number":413,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1b803407_49adba26","line":410,"range":{"start_line":384,"start_character":1,"end_line":410,"end_character":2},"in_reply_to":"1fca15c3_80105ba0","updated":"2026-09-02 17:39:53.000000000","message":"Done - Thanks","commit_id":"89f727174fe59671e93136dea941d2b867b6459a"}],"tcl/target/pac55xx.cfg":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# SPDX-License-Identifier: GPL-2.0-or-later"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Qorvo PAC55xx series: ARM Cortex-M4 @ 150 MHz"},{"line_number":4,"context_line":"# Devices support SWD transport only"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"4969d958_6f50b981","line":1,"updated":"2026-08-31 16:25:23.000000000","message":"This file should go to vendor folder:\nhttps://openocd.org/doc/doxygen/html/config_files.html#target_configs","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# SPDX-License-Identifier: GPL-2.0-or-later"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Qorvo PAC55xx series: ARM Cortex-M4 @ 150 MHz"},{"line_number":4,"context_line":"# Devices support SWD transport only"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"9a0de875_45de31c8","line":1,"in_reply_to":"4969d958_6f50b981","updated":"2026-09-02 14:49:12.000000000","message":"Done - it is now in `tcl/target/qorvo/pac55xx.cfg`","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# SPDX-License-Identifier: GPL-2.0-or-later"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Qorvo PAC55xx series: ARM Cortex-M4 @ 150 MHz"},{"line_number":4,"context_line":"# Devices support SWD transport only"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"626c96ce_9aba342c","line":1,"in_reply_to":"9a0de875_45de31c8","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":6,"context_line":"transport select swd"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"source [find target/swj-dp.tcl]"},{"line_number":9,"context_line":"source [find mem\\_helper.tcl]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"if { [info exists CHIPNAME] } {"},{"line_number":12,"context_line":"    set _CHIPNAME $CHIPNAME"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"a9a60bf6_572a0ece","line":9,"updated":"2026-08-31 16:25:23.000000000","message":"mem_helper does not seem to be used in this cfg.\nRemove (or at least remove backslash from mem_helper.tcl name).","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":6,"context_line":"transport select swd"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"source [find target/swj-dp.tcl]"},{"line_number":9,"context_line":"source [find mem\\_helper.tcl]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"if { [info exists CHIPNAME] } {"},{"line_number":12,"context_line":"    set _CHIPNAME $CHIPNAME"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"4d618906_1ec1c5f7","line":9,"in_reply_to":"836643b5_d6418ef5","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":6,"context_line":"transport select swd"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"source [find target/swj-dp.tcl]"},{"line_number":9,"context_line":"source [find mem\\_helper.tcl]"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"if { [info exists CHIPNAME] } {"},{"line_number":12,"context_line":"    set _CHIPNAME $CHIPNAME"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"836643b5_d6418ef5","line":9,"in_reply_to":"a9a60bf6_572a0ece","updated":"2026-09-02 14:49:12.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"517d2551b9c8ea2984c8c5872b64da176f5ca285","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    -work-area-phys 0x20000000 \\"},{"line_number":39,"context_line":"    -work-area-size $_WORKAREASIZE \\"},{"line_number":40,"context_line":"    -work-area-backup 0 \\"},{"line_number":41,"context_line":"    -rtos Zephyr"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"flash bank $_CHIPNAME.flash pac55xx 0x00000000 0 0 0 $_TARGETNAME"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"13b21258_a2fcd5b8","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":16},"updated":"2026-08-31 16:25:23.000000000","message":"Probably a leftover from your config?","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"0da1d48a9af06bf44352ca185928eabf81738379","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    -work-area-phys 0x20000000 \\"},{"line_number":39,"context_line":"    -work-area-size $_WORKAREASIZE \\"},{"line_number":40,"context_line":"    -work-area-backup 0 \\"},{"line_number":41,"context_line":"    -rtos Zephyr"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"flash bank $_CHIPNAME.flash pac55xx 0x00000000 0 0 0 $_TARGETNAME"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"6d21bc5b_ebbd65fb","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":16},"in_reply_to":"13b21258_a2fcd5b8","updated":"2026-09-02 14:49:12.000000000","message":"Done - removed","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"1ecf03f8ace31431321d80cc33b2b60db70f92ac","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    -work-area-phys 0x20000000 \\"},{"line_number":39,"context_line":"    -work-area-size $_WORKAREASIZE \\"},{"line_number":40,"context_line":"    -work-area-backup 0 \\"},{"line_number":41,"context_line":"    -rtos Zephyr"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"flash bank $_CHIPNAME.flash pac55xx 0x00000000 0 0 0 $_TARGETNAME"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"36f7de87_af45b331","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":16},"in_reply_to":"6d21bc5b_ebbd65fb","updated":"2026-09-02 15:45:38.000000000","message":"Done","commit_id":"1b3c456810ee45967cdad442bd0ba32e03d6630d"}],"tcl/target/qorvo/pac55xx.cfg":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"4740efd87dfada0ba3d33495872c27c4342138e5","unresolved":true,"context_lines":[{"line_number":26,"context_line":"}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID"},{"line_number":29,"context_line":"dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"set _TARGETNAME $_CHIPNAME.cpu"},{"line_number":32,"context_line":"target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"c468f5d0_ad2ab6f1","line":29,"range":{"start_line":29,"start_character":26,"end_line":29,"end_character":41},"updated":"2026-09-02 20:22:57.000000000","message":"Please rebase your patch on https://review.openocd.org/c/openocd/+/9852 which is ready to be merged and change `-chain-position` to `-tap`.","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"3ec91ae6b0909e79546472775139a07cab4b64b2","unresolved":true,"context_lines":[{"line_number":26,"context_line":"}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID"},{"line_number":29,"context_line":"dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"set _TARGETNAME $_CHIPNAME.cpu"},{"line_number":32,"context_line":"target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"c43b9cd5_adc09755","line":29,"range":{"start_line":29,"start_character":26,"end_line":29,"end_character":41},"in_reply_to":"7efeafdc_49ed1d1a","updated":"2026-09-03 16:30:39.000000000","message":"Unfortunately you also updated many Marc\u0027s patches.\nNot a disaster, just big load for Jenkins, we can cope with the rest.\n\nFor the next time please respect:\nThe dependency commit must be checked-out intact to keep the same SHA as you see here in gerrit. It should not be cherry-picked or rebased.\nYou rebased whole series to the current git master therefore gerrit treat it as a newer version and you are now uploader (committer).\n\nWe want to merge Marc\u0027s series ASAP anyway so please wait with uploading the newer version of this patch until the series gets merged.","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"tomas.vanek.oocd@gmail.com","username":"vanekt"},"change_message_id":"aaefafabb3de587e1039152ee08614c39ccebb4c","unresolved":false,"context_lines":[{"line_number":26,"context_line":"}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID"},{"line_number":29,"context_line":"dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"set _TARGETNAME $_CHIPNAME.cpu"},{"line_number":32,"context_line":"target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"fbd5d247_db122861","line":29,"range":{"start_line":29,"start_character":26,"end_line":29,"end_character":41},"in_reply_to":"c43b9cd5_adc09755","updated":"2026-09-07 13:40:28.000000000","message":"Marc\u0027s series has been merged, please go ahead.","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"91050d50680a1c4b3efcea281c6d88ec99fbc00b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID"},{"line_number":29,"context_line":"dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"set _TARGETNAME $_CHIPNAME.cpu"},{"line_number":32,"context_line":"target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"7efeafdc_49ed1d1a","line":29,"range":{"start_line":29,"start_character":26,"end_line":29,"end_character":41},"in_reply_to":"c468f5d0_ad2ab6f1","updated":"2026-09-03 12:27:51.000000000","message":"Done","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"},{"author":{"_account_id":1002560,"name":"stfnbr","display_name":"stfnbr","email":"stfnbr@disroot.org","username":"stfnbr"},"change_message_id":"4230167c7f587da0586088437f8ee06512939463","unresolved":false,"context_lines":[{"line_number":26,"context_line":"}"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID"},{"line_number":29,"context_line":"dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"set _TARGETNAME $_CHIPNAME.cpu"},{"line_number":32,"context_line":"target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"d452d598_f063e3d3","line":29,"range":{"start_line":29,"start_character":26,"end_line":29,"end_character":41},"in_reply_to":"fbd5d247_db122861","updated":"2026-09-07 14:35:08.000000000","message":"I will only be able to check the feedback and test with the actual hardware starting tomorrow afternoon CEST. I hope this is ok for you.","commit_id":"008f37f10f8d4bebbbf3018e0ae462344ed232d1"}]}
