)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"76ad4b56_ba4b881e","updated":"2025-10-14 09:36:24.000000000","message":"Thanks for your contribution Gaetan.\n\nJust a quick review from by side.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5d2b95cd_eea136b0","updated":"2025-10-30 12:41:59.000000000","message":"Thank you for your review !\nI will take time to answer all and correct if need.\n\nIf you have any new remarks, tell me.\nI have try to answer everything, hope I didn\u0027t miss anything, tell me if it\u0027s the case !","commit_id":"6644a56be1099c733eeaabdacc00bfbcee5087a6"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98816976c705e0ab9ce83f3b14badfb348e3835b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"cd7dbdde_cc34fa6c","updated":"2025-10-31 20:48:04.000000000","message":"And please document the new flash driver in doc/openocd.texi, chapter 12.5.1 External Flash","commit_id":"ac67260c8e351c2ce18aa52b2c89249d755dc1ab"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"30a8df9b7657ce2f1b92dd22a4f11ca4ad466225","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"66bb86a7_10d795c1","updated":"2025-10-31 20:44:33.000000000","message":"Sorry I started my review while you\u0027ve been working on the new patch set. Sending comments as they were in hope they are still relevant","commit_id":"ac67260c8e351c2ce18aa52b2c89249d755dc1ab"}],"src/flash/nor/scqspi.c":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":49,"context_line":"#define SCOBCA1_SYSREG_CFGMEMMON(x) ((((x) \u0026 BIT(0)) \u003c\u003c 5))"},{"line_number":50,"context_line":"#define SCOBCA1_SYSREG_CFGMEMCTL    (0x4F000010)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"#define SCQSPI_DATA_MEM0_SS          (0x01)"},{"line_number":53,"context_line":"#define SCQSPI_CFG_MEM0              (0U)"},{"line_number":54,"context_line":"#define SCQSPI_CFG_MEM1              (1U)"},{"line_number":55,"context_line":"#define SCQSPI_ASR_IDLE              (0x00)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"2afff752_a6b16fbe","line":52,"updated":"2025-10-14 09:36:24.000000000","message":"Please remove all brackets if not needed.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"#define SCOBCA1_SYSREG_CFGMEMMON(x) ((((x) \u0026 BIT(0)) \u003c\u003c 5))"},{"line_number":50,"context_line":"#define SCOBCA1_SYSREG_CFGMEMCTL    (0x4F000010)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"#define SCQSPI_DATA_MEM0_SS          (0x01)"},{"line_number":53,"context_line":"#define SCQSPI_CFG_MEM0              (0U)"},{"line_number":54,"context_line":"#define SCQSPI_CFG_MEM1              (1U)"},{"line_number":55,"context_line":"#define SCQSPI_ASR_IDLE              (0x00)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"5f706da3_5dd7442e","line":52,"in_reply_to":"2afff752_a6b16fbe","updated":"2025-10-30 12:41:59.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":60,"context_line":"#define SCQSPI_ERASE_BLOCK_WAIT_MS   (800U)"},{"line_number":61,"context_line":"#define SCQSPI_ERASE_SECTOR_WAIT_MS  (10U)"},{"line_number":62,"context_line":"#define SCQSPI_PAGE_BUFFER_BYTE      (256U)"},{"line_number":63,"context_line":"#define SCQSPI_REG_READ_RETRY(count) (count)"},{"line_number":64,"context_line":"#define SCQSPI_CRC32_INIT            (0xFFFFFFFF)"},{"line_number":65,"context_line":"#define SCQSPI_CRC32_FINAL(crc)      (~(crc))"},{"line_number":66,"context_line":"#define SCQSPI_VERIFY_CHUNK_SIZE     (4096U)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4365f32d_a6800001","line":63,"updated":"2025-10-14 09:36:24.000000000","message":"Seems useless, what is the purpose of this?","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":60,"context_line":"#define SCQSPI_ERASE_BLOCK_WAIT_MS   (800U)"},{"line_number":61,"context_line":"#define SCQSPI_ERASE_SECTOR_WAIT_MS  (10U)"},{"line_number":62,"context_line":"#define SCQSPI_PAGE_BUFFER_BYTE      (256U)"},{"line_number":63,"context_line":"#define SCQSPI_REG_READ_RETRY(count) (count)"},{"line_number":64,"context_line":"#define SCQSPI_CRC32_INIT            (0xFFFFFFFF)"},{"line_number":65,"context_line":"#define SCQSPI_CRC32_FINAL(crc)      (~(crc))"},{"line_number":66,"context_line":"#define SCQSPI_VERIFY_CHUNK_SIZE     (4096U)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"1f88f99b_15852485","line":63,"in_reply_to":"4365f32d_a6800001","updated":"2025-10-30 12:41:59.000000000","message":"Even though SCQSPI_REG_READ_RETRY(count) is currently a no-op, it improves readability by making the code’s intent explicit and keeps the design flexible for future changes.\nI hope it\u0027s not a \"problem\" to keep it if possible.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":81,"context_line":" * Internal helper functions for scqspi flash driver implementation"},{"line_number":82,"context_line":" * -------------------------------------------------------------------------*/"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"static bool verify(struct target *target, uint32_t addr, uint32_t exp, uint32_t read_mask,"},{"line_number":85,"context_line":"\tuint32_t retry)"},{"line_number":86,"context_line":"{"},{"line_number":87,"context_line":"\tuint32_t val;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"d1e29620_f028afba","line":84,"updated":"2025-10-14 09:36:24.000000000","message":"`retry` should be `unsigned int` as it\u0027s not a target register or something like that.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":81,"context_line":" * Internal helper functions for scqspi flash driver implementation"},{"line_number":82,"context_line":" * -------------------------------------------------------------------------*/"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"static bool verify(struct target *target, uint32_t addr, uint32_t exp, uint32_t read_mask,"},{"line_number":85,"context_line":"\tuint32_t retry)"},{"line_number":86,"context_line":"{"},{"line_number":87,"context_line":"\tuint32_t val;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"0555f9bd_8f7c9642","line":84,"in_reply_to":"d1e29620_f028afba","updated":"2025-10-30 12:41:59.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"30a8df9b7657ce2f1b92dd22a4f11ca4ad466225","unresolved":true,"context_lines":[{"line_number":85,"context_line":"\tuint32_t retry)"},{"line_number":86,"context_line":"{"},{"line_number":87,"context_line":"\tuint32_t val;"},{"line_number":88,"context_line":"\tint32_t ret;"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c\u003d retry; i++) {"},{"line_number":91,"context_line":"\t\tret \u003d target_read_u32(target, addr, \u0026val);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"f2622a9c_f572d48e","line":88,"range":{"start_line":88,"start_character":1,"end_line":88,"end_character":8},"updated":"2025-10-31 20:44:33.000000000","message":"Similarly here should be int","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"ee74b3c08c9626561e5265d0eb18425ee1b6338a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"\tuint32_t retry)"},{"line_number":86,"context_line":"{"},{"line_number":87,"context_line":"\tuint32_t val;"},{"line_number":88,"context_line":"\tint32_t ret;"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c\u003d retry; i++) {"},{"line_number":91,"context_line":"\t\tret \u003d target_read_u32(target, addr, \u0026val);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"61812432_4f23e926","line":88,"range":{"start_line":88,"start_character":1,"end_line":88,"end_character":8},"in_reply_to":"f2622a9c_f572d48e","updated":"2025-11-06 05:24:13.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"30a8df9b7657ce2f1b92dd22a4f11ca4ad466225","unresolved":true,"context_lines":[{"line_number":87,"context_line":"\tuint32_t val;"},{"line_number":88,"context_line":"\tint32_t ret;"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c\u003d retry; i++) {"},{"line_number":91,"context_line":"\t\tret \u003d target_read_u32(target, addr, \u0026val);"},{"line_number":92,"context_line":"\t\tif (ret !\u003d ERROR_OK) {"},{"line_number":93,"context_line":"\t\t\tLOG_ERROR(\"Failed to read the register value: %d\", ret);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"dd3adc22_b09ffcc8","line":90,"range":{"start_line":90,"start_character":6,"end_line":90,"end_character":15},"updated":"2025-10-31 20:44:33.000000000","message":"unsigned int","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"ee74b3c08c9626561e5265d0eb18425ee1b6338a","unresolved":false,"context_lines":[{"line_number":87,"context_line":"\tuint32_t val;"},{"line_number":88,"context_line":"\tint32_t ret;"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c\u003d retry; i++) {"},{"line_number":91,"context_line":"\t\tret \u003d target_read_u32(target, addr, \u0026val);"},{"line_number":92,"context_line":"\t\tif (ret !\u003d ERROR_OK) {"},{"line_number":93,"context_line":"\t\t\tLOG_ERROR(\"Failed to read the register value: %d\", ret);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"12e75d01_f6c7845f","line":90,"range":{"start_line":90,"start_character":6,"end_line":90,"end_character":15},"in_reply_to":"dd3adc22_b09ffcc8","updated":"2025-11-06 05:24:13.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"\tLOG_DEBUG(\"Inactivate SPI SS\");"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"\tret \u003d target_write_u32(target, SCOBCA1_FPGA_NORFLASH_QSPI_ACR, 0x00);"},{"line_number":180,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":181,"context_line":"\t\treturn ret;"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"374f2c78_e511ea19","line":179,"updated":"2025-10-14 09:36:24.000000000","message":"Declare `ret` here. Same above.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"\tLOG_DEBUG(\"Inactivate SPI SS\");"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"\tret \u003d target_write_u32(target, SCOBCA1_FPGA_NORFLASH_QSPI_ACR, 0x00);"},{"line_number":180,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":181,"context_line":"\t\treturn ret;"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"91169f8a_24587805","line":179,"in_reply_to":"374f2c78_e511ea19","updated":"2025-10-30 12:41:59.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":415,"context_line":"\t\tgoto inactivate_ss;"},{"line_number":416,"context_line":"\t}"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"\t/* Read RX data (2byte) adn Verify */"},{"line_number":419,"context_line":"\tret \u003d read_and_verify_rx_data(target, exp_size, exp_val);"},{"line_number":420,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":421,"context_line":"\t\tLOG_ERROR(\"Failed to read and verify RX data : %d\", ret);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"49be7f57_15e3e4fa","line":418,"updated":"2025-10-14 09:36:24.000000000","message":"Please use `//` for single-line comments.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":415,"context_line":"\t\tgoto inactivate_ss;"},{"line_number":416,"context_line":"\t}"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"\t/* Read RX data (2byte) adn Verify */"},{"line_number":419,"context_line":"\tret \u003d read_and_verify_rx_data(target, exp_size, exp_val);"},{"line_number":420,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":421,"context_line":"\t\tLOG_ERROR(\"Failed to read and verify RX data : %d\", ret);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"6ab0c0b6_de4fbc73","line":418,"in_reply_to":"49be7f57_15e3e4fa","updated":"2025-10-30 12:41:59.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":480,"context_line":"\t\tgoto end;"},{"line_number":481,"context_line":"\t}"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"\tLOG_DEBUG(\"Set `Write Enable`\");"},{"line_number":484,"context_line":"\tret \u003d target_write_u32(target, SCOBCA1_FPGA_NORFLASH_QSPI_TDR, SPIFLASH_WRITE_ENABLE);"},{"line_number":485,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":486,"context_line":"\t\tLOG_ERROR(\"Failed to write SPIFLASH_WRITE_ENABLE command : %d\", ret);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"b7492af9_a57075c9","line":483,"updated":"2025-10-14 09:36:24.000000000","message":"Why ``` here and not for `write disable` above?","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":480,"context_line":"\t\tgoto end;"},{"line_number":481,"context_line":"\t}"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"\tLOG_DEBUG(\"Set `Write Enable`\");"},{"line_number":484,"context_line":"\tret \u003d target_write_u32(target, SCOBCA1_FPGA_NORFLASH_QSPI_TDR, SPIFLASH_WRITE_ENABLE);"},{"line_number":485,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":486,"context_line":"\t\tLOG_ERROR(\"Failed to write SPIFLASH_WRITE_ENABLE command : %d\", ret);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4bf15f80_e58dd879","line":483,"in_reply_to":"b7492af9_a57075c9","updated":"2025-10-30 12:41:59.000000000","message":"No reason.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":492,"context_line":"\t}"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"\tif (!is_qspi_control_done(target)) {"},{"line_number":495,"context_line":"\t\tLOG_ERROR(\"Confirm SPI Control is Done failed\");"},{"line_number":496,"context_line":"\t\tret \u003d ERROR_FAIL;"},{"line_number":497,"context_line":"\t\tgoto end;"},{"line_number":498,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"cb618a1c_53bb8ac0","line":495,"updated":"2025-10-14 09:36:24.000000000","message":"`control`, `done` ?","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":492,"context_line":"\t}"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"\tif (!is_qspi_control_done(target)) {"},{"line_number":495,"context_line":"\t\tLOG_ERROR(\"Confirm SPI Control is Done failed\");"},{"line_number":496,"context_line":"\t\tret \u003d ERROR_FAIL;"},{"line_number":497,"context_line":"\t\tgoto end;"},{"line_number":498,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"5b4b7bb8_e6ba3dd2","line":495,"in_reply_to":"cb618a1c_53bb8ac0","updated":"2025-10-30 12:41:59.000000000","message":"It\u0027s about the function name, it\u0027s verify if control are done so I wrote Control is Done failed. I\u0027m not sure how to rewrite this.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":514,"context_line":"\t\tbyte \u003d (mem_addr \u003e\u003e (i * 8)) \u0026 0xFF;"},{"line_number":515,"context_line":"\t\tret \u003d target_write_u32(target, SCOBCA1_FPGA_NORFLASH_QSPI_TDR, byte);"},{"line_number":516,"context_line":"\t\tif (ret !\u003d ERROR_OK) {"},{"line_number":517,"context_line":"\t\t\tLOG_ERROR(\"Failed to write byte %d of Memory Address: 0x%08x\", i, mem_addr);"},{"line_number":518,"context_line":"\t\t\tbreak;"},{"line_number":519,"context_line":"\t\t}"},{"line_number":520,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4f72e992_15077490","line":517,"updated":"2025-10-14 09:36:24.000000000","message":"Why `Memory` and not `memory`?","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":514,"context_line":"\t\tbyte \u003d (mem_addr \u003e\u003e (i * 8)) \u0026 0xFF;"},{"line_number":515,"context_line":"\t\tret \u003d target_write_u32(target, SCOBCA1_FPGA_NORFLASH_QSPI_TDR, byte);"},{"line_number":516,"context_line":"\t\tif (ret !\u003d ERROR_OK) {"},{"line_number":517,"context_line":"\t\t\tLOG_ERROR(\"Failed to write byte %d of Memory Address: 0x%08x\", i, mem_addr);"},{"line_number":518,"context_line":"\t\t\tbreak;"},{"line_number":519,"context_line":"\t\t}"},{"line_number":520,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ca199795_08d21072","line":517,"in_reply_to":"4f72e992_15077490","updated":"2025-10-30 12:41:59.000000000","message":"typo","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":609,"context_line":""},{"line_number":610,"context_line":"\tret \u003d activate_spi_ss(target, spi_ss);"},{"line_number":611,"context_line":"\tif (ret !\u003d ERROR_OK) {"},{"line_number":612,"context_line":"\t\tLOG_ERROR(\"Failed to activate SPI SS : %d\", ret);"},{"line_number":613,"context_line":"\t\tgoto end;"},{"line_number":614,"context_line":"\t}"},{"line_number":615,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"7f08ac14_c420ac1e","line":612,"updated":"2025-10-14 09:36:24.000000000","message":"Why is `ret` here important? You don\u0027t log it in other cases.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":609,"context_line":""},{"line_number":610,"context_line":"\tret \u003d activate_spi_ss(target, spi_ss);"},{"line_number":611,"context_line":"\tif (ret !\u003d ERROR_OK) {"},{"line_number":612,"context_line":"\t\tLOG_ERROR(\"Failed to activate SPI SS : %d\", ret);"},{"line_number":613,"context_line":"\t\tgoto end;"},{"line_number":614,"context_line":"\t}"},{"line_number":615,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"6c2a86c8_97ac2083","line":612,"in_reply_to":"7f08ac14_c420ac1e","updated":"2025-10-30 12:41:59.000000000","message":"It is not.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"30a8df9b7657ce2f1b92dd22a4f11ca4ad466225","unresolved":true,"context_lines":[{"line_number":682,"context_line":""},{"line_number":683,"context_line":"\twhile (remaining \u003e 0) {"},{"line_number":684,"context_line":"\t\tchunk_size \u003d"},{"line_number":685,"context_line":"\t\t\tremaining \u003e SCQSPI_PAGE_BUFFER_BYTE ? SCQSPI_PAGE_BUFFER_BYTE : remaining;"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"\t\tLOG_DEBUG(\"Write %d byte [0x%02x] to 0x%08x from bufpos %d (remaing %d byte)\","},{"line_number":688,"context_line":"\t\t\tchunk_size, buffer[bufpos], mem_addr, bufpos, remaining);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"cc16e78d_7992a7ae","line":685,"updated":"2025-10-31 20:44:33.000000000","message":"What if write starts on offset not aligned to flash page?","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"b07c3743aa1adbece811e29d1eb3d2470d1b015d","unresolved":false,"context_lines":[{"line_number":682,"context_line":""},{"line_number":683,"context_line":"\twhile (remaining \u003e 0) {"},{"line_number":684,"context_line":"\t\tchunk_size \u003d"},{"line_number":685,"context_line":"\t\t\tremaining \u003e SCQSPI_PAGE_BUFFER_BYTE ? SCQSPI_PAGE_BUFFER_BYTE : remaining;"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"\t\tLOG_DEBUG(\"Write %d byte [0x%02x] to 0x%08x from bufpos %d (remaing %d byte)\","},{"line_number":688,"context_line":"\t\t\tchunk_size, buffer[bufpos], mem_addr, bufpos, remaining);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"1f020586_2b8695cc","line":685,"in_reply_to":"cc16e78d_7992a7ae","updated":"2025-11-06 05:25:03.000000000","message":"Honestly I didn\u0027t see that coming, I should maybe add something to raise an error if not.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"30a8df9b7657ce2f1b92dd22a4f11ca4ad466225","unresolved":true,"context_lines":[{"line_number":735,"context_line":" * \u003cchip_width\u003e : Auto (0)"},{"line_number":736,"context_line":" * \u003cbus_width\u003e : Auto (0)"},{"line_number":737,"context_line":" * \u003ctarget#\u003e : Target to flash"},{"line_number":738,"context_line":" * \u003cflash start addr\u003e : Flash address where to start writing"},{"line_number":739,"context_line":" * \u003cmem_no\u003e : Configuration flash memory number"},{"line_number":740,"context_line":" */"},{"line_number":741,"context_line":"FLASH_BANK_COMMAND_HANDLER(scqspi_flash_bank_command)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"98af5441_0427704d","line":738,"range":{"start_line":738,"start_character":24,"end_line":738,"end_character":60},"updated":"2025-10-31 20:44:33.000000000","message":"What is flash_start_addr? When you create flash bank based on the device table in spi.c, then whole device size should be mapped. Non-zero flash_start_addr would shift write addresses from read mapping, I see no point in such mess...","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"ee74b3c08c9626561e5265d0eb18425ee1b6338a","unresolved":false,"context_lines":[{"line_number":735,"context_line":" * \u003cchip_width\u003e : Auto (0)"},{"line_number":736,"context_line":" * \u003cbus_width\u003e : Auto (0)"},{"line_number":737,"context_line":" * \u003ctarget#\u003e : Target to flash"},{"line_number":738,"context_line":" * \u003cflash start addr\u003e : Flash address where to start writing"},{"line_number":739,"context_line":" * \u003cmem_no\u003e : Configuration flash memory number"},{"line_number":740,"context_line":" */"},{"line_number":741,"context_line":"FLASH_BANK_COMMAND_HANDLER(scqspi_flash_bank_command)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"dc3a645c_e2b582ad","line":738,"range":{"start_line":738,"start_character":24,"end_line":738,"end_character":60},"in_reply_to":"98af5441_0427704d","updated":"2025-11-06 05:24:13.000000000","message":"We use flash_addr to support multiple fixed partitions within the same QSPI NOR device. This allows OpenOCD driver to target each region separately, while still using the same underlying device driver.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":791,"context_line":"\t\treturn ERROR_FLASH_SECTOR_INVALID;"},{"line_number":792,"context_line":"\t}"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"\tfor (sector \u003d first; sector \u003c\u003d last; sector++) {"},{"line_number":795,"context_line":"\t\tif (bank-\u003esectors[sector].is_protected) {"},{"line_number":796,"context_line":"\t\t\tLOG_ERROR(\"Flash sector %u protected\", sector);"},{"line_number":797,"context_line":"\t\t\tret \u003d ERROR_FLASH_PROTECTED;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"adadffb7_1542987c","line":794,"updated":"2025-10-14 09:36:24.000000000","message":"Declare `sector` here.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":791,"context_line":"\t\treturn ERROR_FLASH_SECTOR_INVALID;"},{"line_number":792,"context_line":"\t}"},{"line_number":793,"context_line":""},{"line_number":794,"context_line":"\tfor (sector \u003d first; sector \u003c\u003d last; sector++) {"},{"line_number":795,"context_line":"\t\tif (bank-\u003esectors[sector].is_protected) {"},{"line_number":796,"context_line":"\t\t\tLOG_ERROR(\"Flash sector %u protected\", sector);"},{"line_number":797,"context_line":"\t\t\tret \u003d ERROR_FLASH_PROTECTED;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"752eaad6_c426c2d4","line":794,"in_reply_to":"adadffb7_1542987c","updated":"2025-10-30 12:41:59.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":799,"context_line":"\t\t}"},{"line_number":800,"context_line":"\t}"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"\tfor (sector \u003d first; sector \u003c\u003d last; sector++) {"},{"line_number":803,"context_line":"\t\tret \u003d qspi_erase_sector(bank, sector);"},{"line_number":804,"context_line":"\t\tif (ret !\u003d ERROR_OK) {"},{"line_number":805,"context_line":"\t\t\tLOG_ERROR(\"Flash sector_erase failed on sector %u : %d\", sector, ret);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"3002fb21_1ad4c552","line":802,"updated":"2025-10-14 09:36:24.000000000","message":"Declare `sector` here again.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":799,"context_line":"\t\t}"},{"line_number":800,"context_line":"\t}"},{"line_number":801,"context_line":""},{"line_number":802,"context_line":"\tfor (sector \u003d first; sector \u003c\u003d last; sector++) {"},{"line_number":803,"context_line":"\t\tret \u003d qspi_erase_sector(bank, sector);"},{"line_number":804,"context_line":"\t\tif (ret !\u003d ERROR_OK) {"},{"line_number":805,"context_line":"\t\t\tLOG_ERROR(\"Flash sector_erase failed on sector %u : %d\", sector, ret);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"7eaf22e3_72c5fe4b","line":802,"in_reply_to":"3002fb21_1ad4c552","updated":"2025-10-30 12:41:59.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":820,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":821,"context_line":"\tstruct scqspi_flash_bank *scqspi_info \u003d bank-\u003edriver_priv;"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"\tLOG_INFO(\"%s: offset\u003d0x%08x count\u003d0x%08x (base: 0x%08x)\", __func__, offset, count,"},{"line_number":824,"context_line":"\t\tscqspi_info-\u003eflash_addr);"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"\tif (target-\u003estate !\u003d TARGET_HALTED) {"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"54dfe6bd_fdbc6a55","line":823,"updated":"2025-10-14 09:36:24.000000000","message":"Should be `LOG_DEBUG()` in my opinion.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":820,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":821,"context_line":"\tstruct scqspi_flash_bank *scqspi_info \u003d bank-\u003edriver_priv;"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"\tLOG_INFO(\"%s: offset\u003d0x%08x count\u003d0x%08x (base: 0x%08x)\", __func__, offset, count,"},{"line_number":824,"context_line":"\t\tscqspi_info-\u003eflash_addr);"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"\tif (target-\u003estate !\u003d TARGET_HALTED) {"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"56cb5a1a_389af26a","line":823,"in_reply_to":"54dfe6bd_fdbc6a55","updated":"2025-10-30 12:41:59.000000000","message":"Yes you\u0027are right.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":842,"context_line":"\t}"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"\t/* Check sector protection */"},{"line_number":845,"context_line":"\tfor (uint32_t sector \u003d 0; sector \u003c bank-\u003enum_sectors; sector++) {"},{"line_number":846,"context_line":"\t\tstruct flash_sector *bs \u003d \u0026bank-\u003esectors[sector];"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"\t\tif ((offset \u003c (bs-\u003eoffset + bs-\u003esize)) \u0026\u0026 ((offset + count - 1) \u003e\u003d bs-\u003eoffset) \u0026\u0026"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"d43a0e2f_29c88937","line":845,"updated":"2025-10-14 09:36:24.000000000","message":"`num_sectors` is `unsigned int`, please change.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":842,"context_line":"\t}"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"\t/* Check sector protection */"},{"line_number":845,"context_line":"\tfor (uint32_t sector \u003d 0; sector \u003c bank-\u003enum_sectors; sector++) {"},{"line_number":846,"context_line":"\t\tstruct flash_sector *bs \u003d \u0026bank-\u003esectors[sector];"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":"\t\tif ((offset \u003c (bs-\u003eoffset + bs-\u003esize)) \u0026\u0026 ((offset + count - 1) \u003e\u003d bs-\u003eoffset) \u0026\u0026"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"79fda149_9c0b5f31","line":845,"in_reply_to":"d43a0e2f_29c88937","updated":"2025-10-30 12:41:59.000000000","message":"Done","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8412dbd73e7d86c6b0c647d0be3b511e6d878c7d","unresolved":true,"context_lines":[{"line_number":847,"context_line":""},{"line_number":848,"context_line":"\t\tif ((offset \u003c (bs-\u003eoffset + bs-\u003esize)) \u0026\u0026 ((offset + count - 1) \u003e\u003d bs-\u003eoffset) \u0026\u0026"},{"line_number":849,"context_line":"\t\t\tbs-\u003eis_protected) {"},{"line_number":850,"context_line":"\t\t\tLOG_ERROR(\"Flash sector %u protected\", sector);"},{"line_number":851,"context_line":"\t\t\tret \u003d ERROR_FAIL;"},{"line_number":852,"context_line":"\t\t\tgoto end;"},{"line_number":853,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ea64c064_643cf23f","line":850,"updated":"2025-10-14 09:36:24.000000000","message":"-\u003e `is write protected`?","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"f64ae309c9d1112ec246c476d005b65d16f38d0c","unresolved":false,"context_lines":[{"line_number":847,"context_line":""},{"line_number":848,"context_line":"\t\tif ((offset \u003c (bs-\u003eoffset + bs-\u003esize)) \u0026\u0026 ((offset + count - 1) \u003e\u003d bs-\u003eoffset) \u0026\u0026"},{"line_number":849,"context_line":"\t\t\tbs-\u003eis_protected) {"},{"line_number":850,"context_line":"\t\t\tLOG_ERROR(\"Flash sector %u protected\", sector);"},{"line_number":851,"context_line":"\t\t\tret \u003d ERROR_FAIL;"},{"line_number":852,"context_line":"\t\t\tgoto end;"},{"line_number":853,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"92cc74d9_153e01af","line":850,"in_reply_to":"ea64c064_643cf23f","updated":"2025-10-30 12:41:59.000000000","message":"Currently we don\u0027t use the protected part but it could be used on software part.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"30a8df9b7657ce2f1b92dd22a4f11ca4ad466225","unresolved":true,"context_lines":[{"line_number":861,"context_line":"\treturn ret;"},{"line_number":862,"context_line":"}"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"static int scqspi_read(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)"},{"line_number":865,"context_line":"{"},{"line_number":866,"context_line":"\tLOG_DEBUG(\"%s\", __func__);"},{"line_number":867,"context_line":"\treturn ERROR_OK;"},{"line_number":868,"context_line":"}"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"static int scqspi_probe(struct flash_bank *bank)"},{"line_number":871,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"702a1f63_71004fa1","line":868,"range":{"start_line":864,"start_character":0,"end_line":868,"end_character":1},"updated":"2025-10-31 20:44:33.000000000","message":"Please avoid such stub! It would make some commands non functional, e.g. `flash read_memory`, `flash read_bank`\nEither use `default_flash_read` for .read method or implement reading if the flash is not mapped in target memory.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"ee74b3c08c9626561e5265d0eb18425ee1b6338a","unresolved":false,"context_lines":[{"line_number":861,"context_line":"\treturn ret;"},{"line_number":862,"context_line":"}"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"static int scqspi_read(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)"},{"line_number":865,"context_line":"{"},{"line_number":866,"context_line":"\tLOG_DEBUG(\"%s\", __func__);"},{"line_number":867,"context_line":"\treturn ERROR_OK;"},{"line_number":868,"context_line":"}"},{"line_number":869,"context_line":""},{"line_number":870,"context_line":"static int scqspi_probe(struct flash_bank *bank)"},{"line_number":871,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"36a46fea_879d5e37","line":868,"range":{"start_line":864,"start_character":0,"end_line":868,"end_character":1},"in_reply_to":"702a1f63_71004fa1","updated":"2025-11-06 05:24:13.000000000","message":"The read function was implemented in the following commit.\nIt was done in a separate commit.","commit_id":"8fab3d41145b5a0ed1a8b3dc4d7e8340c1e104b3"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"30a8df9b7657ce2f1b92dd22a4f11ca4ad466225","unresolved":true,"context_lines":[{"line_number":411,"context_line":"\t\tgoto inactivate_ss;"},{"line_number":412,"context_line":"\t}"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"\t// Read RX data (2byte) adn Verify"},{"line_number":415,"context_line":"\tret \u003d read_and_verify_rx_data(target, exp_size, exp_val);"},{"line_number":416,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":417,"context_line":"\t\tLOG_ERROR(\"Failed to read and verify RX data : %d\", ret);"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"2240c9ec_eedb37bf","line":414,"range":{"start_line":414,"start_character":25,"end_line":414,"end_character":28},"updated":"2025-10-31 20:44:33.000000000","message":"s/adn/and/","commit_id":"ac67260c8e351c2ce18aa52b2c89249d755dc1ab"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"ee74b3c08c9626561e5265d0eb18425ee1b6338a","unresolved":false,"context_lines":[{"line_number":411,"context_line":"\t\tgoto inactivate_ss;"},{"line_number":412,"context_line":"\t}"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"\t// Read RX data (2byte) adn Verify"},{"line_number":415,"context_line":"\tret \u003d read_and_verify_rx_data(target, exp_size, exp_val);"},{"line_number":416,"context_line":"\tif (ret !\u003d ERROR_OK)"},{"line_number":417,"context_line":"\t\tLOG_ERROR(\"Failed to read and verify RX data : %d\", ret);"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"3fd11e1a_4d385c15","line":414,"range":{"start_line":414,"start_character":25,"end_line":414,"end_character":28},"in_reply_to":"2240c9ec_eedb37bf","updated":"2025-11-06 05:24:13.000000000","message":"Done","commit_id":"ac67260c8e351c2ce18aa52b2c89249d755dc1ab"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"9f25c7b66c419aaee4bcab23fabac025f6523032","unresolved":true,"context_lines":[{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"const struct flash_driver scqspi_flash \u003d {"},{"line_number":1017,"context_line":"\t.name \u003d \"scqspi\","},{"line_number":1018,"context_line":"\t.commands \u003d scqspi_command_handlers,"},{"line_number":1019,"context_line":"\t.flash_bank_command \u003d scqspi_flash_bank_command,"},{"line_number":1020,"context_line":"\t.erase \u003d scqspi_erase,"},{"line_number":1021,"context_line":"\t.protect \u003d scqspi_protect,"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"951cb0fa_eeab3917","line":1018,"updated":"2025-11-02 10:47:28.000000000","message":"Neither this patch nor the other in this series add any command for this flash driver.\nI think this line and the above struct `scqspi_command_handlers` can be dropped","commit_id":"ac67260c8e351c2ce18aa52b2c89249d755dc1ab"},{"author":{"_account_id":1002418,"name":"Gaetan Perrot","email":"gaetan.perrot@spacecubics.com","username":"moonlight83340","status":"Space cubics, Inc"},"change_message_id":"ee74b3c08c9626561e5265d0eb18425ee1b6338a","unresolved":false,"context_lines":[{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"const struct flash_driver scqspi_flash \u003d {"},{"line_number":1017,"context_line":"\t.name \u003d \"scqspi\","},{"line_number":1018,"context_line":"\t.commands \u003d scqspi_command_handlers,"},{"line_number":1019,"context_line":"\t.flash_bank_command \u003d scqspi_flash_bank_command,"},{"line_number":1020,"context_line":"\t.erase \u003d scqspi_erase,"},{"line_number":1021,"context_line":"\t.protect \u003d scqspi_protect,"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"a63af109_e7ba9ff2","line":1018,"in_reply_to":"951cb0fa_eeab3917","updated":"2025-11-06 05:24:13.000000000","message":"Thanks I will drop that !","commit_id":"ac67260c8e351c2ce18aa52b2c89249d755dc1ab"}]}
