)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":13,"context_line":"tests, however, adding support for other architectures should require only"},{"line_number":14,"context_line":"few adjustments. Driver relies on flash/nor/spi.h to find Flash chip info."},{"line_number":15,"context_line":"Driver internal functions support 24bit addressing mode, but due to"},{"line_number":16,"context_line":"limitations of flash/nor/spi.h, it is not used. The repoted writing speed"},{"line_number":17,"context_line":"is about 60kb/s."},{"line_number":18,"context_line":"Lint, sanitizer and valgraind repoted warnings were not related to the"},{"line_number":19,"context_line":"driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3d8e83f7_fdf4f0ef","line":16,"updated":"2024-10-07 22:36:14.000000000","message":"typo s/repoted/reported/","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":13,"context_line":"tests, however, adding support for other architectures should require only"},{"line_number":14,"context_line":"few adjustments. Driver relies on flash/nor/spi.h to find Flash chip info."},{"line_number":15,"context_line":"Driver internal functions support 24bit addressing mode, but due to"},{"line_number":16,"context_line":"limitations of flash/nor/spi.h, it is not used. The repoted writing speed"},{"line_number":17,"context_line":"is about 60kb/s."},{"line_number":18,"context_line":"Lint, sanitizer and valgraind repoted warnings were not related to the"},{"line_number":19,"context_line":"driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"80aa0e8b_782c6037","line":16,"in_reply_to":"3d8e83f7_fdf4f0ef","updated":"2024-10-08 15:46:54.000000000","message":"replaced","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":13,"context_line":"tests, however, adding support for other architectures should require only"},{"line_number":14,"context_line":"few adjustments. Driver relies on flash/nor/spi.h to find Flash chip info."},{"line_number":15,"context_line":"Driver internal functions support 24bit addressing mode, but due to"},{"line_number":16,"context_line":"limitations of flash/nor/spi.h, it is not used. The repoted writing speed"},{"line_number":17,"context_line":"is about 60kb/s."},{"line_number":18,"context_line":"Lint, sanitizer and valgraind repoted warnings were not related to the"},{"line_number":19,"context_line":"driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"8ab6eed2_3ccfea87","line":16,"in_reply_to":"80aa0e8b_782c6037","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":15,"context_line":"Driver internal functions support 24bit addressing mode, but due to"},{"line_number":16,"context_line":"limitations of flash/nor/spi.h, it is not used. The repoted writing speed"},{"line_number":17,"context_line":"is about 60kb/s."},{"line_number":18,"context_line":"Lint, sanitizer and valgraind repoted warnings were not related to the"},{"line_number":19,"context_line":"driver."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Id3df5626ab88055f034f74f274823051dedefeb1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"70b775e9_8b387d9c","line":18,"updated":"2024-10-07 22:36:14.000000000","message":"s/valgraind/valgrind/\ns/repoted/reported/","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":15,"context_line":"Driver internal functions support 24bit addressing mode, but due to"},{"line_number":16,"context_line":"limitations of flash/nor/spi.h, it is not used. The repoted writing speed"},{"line_number":17,"context_line":"is about 60kb/s."},{"line_number":18,"context_line":"Lint, sanitizer and valgraind repoted warnings were not related to the"},{"line_number":19,"context_line":"driver."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Id3df5626ab88055f034f74f274823051dedefeb1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9ea73a2d_00dae988","line":18,"in_reply_to":"70b775e9_8b387d9c","updated":"2024-10-08 15:46:54.000000000","message":"replaced","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Driver internal functions support 24bit addressing mode, but due to"},{"line_number":16,"context_line":"limitations of flash/nor/spi.h, it is not used. The repoted writing speed"},{"line_number":17,"context_line":"is about 60kb/s."},{"line_number":18,"context_line":"Lint, sanitizer and valgraind repoted warnings were not related to the"},{"line_number":19,"context_line":"driver."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Id3df5626ab88055f034f74f274823051dedefeb1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7ad75b46_5519d9c6","line":18,"in_reply_to":"9ea73a2d_00dae988","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"49ec2e95e74bee0979974ec8d42a7d293284e51d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c4f0646f_fe695fd0","updated":"2024-09-13 13:02:37.000000000","message":"General recommendations:\n- driver specific functions, should have driver specific prefix\n- please read C code style guide: https://openocd.org/doc-release/doxygen/stylec.html and update the code.\n- compact looking code do reduce binary size or extra good readable, it is oposite the case. Imagine some one need to read/review it without diving to the HW documentation.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7f09c2f1_6c8b821c","in_reply_to":"25755b1e_3a2df47d","updated":"2024-09-29 17:37:05.000000000","message":"\"driver specific functions, should have driver specific prefix\" still not resolved. Most of function in the src/flash/nor/dw-spi.c still do not have the dw_spi_ prefix","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"475d115e_56b40426","in_reply_to":"75f83457_96015a51","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ee5739ec9d7def6b09bca87379e04e951b3a1fbd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"75f83457_96015a51","in_reply_to":"7f09c2f1_6c8b821c","updated":"2024-09-30 18:26:20.000000000","message":"I\u0027ll rename static functions as well.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"098f3f24419754a3a2842dc6a79eaa323a4d1730","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"25755b1e_3a2df47d","in_reply_to":"c4f0646f_fe695fd0","updated":"2024-09-18 19:16:17.000000000","message":"Thanks for the review!\n\nChanges in V5:\n* added `le_to_h_u32` comment;\n\nChanges in V4:\n* reindented code, removing excessive alignments;\n* removed struct typedefs;\n* replaced `CHECK_RET` macro with explicit return value checks, added appropriate messages;","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c0bdfa39_31b97b87","updated":"2024-09-29 09:08:22.000000000","message":"Sorry for long delay, here are some comments","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ee5739ec9d7def6b09bca87379e04e951b3a1fbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"84fd9eb3_98493c4c","updated":"2024-09-30 18:26:20.000000000","message":"Thanks for the review! I\u0027ve added clarification questions to some of your comments. Meanwhile, I\u0027ll work on other notes and add replies when the new patchset revision is ready.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"5e1eb11e_c2cc2442","updated":"2024-10-06 08:40:02.000000000","message":"Thanks for the review!\n\nv8:\n* remove unneeded `wait_tx_available` calls in helpers;\nv7:\n* update TeX documentation for changed driver arguments;\nv6:\n* remove ORed return codes;\n* remove `bootctrl_read` driver argument;\n* remove helper function return codes as after further investigation they proved not to provide accurate information;\n* change helper pointer argument size to uint64_t;\n* rename helper functions to eliminate push/pop names;\n* rename functions and defines to have driver specific prefix;\n* add colons `:` to doxygen parameters;\n* add comments to helper functions, particularly to used constants and dummy reads/writes;\n* reformulated comments in driver code;","commit_id":"77334ed1d496ab68a4b22254cfb0e3b58d35b237"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"1d7a26c26de6afb59a0d91efb76fd728981094e6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c8e90756_308830d1","in_reply_to":"5e1eb11e_c2cc2442","updated":"2024-10-06 09:54:45.000000000","message":"Did not change `//\u003c` comments, as currently they compile to the valid Doxygen documentation. If they must be removed, I need additional clarification what to replace them with.","commit_id":"77334ed1d496ab68a4b22254cfb0e3b58d35b237"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"10907e0a99a8603adf0f7c23059578f2f1d77ee2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a3a22e6f_1b70ee42","in_reply_to":"c8e90756_308830d1","updated":"2024-10-06 12:58:05.000000000","message":"Done","commit_id":"77334ed1d496ab68a4b22254cfb0e3b58d35b237"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d387278d_a212788e","updated":"2024-10-06 12:34:11.000000000","message":"Lokk ok for me","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"703a1a2d_714efc28","updated":"2024-10-07 22:36:14.000000000","message":"Thanks for your patch. I will not review the functionality of the flash code, but I noticed some minor point below","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"9baa6923e79be8f9f91d5e586c3788cd5e126015","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"7bf14a13_89f2c7f9","updated":"2025-01-10 16:15:58.000000000","message":"Hello! It has been a while. To my best knowledge, all previous issues have been resolved. Maybe this patch could be merged now?","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"eec69fa2edb99b0fd637be920bb35724b2d424ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9977b1dc_1974257c","updated":"2025-01-12 07:39:01.000000000","message":"Looks good for me. Antonio?","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"cbf30f37_a3deb6ca","updated":"2024-10-08 15:46:54.000000000","message":"Thanks for the review!\n\n---\n\nv9:\n* move variable declaration near the first use;\n* change TeX documentation;\n* fix typos;\n\nv8:\n* remove unneeded wait_tx_available calls in helpers;\n\nv7:\n* update TeX documentation for changed driver arguments;\n\nv6:\n* remove ORed return codes;\n* remove bootctrl_read driver argument;\n* remove helper function return codes as after further investigation they proved not to provide accurate information;\n* change helper pointer argument size to uint64_t;\n* rename helper functions to eliminate push/pop names;\n* rename functions and defines to have driver specific prefix;\n* add colons : to doxygen parameters;\n* add comments to helper functions, particularly to used constants and dummy reads/writes;\n* reformulated comments in driver code;","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"4782f621d6a1ac5a764c6a2be1c0486dbc7d09f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b0d1acde_0e357a40","updated":"2025-01-17 18:14:24.000000000","message":"Thanks for the review! I\u0027ll push updated code after testing, but I want to clarify one comment first.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d6fda6c4_ba0e07d2","updated":"2025-01-19 18:44:01.000000000","message":"Thanks for the review!\n\n---\n\nv10:\n* updated working area cleanup code;\n* removed `is_erased` use outside of `dw_spi_blank_check`;\n* renamed user argument names\n* refactored to use `COMMAND_PARSE_NUMBER`, `alive_sleep`, `timeval_ms`, fixed-width integer formatting literals.\n\nv9:\n* move variable declaration near the first use;\n* change TeX documentation;\n* fix typos;\n\nv8:\n* remove unneeded `wait_tx_available` calls in helpers;\n\nv7:\n* update TeX documentation for changed driver arguments;\n\nv6:\n* remove ORed return codes;\n* remove bootctrl_read driver argument;\n* remove helper function return codes as after further investigation they proved not to provide accurate information;\n* change helper pointer argument size to `uint64_t`;\n* rename helper functions to eliminate push/pop names;\n* rename functions and defines to have driver specific prefix;\n* add colons `:` to doxygen parameters;\n* add comments to helper functions, particularly to used constants and dummy reads/writes;\n* reformulated comments in driver code;","commit_id":"94b1eb5f7b77f89838310ffdca9e82daafe400ec"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"fe0554cd59ebfb24299562fbeda807c618d77a42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"e1ce54df_f6a0ddd8","updated":"2025-01-23 04:06:11.000000000","message":"Thanks for the review!\n\n---\n\nv11:\n* remove unneeded guard around free;\n\nv10:\n* update working area cleanup code;\n* remove is_erased use outside of dw_spi_blank_check;\n* rename user argument names;\n* refactor to use COMMAND_PARSE_NUMBER, alive_sleep, timeval_ms, fixed-width integer formatting literals;\n\nv9:\n* move variable declaration near the first use;\n* change TeX documentation;\n* fix typos;\n\nv8:\n* remove unneeded wait_tx_available calls in helpers;\n\nv7:\n* update TeX documentation for changed driver arguments;\n\nv6:\n* remove ORed return codes;\n* remove bootctrl_read driver argument;\n* remove helper function return codes as after further investigation they proved not to provide accurate information;\n* change helper pointer argument size to uint64_t;\n* rename helper functions to eliminate push/pop names;\n* rename functions and defines to have driver specific prefix;\n* add colons : to doxygen parameters;\n* add comments to helper functions, particularly to used constants and dummy reads/writes;\n* reformulate comments in driver code;","commit_id":"9f81fa5c25e4d750b5c4372ecc1428dae7787c48"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"a687d406d0249d5cd57fb6dd1d028856b43cb096","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ce57bbc7_97460134","updated":"2025-01-22 19:36:48.000000000","message":"Thanks!","commit_id":"9f81fa5c25e4d750b5c4372ecc1428dae7787c48"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"fe0554cd59ebfb24299562fbeda807c618d77a42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4fba1503_8f4116c3","in_reply_to":"ce57bbc7_97460134","updated":"2025-01-23 04:06:11.000000000","message":"Thank you!","commit_id":"9f81fa5c25e4d750b5c4372ecc1428dae7787c48"}],"contrib/loaders/flash/dw-spi/Makefile":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":1,"context_line":"TOOLCHAIN:\u003dmipsel-linux-gnu-"},{"line_number":2,"context_line":"CC:\u003d$(TOOLCHAIN)gcc"},{"line_number":3,"context_line":"OBJCOPY:\u003d$(TOOLCHAIN)objcopy"},{"line_number":4,"context_line":"CFLAGS:\u003d-O2 -Wall -Wextra -fpic"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"e068365d_4be33c5f","line":1,"updated":"2024-10-07 22:36:14.000000000","message":"please add the SPDX tag in the Makefile too\n`# SPDX-License-Identifier: GPL-2.0-or-later`\nI\u0027m going to fix this blind spot of checkpatch","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":1,"context_line":"TOOLCHAIN:\u003dmipsel-linux-gnu-"},{"line_number":2,"context_line":"CC:\u003d$(TOOLCHAIN)gcc"},{"line_number":3,"context_line":"OBJCOPY:\u003d$(TOOLCHAIN)objcopy"},{"line_number":4,"context_line":"CFLAGS:\u003d-O2 -Wall -Wextra -fpic"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"8d8bf250_b55d7c31","line":1,"in_reply_to":"95188078_654b839f","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"TOOLCHAIN:\u003dmipsel-linux-gnu-"},{"line_number":2,"context_line":"CC:\u003d$(TOOLCHAIN)gcc"},{"line_number":3,"context_line":"OBJCOPY:\u003d$(TOOLCHAIN)objcopy"},{"line_number":4,"context_line":"CFLAGS:\u003d-O2 -Wall -Wextra -fpic"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"95188078_654b839f","line":1,"in_reply_to":"e068365d_4be33c5f","updated":"2024-10-08 15:46:54.000000000","message":"added tag","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"}],"contrib/loaders/flash/dw-spi/dw-spi.c":[{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":29,"context_line":"\tfor (; size \u003e 0; size--) {"},{"line_number":30,"context_line":"\t\twait_tx_available(status);"},{"line_number":31,"context_line":"\t\tpush_byte(data, *buffer_tx++);"},{"line_number":32,"context_line":"\t\tif (!tx_in_progress(status)) {"},{"line_number":33,"context_line":"\t\t\tRET_ERROR;"},{"line_number":34,"context_line":"\t\t\tBKPT;"},{"line_number":35,"context_line":"\t\t\treturn;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"94684b86_0cd08d4c","line":32,"updated":"2024-09-29 09:08:22.000000000","message":"this is interesting check. I assume it works only if SPI bus speed is low enough?","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"\tfor (; size \u003e 0; size--) {"},{"line_number":30,"context_line":"\t\twait_tx_available(status);"},{"line_number":31,"context_line":"\t\tpush_byte(data, *buffer_tx++);"},{"line_number":32,"context_line":"\t\tif (!tx_in_progress(status)) {"},{"line_number":33,"context_line":"\t\t\tRET_ERROR;"},{"line_number":34,"context_line":"\t\t\tBKPT;"},{"line_number":35,"context_line":"\t\t\treturn;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"e0a90941_bfb4825f","line":32,"in_reply_to":"030aea5e_2859b5cd","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ee5739ec9d7def6b09bca87379e04e951b3a1fbd","unresolved":true,"context_lines":[{"line_number":29,"context_line":"\tfor (; size \u003e 0; size--) {"},{"line_number":30,"context_line":"\t\twait_tx_available(status);"},{"line_number":31,"context_line":"\t\tpush_byte(data, *buffer_tx++);"},{"line_number":32,"context_line":"\t\tif (!tx_in_progress(status)) {"},{"line_number":33,"context_line":"\t\t\tRET_ERROR;"},{"line_number":34,"context_line":"\t\t\tBKPT;"},{"line_number":35,"context_line":"\t\t\treturn;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"b7e747e5_46d75d84","line":32,"in_reply_to":"94684b86_0cd08d4c","updated":"2024-09-30 18:26:20.000000000","message":"Thinking about it, it\u0027s better to move it below data read.\n```\nif (arg-\u003eread_flag \u0026\u0026 rx_available(status))\n\t*buffer_rx++ \u003d rcv_byte(data);\nif (!tx_in_progress(status)) {\n\tRET_ERROR;\n\tBKPT;\n\treturn;\n}\n```\nIf `tx_in_progress` is `0`, then we are not putting data to FIFO fast enough.\nI\u0027ll add a comment for it in the next patchset revision.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":29,"context_line":"\tfor (; size \u003e 0; size--) {"},{"line_number":30,"context_line":"\t\twait_tx_available(status);"},{"line_number":31,"context_line":"\t\tpush_byte(data, *buffer_tx++);"},{"line_number":32,"context_line":"\t\tif (!tx_in_progress(status)) {"},{"line_number":33,"context_line":"\t\t\tRET_ERROR;"},{"line_number":34,"context_line":"\t\t\tBKPT;"},{"line_number":35,"context_line":"\t\t\treturn;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"030aea5e_2859b5cd","line":32,"in_reply_to":"b7e747e5_46d75d84","updated":"2024-10-06 08:40:02.000000000","message":"After further investigation removed this and other similar checks, as they do not provide information about transfer.\nI\u0027ve raised SPI clock, but instead of triggering this error, the master controller returned wrong chip ID data.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"\t\tpush_byte(data, arg-\u003eread_cmd);"},{"line_number":81,"context_line":"\t\tif (arg-\u003efour_byte_mode) {"},{"line_number":82,"context_line":"\t\t\tdummy_count \u003d 5;"},{"line_number":83,"context_line":"\t\t\tpush_u32(status, data, arg-\u003eaddress);"},{"line_number":84,"context_line":"\t\t} else {"},{"line_number":85,"context_line":"\t\t\tdummy_count \u003d 4;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"64cd0f6d_39cbb0be","line":82,"updated":"2024-09-29 09:08:22.000000000","message":"Explanation is missing for magic numbers","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"\t\tpush_byte(data, arg-\u003eread_cmd);"},{"line_number":81,"context_line":"\t\tif (arg-\u003efour_byte_mode) {"},{"line_number":82,"context_line":"\t\t\tdummy_count \u003d 5;"},{"line_number":83,"context_line":"\t\t\tpush_u32(status, data, arg-\u003eaddress);"},{"line_number":84,"context_line":"\t\t} else {"},{"line_number":85,"context_line":"\t\t\tdummy_count \u003d 4;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"8d451215_6f8c9783","line":82,"in_reply_to":"64cd0f6d_39cbb0be","updated":"2024-10-06 08:40:02.000000000","message":"Added explanation to this and other used constants.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"\t\tpush_byte(data, arg-\u003eread_cmd);"},{"line_number":81,"context_line":"\t\tif (arg-\u003efour_byte_mode) {"},{"line_number":82,"context_line":"\t\t\tdummy_count \u003d 5;"},{"line_number":83,"context_line":"\t\t\tpush_u32(status, data, arg-\u003eaddress);"},{"line_number":84,"context_line":"\t\t} else {"},{"line_number":85,"context_line":"\t\t\tdummy_count \u003d 4;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"9e0d1201_533a9468","line":82,"in_reply_to":"8d451215_6f8c9783","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":89,"context_line":"\t\tfor (tx_size \u003d arg-\u003esector_size, rx_size \u003d arg-\u003esector_size, filled \u003d 1;"},{"line_number":90,"context_line":"\t\t\t tx_size \u003e 0; tx_size--) {"},{"line_number":91,"context_line":"\t\t\twait_tx_available(status);"},{"line_number":92,"context_line":"\t\t\tif (!tx_in_progress(status)) {"},{"line_number":93,"context_line":"\t\t\t\tRET_ERROR;"},{"line_number":94,"context_line":"\t\t\t\tBKPT;"},{"line_number":95,"context_line":"\t\t\t\treturn;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"8e90d57a_e10790c6","line":92,"updated":"2024-09-29 09:08:22.000000000","message":"Not 100% sure, i guess, at 50MHz SPI bus speed, minimal critical CPU freq should be 62MHz, otherwise this code will break between push_u24() and  tx_in_progress() check. And if taking in the acount the complete loop cycle, ever higher CPU freq will fail.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":89,"context_line":"\t\tfor (tx_size \u003d arg-\u003esector_size, rx_size \u003d arg-\u003esector_size, filled \u003d 1;"},{"line_number":90,"context_line":"\t\t\t tx_size \u003e 0; tx_size--) {"},{"line_number":91,"context_line":"\t\t\twait_tx_available(status);"},{"line_number":92,"context_line":"\t\t\tif (!tx_in_progress(status)) {"},{"line_number":93,"context_line":"\t\t\t\tRET_ERROR;"},{"line_number":94,"context_line":"\t\t\t\tBKPT;"},{"line_number":95,"context_line":"\t\t\t\treturn;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3f3e3fd1_bcecd2d1","line":92,"in_reply_to":"571167cb_ce5052e2","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":89,"context_line":"\t\tfor (tx_size \u003d arg-\u003esector_size, rx_size \u003d arg-\u003esector_size, filled \u003d 1;"},{"line_number":90,"context_line":"\t\t\t tx_size \u003e 0; tx_size--) {"},{"line_number":91,"context_line":"\t\t\twait_tx_available(status);"},{"line_number":92,"context_line":"\t\t\tif (!tx_in_progress(status)) {"},{"line_number":93,"context_line":"\t\t\t\tRET_ERROR;"},{"line_number":94,"context_line":"\t\t\t\tBKPT;"},{"line_number":95,"context_line":"\t\t\t\treturn;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"571167cb_ce5052e2","line":92,"in_reply_to":"5c8641b2_4e7fa2ab","updated":"2024-10-06 08:40:02.000000000","message":"I think my board\u0027s tracing is bad, as SPI data gets corrupted well below the Flash chip\u0027s maximum speed. So, I cannot test high communication speed cases.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ee5739ec9d7def6b09bca87379e04e951b3a1fbd","unresolved":true,"context_lines":[{"line_number":89,"context_line":"\t\tfor (tx_size \u003d arg-\u003esector_size, rx_size \u003d arg-\u003esector_size, filled \u003d 1;"},{"line_number":90,"context_line":"\t\t\t tx_size \u003e 0; tx_size--) {"},{"line_number":91,"context_line":"\t\t\twait_tx_available(status);"},{"line_number":92,"context_line":"\t\t\tif (!tx_in_progress(status)) {"},{"line_number":93,"context_line":"\t\t\t\tRET_ERROR;"},{"line_number":94,"context_line":"\t\t\t\tBKPT;"},{"line_number":95,"context_line":"\t\t\t\treturn;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"5c8641b2_4e7fa2ab","line":92,"in_reply_to":"8e90d57a_e10790c6","updated":"2024-09-30 18:26:20.000000000","message":"Nothing could be done in that case but lowering communication speed, as CS could not be controlled manually.\n\nAs in the previous comment, this check should probably be moved after the read.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"}],"contrib/loaders/flash/dw-spi/dw-spi.h":[{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":5,"context_line":"#include \u003cstdint.h\u003e"},{"line_number":6,"context_line":"#include \u003csys/param.h\u003e"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#define BIT(x) (1 \u003c\u003c (x))"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"/**"},{"line_number":11,"context_line":" * Set when serial transfer is in progress."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"0c6c0da8_37394527","line":8,"updated":"2024-09-29 09:08:22.000000000","message":"This is already defined here:\nsrc/helper/bits.h:19:#define BIT(nr)","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":5,"context_line":"#include \u003cstdint.h\u003e"},{"line_number":6,"context_line":"#include \u003csys/param.h\u003e"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#define BIT(x) (1 \u003c\u003c (x))"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"/**"},{"line_number":11,"context_line":" * Set when serial transfer is in progress."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ec4523b0_f5615fc3","line":8,"in_reply_to":"0c6c0da8_37394527","updated":"2024-10-06 08:40:02.000000000","message":"Removed this define","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"#include \u003cstdint.h\u003e"},{"line_number":6,"context_line":"#include \u003csys/param.h\u003e"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"#define BIT(x) (1 \u003c\u003c (x))"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"/**"},{"line_number":11,"context_line":" * Set when serial transfer is in progress."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"e409d6c6_da66d829","line":8,"in_reply_to":"ec4523b0_f5615fc3","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":31,"context_line":"/**"},{"line_number":32,"context_line":" * Set when receive FIFO is full."},{"line_number":33,"context_line":" */"},{"line_number":34,"context_line":"#define STATUS_RFF BIT(4)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"/**"},{"line_number":37,"context_line":" * Insert breakpoint."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"d9128d6b_e74da4f1","line":34,"updated":"2024-09-29 09:08:22.000000000","message":"Not  used","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":31,"context_line":"/**"},{"line_number":32,"context_line":" * Set when receive FIFO is full."},{"line_number":33,"context_line":" */"},{"line_number":34,"context_line":"#define STATUS_RFF BIT(4)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"/**"},{"line_number":37,"context_line":" * Insert breakpoint."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"faddbeb1_c5b53aa6","line":34,"in_reply_to":"d9128d6b_e74da4f1","updated":"2024-10-06 08:40:02.000000000","message":"Removed this","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"/**"},{"line_number":32,"context_line":" * Set when receive FIFO is full."},{"line_number":33,"context_line":" */"},{"line_number":34,"context_line":"#define STATUS_RFF BIT(4)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"/**"},{"line_number":37,"context_line":" * Insert breakpoint."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"67f699fa_80437a3d","line":34,"in_reply_to":"faddbeb1_c5b53aa6","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":50,"context_line":" *"},{"line_number":51,"context_line":" * Use asm for return values so that code does not get optimized out."},{"line_number":52,"context_line":" */"},{"line_number":53,"context_line":"#define RET_ERROR asm(\"addi $a0,$zero,1\\n\")"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"/**"},{"line_number":56,"context_line":" * @brief Check transmission is currently in progress."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"36f89d74_404a325e","line":53,"updated":"2024-09-29 09:08:22.000000000","message":"Comment for all previous defines, it is hard to distinguish the driver specific nature of this defines in the code. I would prefer to have driver specific prefix in it. So, we have global defines and driver specific defines","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":50,"context_line":" *"},{"line_number":51,"context_line":" * Use asm for return values so that code does not get optimized out."},{"line_number":52,"context_line":" */"},{"line_number":53,"context_line":"#define RET_ERROR asm(\"addi $a0,$zero,1\\n\")"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"/**"},{"line_number":56,"context_line":" * @brief Check transmission is currently in progress."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"8ba739d0_a052b19e","line":53,"in_reply_to":"36f89d74_404a325e","updated":"2024-10-06 08:40:02.000000000","message":"Added prefix `DW_SPI_` to device specific defines. Replaced `RET_OK`, `RET_ERROR` and `BKPT` with single `RETURN` define, as it is more readable.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":50,"context_line":" *"},{"line_number":51,"context_line":" * Use asm for return values so that code does not get optimized out."},{"line_number":52,"context_line":" */"},{"line_number":53,"context_line":"#define RET_ERROR asm(\"addi $a0,$zero,1\\n\")"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"/**"},{"line_number":56,"context_line":" * @brief Check transmission is currently in progress."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"0cef15b7_9e5bc72a","line":53,"in_reply_to":"8ba739d0_a052b19e","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":144,"context_line":" *"},{"line_number":145,"context_line":" * @param[in] data Pointer to DR register."},{"line_number":146,"context_line":" * @return RX FIFO byte."},{"line_number":147,"context_line":" */"},{"line_number":148,"context_line":"__attribute__((always_inline)) static inline uint8_t"},{"line_number":149,"context_line":"rcv_byte(volatile uint8_t *data)"},{"line_number":150,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"e5eab135_847b17d0","line":147,"updated":"2024-09-29 09:08:22.000000000","message":"For all comments in this driver. I love comments, but they should make work easy, not add additional work steps :) \nIn this case, If i read mutiple \"@param[in]\", i need to compared variable order with variable name and actual use case and then with comment. This is not good. Please, use \"@actual_variable_name\" format instead.\nThis is the proffered comment style:\nhttps://www.kernel.org/doc/html/v6.11/doc-guide/kernel-doc.html#function-documentation","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ee5739ec9d7def6b09bca87379e04e951b3a1fbd","unresolved":true,"context_lines":[{"line_number":144,"context_line":" *"},{"line_number":145,"context_line":" * @param[in] data Pointer to DR register."},{"line_number":146,"context_line":" * @return RX FIFO byte."},{"line_number":147,"context_line":" */"},{"line_number":148,"context_line":"__attribute__((always_inline)) static inline uint8_t"},{"line_number":149,"context_line":"rcv_byte(volatile uint8_t *data)"},{"line_number":150,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"f5dffd55_f35f7b0b","line":147,"in_reply_to":"aa708828_a7aa8a61","updated":"2024-09-30 18:26:20.000000000","message":"Yes, this style generates proper Doxygen docs. I\u0027ll add `:` to it.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"de38ad984295a0197e794783a201408097a43990","unresolved":true,"context_lines":[{"line_number":144,"context_line":" *"},{"line_number":145,"context_line":" * @param[in] data Pointer to DR register."},{"line_number":146,"context_line":" * @return RX FIFO byte."},{"line_number":147,"context_line":" */"},{"line_number":148,"context_line":"__attribute__((always_inline)) static inline uint8_t"},{"line_number":149,"context_line":"rcv_byte(volatile uint8_t *data)"},{"line_number":150,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"aa708828_a7aa8a61","line":147,"in_reply_to":"e5eab135_847b17d0","updated":"2024-09-29 12:49:34.000000000","message":"Vorget it, it seems to be common style at least in some files. Then, to make it more visible, add \":\" between variable name and the comment:\n * @param[in] data: Pointer to DR register.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":144,"context_line":" *"},{"line_number":145,"context_line":" * @param[in] data Pointer to DR register."},{"line_number":146,"context_line":" * @return RX FIFO byte."},{"line_number":147,"context_line":" */"},{"line_number":148,"context_line":"__attribute__((always_inline)) static inline uint8_t"},{"line_number":149,"context_line":"rcv_byte(volatile uint8_t *data)"},{"line_number":150,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"7f801654_32aec0ec","line":147,"in_reply_to":"f5dffd55_f35f7b0b","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":165,"context_line":"{"},{"line_number":166,"context_line":"\twait_tx_finish(status);"},{"line_number":167,"context_line":"\tflush_rx(status, data);"},{"line_number":168,"context_line":"\twait_tx_available(status);"},{"line_number":169,"context_line":"\tpush_byte(data, read_status_cmd);"},{"line_number":170,"context_line":"\tpush_byte(data, 0); // dummy write"},{"line_number":171,"context_line":"\twait_rx_available(status);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"5d552402_b11fcb0f","line":168,"updated":"2024-09-29 09:08:22.000000000","message":"Why wait_tx_available() is needed after wait_tx_finish()? In case of wait_tx_finish() we wait untill FIFO is empty, and with wait_tx_available() we wait until FIFO is not full. So, yes, if it is empty it is not full, why it is needed?","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":165,"context_line":"{"},{"line_number":166,"context_line":"\twait_tx_finish(status);"},{"line_number":167,"context_line":"\tflush_rx(status, data);"},{"line_number":168,"context_line":"\twait_tx_available(status);"},{"line_number":169,"context_line":"\tpush_byte(data, read_status_cmd);"},{"line_number":170,"context_line":"\tpush_byte(data, 0); // dummy write"},{"line_number":171,"context_line":"\twait_rx_available(status);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"939a5df8_2b9bfbbf","line":168,"in_reply_to":"5d552402_b11fcb0f","updated":"2024-10-06 08:40:02.000000000","message":"Removed this call","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":165,"context_line":"{"},{"line_number":166,"context_line":"\twait_tx_finish(status);"},{"line_number":167,"context_line":"\tflush_rx(status, data);"},{"line_number":168,"context_line":"\twait_tx_available(status);"},{"line_number":169,"context_line":"\tpush_byte(data, read_status_cmd);"},{"line_number":170,"context_line":"\tpush_byte(data, 0); // dummy write"},{"line_number":171,"context_line":"\twait_rx_available(status);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"cc2e611b_3c5b8385","line":168,"in_reply_to":"939a5df8_2b9bfbbf","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":167,"context_line":"\tflush_rx(status, data);"},{"line_number":168,"context_line":"\twait_tx_available(status);"},{"line_number":169,"context_line":"\tpush_byte(data, read_status_cmd);"},{"line_number":170,"context_line":"\tpush_byte(data, 0); // dummy write"},{"line_number":171,"context_line":"\twait_rx_available(status);"},{"line_number":172,"context_line":"\trcv_byte(data); // dummy read"},{"line_number":173,"context_line":"\twait_rx_available(status);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"7721197d_af619b14","line":170,"updated":"2024-09-29 09:08:22.000000000","message":"Please add explanation \"why\" this is needed. From the code read (not writer) perspective, there are two typical questions:\n1. what is doing\n2. why it is needed\n\nEspecially if there are suspect code parts like dummy read and write, it is very important to comment, why any one need to do dummy work.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":167,"context_line":"\tflush_rx(status, data);"},{"line_number":168,"context_line":"\twait_tx_available(status);"},{"line_number":169,"context_line":"\tpush_byte(data, read_status_cmd);"},{"line_number":170,"context_line":"\tpush_byte(data, 0); // dummy write"},{"line_number":171,"context_line":"\twait_rx_available(status);"},{"line_number":172,"context_line":"\trcv_byte(data); // dummy read"},{"line_number":173,"context_line":"\twait_rx_available(status);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"a2db14b2_eb881a47","line":170,"in_reply_to":"7721197d_af619b14","updated":"2024-10-06 08:40:02.000000000","message":"Added explanations to this and other dummy writes and reads.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":167,"context_line":"\tflush_rx(status, data);"},{"line_number":168,"context_line":"\twait_tx_available(status);"},{"line_number":169,"context_line":"\tpush_byte(data, read_status_cmd);"},{"line_number":170,"context_line":"\tpush_byte(data, 0); // dummy write"},{"line_number":171,"context_line":"\twait_rx_available(status);"},{"line_number":172,"context_line":"\trcv_byte(data); // dummy read"},{"line_number":173,"context_line":"\twait_rx_available(status);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"56c3db60_6f521f44","line":170,"in_reply_to":"a2db14b2_eb881a47","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"90c52d21ea452abffd0530ee80f0b0f573de24ef","unresolved":true,"context_lines":[{"line_number":186,"context_line":"\t\t\t uint8_t write_enable_cmd)"},{"line_number":187,"context_line":"{"},{"line_number":188,"context_line":"\twait_tx_finish(status);"},{"line_number":189,"context_line":"\twait_tx_available(status);"},{"line_number":190,"context_line":"\tpush_byte(data, write_enable_cmd);"},{"line_number":191,"context_line":"}"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"42332b5b_8b4732aa","line":189,"updated":"2024-09-29 09:08:22.000000000","message":"Here is the same, why finish and then available?","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":186,"context_line":"\t\t\t uint8_t write_enable_cmd)"},{"line_number":187,"context_line":"{"},{"line_number":188,"context_line":"\twait_tx_finish(status);"},{"line_number":189,"context_line":"\twait_tx_available(status);"},{"line_number":190,"context_line":"\tpush_byte(data, write_enable_cmd);"},{"line_number":191,"context_line":"}"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"c0054634_62b8c622","line":189,"in_reply_to":"26099e97_a5b81e83","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"e2cfbfc5b0bba69dfbedb175ec07568a01b7119a","unresolved":true,"context_lines":[{"line_number":186,"context_line":"\t\t\t uint8_t write_enable_cmd)"},{"line_number":187,"context_line":"{"},{"line_number":188,"context_line":"\twait_tx_finish(status);"},{"line_number":189,"context_line":"\twait_tx_available(status);"},{"line_number":190,"context_line":"\tpush_byte(data, write_enable_cmd);"},{"line_number":191,"context_line":"}"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"26099e97_a5b81e83","line":189,"in_reply_to":"42332b5b_8b4732aa","updated":"2024-10-06 08:40:02.000000000","message":"Removed this call","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"}],"doc/openocd.texi":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":6399,"context_line":""},{"line_number":6400,"context_line":"@example"},{"line_number":6401,"context_line":"flash bank $_FLASHNAME dw-spi 0x40000000 0x02000000 4 4 $_TARGETNAME freq 250000000 simc 0x70101000 spi_mst 0x70000024 if_owner_offset 6 speed 2000000"},{"line_number":6402,"context_line":"flash bank $_FLASHNAME dw-spi 0x40000000 0x02000000 4 4 $_TARGETNAME jaguar2 speed 2000000"},{"line_number":6403,"context_line":"@end example"},{"line_number":6404,"context_line":""},{"line_number":6405,"context_line":"The optional driver\u0027s arguments are"}],"source_content_type":"text/x-texinfo","patch_set":8,"id":"c6b596f3_544050be","line":6402,"updated":"2024-10-07 22:36:14.000000000","message":"I prefer you first list all the options, including the optional ones, then add the example.\nHere `speed` is unknown to the reader. I thought it was a typo of `freq`, instead it is described below...","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":6399,"context_line":""},{"line_number":6400,"context_line":"@example"},{"line_number":6401,"context_line":"flash bank $_FLASHNAME dw-spi 0x40000000 0x02000000 4 4 $_TARGETNAME freq 250000000 simc 0x70101000 spi_mst 0x70000024 if_owner_offset 6 speed 2000000"},{"line_number":6402,"context_line":"flash bank $_FLASHNAME dw-spi 0x40000000 0x02000000 4 4 $_TARGETNAME jaguar2 speed 2000000"},{"line_number":6403,"context_line":"@end example"},{"line_number":6404,"context_line":""},{"line_number":6405,"context_line":"The optional driver\u0027s arguments are"}],"source_content_type":"text/x-texinfo","patch_set":8,"id":"d6545fae_f18eb2fe","line":6402,"in_reply_to":"0fa6c189_cc4bd3e9","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":6399,"context_line":""},{"line_number":6400,"context_line":"@example"},{"line_number":6401,"context_line":"flash bank $_FLASHNAME dw-spi 0x40000000 0x02000000 4 4 $_TARGETNAME freq 250000000 simc 0x70101000 spi_mst 0x70000024 if_owner_offset 6 speed 2000000"},{"line_number":6402,"context_line":"flash bank $_FLASHNAME dw-spi 0x40000000 0x02000000 4 4 $_TARGETNAME jaguar2 speed 2000000"},{"line_number":6403,"context_line":"@end example"},{"line_number":6404,"context_line":""},{"line_number":6405,"context_line":"The optional driver\u0027s arguments are"}],"source_content_type":"text/x-texinfo","patch_set":8,"id":"0fa6c189_cc4bd3e9","line":6402,"in_reply_to":"c6b596f3_544050be","updated":"2024-10-08 15:46:54.000000000","message":"Changed doc structure so that argument desertions are located above the example.","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"}],"src/flash/nor/Makefile.am":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":81,"context_line":"\t%D%/xcf.c \\"},{"line_number":82,"context_line":"\t%D%/xmc1xxx.c \\"},{"line_number":83,"context_line":"\t%D%/xmc4xxx.c \\"},{"line_number":84,"context_line":"\t%D%/dw-spi.c"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"NORHEADERS \u003d \\"},{"line_number":87,"context_line":"\t%D%/core.h \\"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"1dd15cd3_effb3dce","line":84,"updated":"2024-10-07 22:36:14.000000000","message":"please keep the list in alphabetic order","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":81,"context_line":"\t%D%/xcf.c \\"},{"line_number":82,"context_line":"\t%D%/xmc1xxx.c \\"},{"line_number":83,"context_line":"\t%D%/xmc4xxx.c \\"},{"line_number":84,"context_line":"\t%D%/dw-spi.c"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"NORHEADERS \u003d \\"},{"line_number":87,"context_line":"\t%D%/core.h \\"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"b3db50e0_bcbb6e3b","line":84,"in_reply_to":"1dd15cd3_effb3dce","updated":"2024-10-08 15:46:54.000000000","message":"Moved the line","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":81,"context_line":"\t%D%/xcf.c \\"},{"line_number":82,"context_line":"\t%D%/xmc1xxx.c \\"},{"line_number":83,"context_line":"\t%D%/xmc4xxx.c \\"},{"line_number":84,"context_line":"\t%D%/dw-spi.c"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"NORHEADERS \u003d \\"},{"line_number":87,"context_line":"\t%D%/core.h \\"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"bf00d526_393c4638","line":84,"in_reply_to":"b3db50e0_bcbb6e3b","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":98,"context_line":"\t%D%/stm32l4x.h \\"},{"line_number":99,"context_line":"\t%D%/stmqspi.h \\"},{"line_number":100,"context_line":"\t%D%/msp432.h \\"},{"line_number":101,"context_line":"\t%D%/dw-spi-helper.h"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"588dab8d_956117ed","line":101,"updated":"2024-10-07 22:36:14.000000000","message":"please keep the list in alphabetic order","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":98,"context_line":"\t%D%/stm32l4x.h \\"},{"line_number":99,"context_line":"\t%D%/stmqspi.h \\"},{"line_number":100,"context_line":"\t%D%/msp432.h \\"},{"line_number":101,"context_line":"\t%D%/dw-spi-helper.h"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"92ec7d2d_66622e24","line":101,"in_reply_to":"588dab8d_956117ed","updated":"2024-10-08 15:46:54.000000000","message":"Moved the line","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":98,"context_line":"\t%D%/stm32l4x.h \\"},{"line_number":99,"context_line":"\t%D%/stmqspi.h \\"},{"line_number":100,"context_line":"\t%D%/msp432.h \\"},{"line_number":101,"context_line":"\t%D%/dw-spi-helper.h"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"19196296_b09cc7d2","line":101,"in_reply_to":"92ec7d2d_66622e24","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"}],"src/flash/nor/driver.h":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":309,"context_line":"extern const struct flash_driver xcf_flash;"},{"line_number":310,"context_line":"extern const struct flash_driver xmc1xxx_flash;"},{"line_number":311,"context_line":"extern const struct flash_driver xmc4xxx_flash;"},{"line_number":312,"context_line":"extern const struct flash_driver dw_spi_flash;"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"#endif /* OPENOCD_FLASH_NOR_DRIVER_H */"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"9c8e758d_fcfdb353","line":312,"updated":"2024-10-07 22:36:14.000000000","message":"please keep this list in alphabetic order","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":309,"context_line":"extern const struct flash_driver xcf_flash;"},{"line_number":310,"context_line":"extern const struct flash_driver xmc1xxx_flash;"},{"line_number":311,"context_line":"extern const struct flash_driver xmc4xxx_flash;"},{"line_number":312,"context_line":"extern const struct flash_driver dw_spi_flash;"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"#endif /* OPENOCD_FLASH_NOR_DRIVER_H */"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"93cb6ddb_c0529566","line":312,"in_reply_to":"7b5a18f9_2fc88958","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":309,"context_line":"extern const struct flash_driver xcf_flash;"},{"line_number":310,"context_line":"extern const struct flash_driver xmc1xxx_flash;"},{"line_number":311,"context_line":"extern const struct flash_driver xmc4xxx_flash;"},{"line_number":312,"context_line":"extern const struct flash_driver dw_spi_flash;"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"#endif /* OPENOCD_FLASH_NOR_DRIVER_H */"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"7b5a18f9_2fc88958","line":312,"in_reply_to":"9c8e758d_fcfdb353","updated":"2024-10-08 15:46:54.000000000","message":"Moved the line.","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"}],"src/flash/nor/drivers.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":86,"context_line":"\t\u0026xmc4xxx_flash,"},{"line_number":87,"context_line":"\t\u0026w600_flash,"},{"line_number":88,"context_line":"\t\u0026rsl10_flash,"},{"line_number":89,"context_line":"\t\u0026dw_spi_flash,"},{"line_number":90,"context_line":"\tNULL,"},{"line_number":91,"context_line":"};"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":8,"id":"70130cc3_2979af6e","line":89,"updated":"2024-10-07 22:36:14.000000000","message":"please keep this list in alphabetic order","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":86,"context_line":"\t\u0026xmc4xxx_flash,"},{"line_number":87,"context_line":"\t\u0026w600_flash,"},{"line_number":88,"context_line":"\t\u0026rsl10_flash,"},{"line_number":89,"context_line":"\t\u0026dw_spi_flash,"},{"line_number":90,"context_line":"\tNULL,"},{"line_number":91,"context_line":"};"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":8,"id":"d0e64935_0f4338d6","line":89,"in_reply_to":"50fe8a71_5db1bc1c","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":86,"context_line":"\t\u0026xmc4xxx_flash,"},{"line_number":87,"context_line":"\t\u0026w600_flash,"},{"line_number":88,"context_line":"\t\u0026rsl10_flash,"},{"line_number":89,"context_line":"\t\u0026dw_spi_flash,"},{"line_number":90,"context_line":"\tNULL,"},{"line_number":91,"context_line":"};"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":8,"id":"50fe8a71_5db1bc1c","line":89,"in_reply_to":"70130cc3_2979af6e","updated":"2024-10-08 15:46:54.000000000","message":"Moved the line.","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"}],"src/flash/nor/dw-spi-helper.h":[{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"49ec2e95e74bee0979974ec8d42a7d293284e51d","unresolved":true,"context_lines":[{"line_number":17,"context_line":"/**"},{"line_number":18,"context_line":" * @brief Arguments for @transaction helper function."},{"line_number":19,"context_line":" */"},{"line_number":20,"context_line":"struct __attribute__((packed)) dw_spi_transaction_t {"},{"line_number":21,"context_line":"\tuint32_t buffer; ///\u003c Pointer to data buffer to send over SPI. Return"},{"line_number":22,"context_line":"\t\t\t\t\t ///\u003c values are stored in place of output data when"},{"line_number":23,"context_line":"\t\t\t\t\t ///\u003c @read_flag is 1."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"007cbbd6_d52d5dad","line":20,"updated":"2024-09-13 13:02:37.000000000","message":"The struct names in this header are extra confusing, it is named as type, but it is still a struct. Please remove _t suffix.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"098f3f24419754a3a2842dc6a79eaa323a4d1730","unresolved":false,"context_lines":[{"line_number":17,"context_line":"/**"},{"line_number":18,"context_line":" * @brief Arguments for @transaction helper function."},{"line_number":19,"context_line":" */"},{"line_number":20,"context_line":"struct __attribute__((packed)) dw_spi_transaction_t {"},{"line_number":21,"context_line":"\tuint32_t buffer; ///\u003c Pointer to data buffer to send over SPI. Return"},{"line_number":22,"context_line":"\t\t\t\t\t ///\u003c values are stored in place of output data when"},{"line_number":23,"context_line":"\t\t\t\t\t ///\u003c @read_flag is 1."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"a241e839_eeed3367","line":20,"in_reply_to":"007cbbd6_d52d5dad","updated":"2024-09-18 19:16:17.000000000","message":"Done","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"}],"src/flash/nor/dw-spi.c":[{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"49ec2e95e74bee0979974ec8d42a7d293284e51d","unresolved":true,"context_lines":[{"line_number":35,"context_line":"/**"},{"line_number":36,"context_line":" * @brief Check return code of a function."},{"line_number":37,"context_line":" */"},{"line_number":38,"context_line":"#define CHECK_RET(EXP)                                                    \\"},{"line_number":39,"context_line":"\tdo {                                                                  \\"},{"line_number":40,"context_line":"\t\tint ret;                                                          \\"},{"line_number":41,"context_line":"\t\tret \u003d (EXP);                                                      \\"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"10025fec_c9ec12eb","line":38,"updated":"2024-09-13 13:02:37.000000000","message":"please, no new CHECK_RET() per driver inventions. Make one central helper or openly code the retval checking. In most cases where it is used, users will not get any usable information. Imagine you will need to support this code remotely. User will send you long which will say nearly nothing.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"098f3f24419754a3a2842dc6a79eaa323a4d1730","unresolved":false,"context_lines":[{"line_number":35,"context_line":"/**"},{"line_number":36,"context_line":" * @brief Check return code of a function."},{"line_number":37,"context_line":" */"},{"line_number":38,"context_line":"#define CHECK_RET(EXP)                                                    \\"},{"line_number":39,"context_line":"\tdo {                                                                  \\"},{"line_number":40,"context_line":"\t\tint ret;                                                          \\"},{"line_number":41,"context_line":"\t\tret \u003d (EXP);                                                      \\"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"42c2ebf9_9da5a167","line":38,"in_reply_to":"10025fec_c9ec12eb","updated":"2024-09-18 19:16:17.000000000","message":"Replaced with explicit check and appropriate message","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"49ec2e95e74bee0979974ec8d42a7d293284e51d","unresolved":true,"context_lines":[{"line_number":43,"context_line":"\t\t\treturn ret;                                                   \\"},{"line_number":44,"context_line":"\t} while (0)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"// {{{ DW-SPI defs"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"/**"},{"line_number":49,"context_line":" * @brief IP block placement map. Used for dynamic definition of the"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"432be74f_2df1f233","line":46,"updated":"2024-09-13 13:02:37.000000000","message":"Please remove \"// {{{\" type of annotations.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"098f3f24419754a3a2842dc6a79eaa323a4d1730","unresolved":false,"context_lines":[{"line_number":43,"context_line":"\t\t\treturn ret;                                                   \\"},{"line_number":44,"context_line":"\t} while (0)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"// {{{ DW-SPI defs"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"/**"},{"line_number":49,"context_line":" * @brief IP block placement map. Used for dynamic definition of the"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"d0f12d7b_2ee39947","line":46,"in_reply_to":"432be74f_2df1f233","updated":"2024-09-18 19:16:17.000000000","message":"Done","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"49ec2e95e74bee0979974ec8d42a7d293284e51d","unresolved":true,"context_lines":[{"line_number":55,"context_line":"typedef struct {"},{"line_number":56,"context_line":"\tuint32_t\t  freq;\t   ///\u003c Clock frequency."},{"line_number":57,"context_line":"\ttarget_addr_t simc;\t   ///\u003c Absolute offset of SIMC register block."},{"line_number":58,"context_line":"\ttarget_addr_t spi_mst; ///\u003c Absolute offset of ICPU_CFG:SPI_MST"},{"line_number":59,"context_line":"\t\t\t\t\t\t   ///\u003c register. 0 if not available."},{"line_number":60,"context_line":"\tuint8_t si_if_owner_offset; ///\u003c Offset of \\ref si_mode_t bits in"},{"line_number":61,"context_line":"\t\t\t\t\t\t\t\t///\u003c ICPU_CFG:SPI_MST."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"7d1923ae_056d5570","line":58,"updated":"2024-09-13 13:02:37.000000000","message":"Please, do not invent new comment styles. The alignment looks horrible in vi and in browser. Just make comments one line above commented code.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"10907e0a99a8603adf0f7c23059578f2f1d77ee2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"typedef struct {"},{"line_number":56,"context_line":"\tuint32_t\t  freq;\t   ///\u003c Clock frequency."},{"line_number":57,"context_line":"\ttarget_addr_t simc;\t   ///\u003c Absolute offset of SIMC register block."},{"line_number":58,"context_line":"\ttarget_addr_t spi_mst; ///\u003c Absolute offset of ICPU_CFG:SPI_MST"},{"line_number":59,"context_line":"\t\t\t\t\t\t   ///\u003c register. 0 if not available."},{"line_number":60,"context_line":"\tuint8_t si_if_owner_offset; ///\u003c Offset of \\ref si_mode_t bits in"},{"line_number":61,"context_line":"\t\t\t\t\t\t\t\t///\u003c ICPU_CFG:SPI_MST."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"af699918_603b7606","line":58,"in_reply_to":"37da3646_36737e4e","updated":"2024-10-06 12:58:05.000000000","message":"Done","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"098f3f24419754a3a2842dc6a79eaa323a4d1730","unresolved":false,"context_lines":[{"line_number":55,"context_line":"typedef struct {"},{"line_number":56,"context_line":"\tuint32_t\t  freq;\t   ///\u003c Clock frequency."},{"line_number":57,"context_line":"\ttarget_addr_t simc;\t   ///\u003c Absolute offset of SIMC register block."},{"line_number":58,"context_line":"\ttarget_addr_t spi_mst; ///\u003c Absolute offset of ICPU_CFG:SPI_MST"},{"line_number":59,"context_line":"\t\t\t\t\t\t   ///\u003c register. 0 if not available."},{"line_number":60,"context_line":"\tuint8_t si_if_owner_offset; ///\u003c Offset of \\ref si_mode_t bits in"},{"line_number":61,"context_line":"\t\t\t\t\t\t\t\t///\u003c ICPU_CFG:SPI_MST."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"ceb702e5_ae02b051","line":58,"in_reply_to":"7d1923ae_056d5570","updated":"2024-09-18 19:16:17.000000000","message":"Done","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":55,"context_line":"typedef struct {"},{"line_number":56,"context_line":"\tuint32_t\t  freq;\t   ///\u003c Clock frequency."},{"line_number":57,"context_line":"\ttarget_addr_t simc;\t   ///\u003c Absolute offset of SIMC register block."},{"line_number":58,"context_line":"\ttarget_addr_t spi_mst; ///\u003c Absolute offset of ICPU_CFG:SPI_MST"},{"line_number":59,"context_line":"\t\t\t\t\t\t   ///\u003c register. 0 if not available."},{"line_number":60,"context_line":"\tuint8_t si_if_owner_offset; ///\u003c Offset of \\ref si_mode_t bits in"},{"line_number":61,"context_line":"\t\t\t\t\t\t\t\t///\u003c ICPU_CFG:SPI_MST."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"fa21f952_bc9f7713","line":58,"in_reply_to":"ceb702e5_ae02b051","updated":"2024-09-29 17:37:05.000000000","message":"This is actually not done, there is still same comment style in the latest patch \"///\u003c\", it should be \"//\".","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ee5739ec9d7def6b09bca87379e04e951b3a1fbd","unresolved":true,"context_lines":[{"line_number":55,"context_line":"typedef struct {"},{"line_number":56,"context_line":"\tuint32_t\t  freq;\t   ///\u003c Clock frequency."},{"line_number":57,"context_line":"\ttarget_addr_t simc;\t   ///\u003c Absolute offset of SIMC register block."},{"line_number":58,"context_line":"\ttarget_addr_t spi_mst; ///\u003c Absolute offset of ICPU_CFG:SPI_MST"},{"line_number":59,"context_line":"\t\t\t\t\t\t   ///\u003c register. 0 if not available."},{"line_number":60,"context_line":"\tuint8_t si_if_owner_offset; ///\u003c Offset of \\ref si_mode_t bits in"},{"line_number":61,"context_line":"\t\t\t\t\t\t\t\t///\u003c ICPU_CFG:SPI_MST."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"37da3646_36737e4e","line":58,"in_reply_to":"fa21f952_bc9f7713","updated":"2024-09-30 18:26:20.000000000","message":"It\u0027s [Doxygen inline documentation](https://www.doxygen.nl/manual/docblocks.html) for the structs and enums fields. [There\u0027s a workaround](https://stackoverflow.com/a/7210437), but IMHO it looks worse. Which style should I use?","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"49ec2e95e74bee0979974ec8d42a7d293284e51d","unresolved":true,"context_lines":[{"line_number":59,"context_line":"\t\t\t\t\t\t   ///\u003c register. 0 if not available."},{"line_number":60,"context_line":"\tuint8_t si_if_owner_offset; ///\u003c Offset of \\ref si_mode_t bits in"},{"line_number":61,"context_line":"\t\t\t\t\t\t\t\t///\u003c ICPU_CFG:SPI_MST."},{"line_number":62,"context_line":"} dw_spi_regmap_t;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"/**"},{"line_number":65,"context_line":" * @brief Register map for Jaguar2 switch devices."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"14734509_a6a41a1e","line":62,"updated":"2024-09-13 13:02:37.000000000","message":"https://openocd.org/doc-release/doxygen/stylec.html\n\nPlease, Do not mix the typedef keyword with struct.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"098f3f24419754a3a2842dc6a79eaa323a4d1730","unresolved":false,"context_lines":[{"line_number":59,"context_line":"\t\t\t\t\t\t   ///\u003c register. 0 if not available."},{"line_number":60,"context_line":"\tuint8_t si_if_owner_offset; ///\u003c Offset of \\ref si_mode_t bits in"},{"line_number":61,"context_line":"\t\t\t\t\t\t\t\t///\u003c ICPU_CFG:SPI_MST."},{"line_number":62,"context_line":"} dw_spi_regmap_t;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"/**"},{"line_number":65,"context_line":" * @brief Register map for Jaguar2 switch devices."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"dd468310_0c5aaf9a","line":62,"in_reply_to":"14734509_a6a41a1e","updated":"2024-09-18 19:16:17.000000000","message":"Done","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"49ec2e95e74bee0979974ec8d42a7d293284e51d","unresolved":true,"context_lines":[{"line_number":850,"context_line":"{"},{"line_number":851,"context_line":"\tdw_spi_driver_t *const driver\t   \u003d bank-\u003edriver_priv;"},{"line_number":852,"context_line":"\tconst size_t\t\t   buffer_size \u003d 1 + 3 + 1;"},{"line_number":853,"context_line":"\tuint8_t\t\t\t\t   buffer[buffer_size];"},{"line_number":854,"context_line":""},{"line_number":855,"context_line":"\tmemset(buffer, 0, buffer_size);"},{"line_number":856,"context_line":"\tbuffer[0] \u003d SPIFLASH_READ_ID;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"e7e1022e_1d5b4250","line":853,"updated":"2024-09-13 13:02:37.000000000","message":"remove tabs between types and variables","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"098f3f24419754a3a2842dc6a79eaa323a4d1730","unresolved":false,"context_lines":[{"line_number":850,"context_line":"{"},{"line_number":851,"context_line":"\tdw_spi_driver_t *const driver\t   \u003d bank-\u003edriver_priv;"},{"line_number":852,"context_line":"\tconst size_t\t\t   buffer_size \u003d 1 + 3 + 1;"},{"line_number":853,"context_line":"\tuint8_t\t\t\t\t   buffer[buffer_size];"},{"line_number":854,"context_line":""},{"line_number":855,"context_line":"\tmemset(buffer, 0, buffer_size);"},{"line_number":856,"context_line":"\tbuffer[0] \u003d SPIFLASH_READ_ID;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"ee6b573a_a65af260","line":853,"in_reply_to":"e7e1022e_1d5b4250","updated":"2024-09-18 19:16:17.000000000","message":"Done","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"49ec2e95e74bee0979974ec8d42a7d293284e51d","unresolved":true,"context_lines":[{"line_number":858,"context_line":"\tCHECK_RET(ctrl_transaction(bank, buffer, buffer_size, true));"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"\tbuffer[buffer_size - 1] \u003d 0;"},{"line_number":861,"context_line":"\tdriver-\u003eid\t\t\t\t\u003d le_to_h_u32(buffer + 1);"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"\treturn ERROR_OK;"},{"line_number":864,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"f9594f21_4d98ec78","line":861,"updated":"2024-09-13 13:02:37.000000000","message":"Please, remove tabs between \"\u003eid\" and \"\u003d\", use target_buffer_get_u32() instead.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"098f3f24419754a3a2842dc6a79eaa323a4d1730","unresolved":false,"context_lines":[{"line_number":858,"context_line":"\tCHECK_RET(ctrl_transaction(bank, buffer, buffer_size, true));"},{"line_number":859,"context_line":""},{"line_number":860,"context_line":"\tbuffer[buffer_size - 1] \u003d 0;"},{"line_number":861,"context_line":"\tdriver-\u003eid\t\t\t\t\u003d le_to_h_u32(buffer + 1);"},{"line_number":862,"context_line":""},{"line_number":863,"context_line":"\treturn ERROR_OK;"},{"line_number":864,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"d53af747_4467d275","line":861,"in_reply_to":"f9594f21_4d98ec78","updated":"2024-09-18 19:16:17.000000000","message":"Added comment for this line in V5. `le_to_h_u32` is used instead of `target_buffer_get_u32` because we\u0027re decoding not from the target\u0027s endianness, but from flash header\u0027s. And it is always little endian as per JEDEC SFDP.","commit_id":"70e9f3df01bb9ea75f5aa324e750056fb1ce5f8d"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":78,"context_line":"\t///\u003c SPI controller mode for reading/writing SPI Flash."},{"line_number":79,"context_line":"};"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"#define REG_CTRLR0 0x00 ///\u003c General configuration register."},{"line_number":82,"context_line":"#define REG_SIMCEN 0x08 ///\u003c Master controller enable register."},{"line_number":83,"context_line":"#define REG_SER 0x10 ///\u003c Slave select register."},{"line_number":84,"context_line":"#define REG_BAUDR 0x14 ///\u003c Baud rate configuration register."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1ad6a6bc_0a0c8950","line":81,"updated":"2024-09-29 17:37:05.000000000","message":"s/define /define DW_SPI_/","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":78,"context_line":"\t///\u003c SPI controller mode for reading/writing SPI Flash."},{"line_number":79,"context_line":"};"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"#define REG_CTRLR0 0x00 ///\u003c General configuration register."},{"line_number":82,"context_line":"#define REG_SIMCEN 0x08 ///\u003c Master controller enable register."},{"line_number":83,"context_line":"#define REG_SER 0x10 ///\u003c Slave select register."},{"line_number":84,"context_line":"#define REG_BAUDR 0x14 ///\u003c Baud rate configuration register."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"544dcd56_4a467a99","line":81,"in_reply_to":"1ad6a6bc_0a0c8950","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":124,"context_line":"/**"},{"line_number":125,"context_line":" * @brief Select SI controller mode."},{"line_number":126,"context_line":" *"},{"line_number":127,"context_line":" * Mode selection is skipped if spi_mst argument is not configured."},{"line_number":128,"context_line":" *"},{"line_number":129,"context_line":" * @param[in] bank Flash bank."},{"line_number":130,"context_line":" * @param[in] mode New controller mode."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3f555daa_4d0e7f70","line":127,"updated":"2024-09-29 17:37:05.000000000","message":"I see that it is skipped, but do not understand why.\nIf I undestand this correctly, this function is switch ownership for the SI interface (what ever meaning of SI is), in the Master Controller ownership, we will have read/write access, which is what we wont for the flashing functionality.\nI would love to have this information in that comment :)","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":124,"context_line":"/**"},{"line_number":125,"context_line":" * @brief Select SI controller mode."},{"line_number":126,"context_line":" *"},{"line_number":127,"context_line":" * Mode selection is skipped if spi_mst argument is not configured."},{"line_number":128,"context_line":" *"},{"line_number":129,"context_line":" * @param[in] bank Flash bank."},{"line_number":130,"context_line":" * @param[in] mode New controller mode."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"981b6574_34279e44","line":127,"in_reply_to":"3f555daa_4d0e7f70","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":161,"context_line":"/**"},{"line_number":162,"context_line":" * @brief Push controller mode."},{"line_number":163,"context_line":" *"},{"line_number":164,"context_line":" * Mode selection is skipped if spi_mst argument is not configured."},{"line_number":165,"context_line":" *"},{"line_number":166,"context_line":" * @param[in] bank Flash bank."},{"line_number":167,"context_line":" * @param[in] mode New controller mode."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"4a2eaf46_3c7b65be","line":164,"updated":"2024-09-29 17:37:05.000000000","message":"Please make comments usable.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":161,"context_line":"/**"},{"line_number":162,"context_line":" * @brief Push controller mode."},{"line_number":163,"context_line":" *"},{"line_number":164,"context_line":" * Mode selection is skipped if spi_mst argument is not configured."},{"line_number":165,"context_line":" *"},{"line_number":166,"context_line":" * @param[in] bank Flash bank."},{"line_number":167,"context_line":" * @param[in] mode New controller mode."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ae0f7b4a_39f21d45","line":164,"in_reply_to":"4a2eaf46_3c7b65be","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":200,"context_line":" * @return Command execution status."},{"line_number":201,"context_line":" */"},{"line_number":202,"context_line":"static int"},{"line_number":203,"context_line":"ctrl_mode_pop(const struct flash_bank *const bank)"},{"line_number":204,"context_line":"{"},{"line_number":205,"context_line":"\tconst struct dw_spi_driver *const driver \u003d bank-\u003edriver_priv;"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"81a230a1_8633a19c","line":203,"updated":"2024-09-29 17:37:05.000000000","message":"I prefer to keep push/pop naming for the stack operations. Even within this code, we have different naming for same operations, for example master_ctrl_restore() and ctrl_mode_pop() are doing actual restore operations.\n\nPlease rename:\nctrl_mode_push() -\u003e save_and_set_ctrl_mode()\nctrl_mode_pop() -\u003e restore_ctrl_mode()","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":200,"context_line":" * @return Command execution status."},{"line_number":201,"context_line":" */"},{"line_number":202,"context_line":"static int"},{"line_number":203,"context_line":"ctrl_mode_pop(const struct flash_bank *const bank)"},{"line_number":204,"context_line":"{"},{"line_number":205,"context_line":"\tconst struct dw_spi_driver *const driver \u003d bank-\u003edriver_priv;"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ca1bdd75_4cb7572e","line":203,"in_reply_to":"81a230a1_8633a19c","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":355,"context_line":"\tret |\u003d target_alloc_working_area(target, size, \u0026target_buffer);"},{"line_number":356,"context_line":"\tif (ret) {"},{"line_number":357,"context_line":"\t\tLOG_ERROR(\"could not allocate working area\");"},{"line_number":358,"context_line":"\t\treturn ret;"},{"line_number":359,"context_line":"\t}"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"\t// write algorithm code and buffer to working areas"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1dba33f2_7ebcb5b8","line":358,"updated":"2024-09-29 17:37:05.000000000","message":"Lol, ORed return values provide very usable information... :/","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":355,"context_line":"\tret |\u003d target_alloc_working_area(target, size, \u0026target_buffer);"},{"line_number":356,"context_line":"\tif (ret) {"},{"line_number":357,"context_line":"\t\tLOG_ERROR(\"could not allocate working area\");"},{"line_number":358,"context_line":"\t\treturn ret;"},{"line_number":359,"context_line":"\t}"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"\t// write algorithm code and buffer to working areas"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ce212527_55333a09","line":358,"in_reply_to":"1dba33f2_7ebcb5b8","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":1190,"context_line":"\tsize_t program_timeout \u003d 600;"},{"line_number":1191,"context_line":"\tsize_t read_timeout \u003d 600;"},{"line_number":1192,"context_line":"\tsize_t erase_check_timeout \u003d 600;"},{"line_number":1193,"context_line":"\tsize_t erase_timeout \u003d 600;"},{"line_number":1194,"context_line":"\tuint8_t chip_select_bitmask \u003d BIT(0);"},{"line_number":1195,"context_line":"\tbool read_boot_ctrl \u003d false;"},{"line_number":1196,"context_line":"\tstruct dw_spi_regmap regmap \u003d { 0 };"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"a815c69f_5bae876b","line":1193,"updated":"2024-09-29 17:37:05.000000000","message":"Please create defines for all magic numbers above","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":1190,"context_line":"\tsize_t program_timeout \u003d 600;"},{"line_number":1191,"context_line":"\tsize_t read_timeout \u003d 600;"},{"line_number":1192,"context_line":"\tsize_t erase_check_timeout \u003d 600;"},{"line_number":1193,"context_line":"\tsize_t erase_timeout \u003d 600;"},{"line_number":1194,"context_line":"\tuint8_t chip_select_bitmask \u003d BIT(0);"},{"line_number":1195,"context_line":"\tbool read_boot_ctrl \u003d false;"},{"line_number":1196,"context_line":"\tstruct dw_spi_regmap regmap \u003d { 0 };"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"45f39667_fa82ae9e","line":1193,"in_reply_to":"a815c69f_5bae876b","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"\t\t\tspeed \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1218,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"transaction_timeout\") \u003d\u003d 0) {"},{"line_number":1219,"context_line":"\t\t\ttransaction_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1220,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"program_timeout\") \u003d\u003d 0) {"},{"line_number":1221,"context_line":"\t\t\tprogram_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1222,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"read_timeout\") \u003d\u003d 0) {"},{"line_number":1223,"context_line":"\t\t\tread_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1e7e1cc5_844841dd","line":1220,"updated":"2024-09-29 17:37:05.000000000","message":"Non of this configurable timeout values are real help for the user.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"\t\t\tspeed \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1218,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"transaction_timeout\") \u003d\u003d 0) {"},{"line_number":1219,"context_line":"\t\t\ttransaction_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1220,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"program_timeout\") \u003d\u003d 0) {"},{"line_number":1221,"context_line":"\t\t\tprogram_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1222,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"read_timeout\") \u003d\u003d 0) {"},{"line_number":1223,"context_line":"\t\t\tread_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3dfa7ffc_20050fbe","line":1220,"updated":"2024-09-29 17:37:05.000000000","message":"Non of this configurable timeout values are real help for the user. All of this values depends on the SPI bus speed and size of payload. There is no reason to confuse user with it.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"\t\t\tspeed \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1218,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"transaction_timeout\") \u003d\u003d 0) {"},{"line_number":1219,"context_line":"\t\t\ttransaction_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1220,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"program_timeout\") \u003d\u003d 0) {"},{"line_number":1221,"context_line":"\t\t\tprogram_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1222,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"read_timeout\") \u003d\u003d 0) {"},{"line_number":1223,"context_line":"\t\t\tread_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"c7ed7115_6809843b","line":1220,"in_reply_to":"1e7e1cc5_844841dd","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"8db546c10b9fe9606d0f69816893ec0c4322056d","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"\t\t\tspeed \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1218,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"transaction_timeout\") \u003d\u003d 0) {"},{"line_number":1219,"context_line":"\t\t\ttransaction_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1220,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"program_timeout\") \u003d\u003d 0) {"},{"line_number":1221,"context_line":"\t\t\tprogram_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1222,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"read_timeout\") \u003d\u003d 0) {"},{"line_number":1223,"context_line":"\t\t\tread_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"5dcf0884_ec077ab6","line":1220,"in_reply_to":"283f1f8a_76a9f988","updated":"2024-10-03 20:18:55.000000000","message":"I\u0027ll replace them with single timeout argument.","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ee5739ec9d7def6b09bca87379e04e951b3a1fbd","unresolved":true,"context_lines":[{"line_number":1217,"context_line":"\t\t\tspeed \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1218,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"transaction_timeout\") \u003d\u003d 0) {"},{"line_number":1219,"context_line":"\t\t\ttransaction_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1220,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"program_timeout\") \u003d\u003d 0) {"},{"line_number":1221,"context_line":"\t\t\tprogram_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1222,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"read_timeout\") \u003d\u003d 0) {"},{"line_number":1223,"context_line":"\t\t\tread_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"283f1f8a_76a9f988","line":1220,"in_reply_to":"3dfa7ffc_20050fbe","updated":"2024-09-30 18:26:20.000000000","message":"Do you mean that these values should not be configured by the user but calculated by the driver instead?","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"\t\t\tspeed \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1218,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"transaction_timeout\") \u003d\u003d 0) {"},{"line_number":1219,"context_line":"\t\t\ttransaction_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1220,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"program_timeout\") \u003d\u003d 0) {"},{"line_number":1221,"context_line":"\t\t\tprogram_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1222,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"read_timeout\") \u003d\u003d 0) {"},{"line_number":1223,"context_line":"\t\t\tread_timeout \u003d strtol(CMD_ARGV[++idx], NULL, 0);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"5d9fe342_8412ed6b","line":1220,"in_reply_to":"5dcf0884_ec077ab6","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"43fe27fe14be2af8b222bfbd03e9e80d649afb30","unresolved":true,"context_lines":[{"line_number":1228,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"chip_select\") \u003d\u003d 0) {"},{"line_number":1229,"context_line":"\t\t\tchip_select_bitmask \u003d BIT(strtol(CMD_ARGV[++idx], NULL, 0));"},{"line_number":1230,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"bootctrl_read\") \u003d\u003d 0) {"},{"line_number":1231,"context_line":"\t\t\tread_boot_ctrl \u003d true;"},{"line_number":1232,"context_line":"\t\t} else {"},{"line_number":1233,"context_line":"\t\t\tLOG_WARNING(\"unknown argument %s\", CMD_ARGV[idx]);"},{"line_number":1234,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"91fab55f_6ed00abd","line":1231,"updated":"2024-09-29 17:37:05.000000000","message":"This option is not documented. If I see it correctly, if bootctrl_read is set to true, the controller will operate in read-only mode. Why is it needed?","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000410,"name":"Oleksij Rempel","email":"linux@rempel-privat.de","username":"olerem"},"change_message_id":"bc45139a91e1e11b2fc79681bdce973460aab6b3","unresolved":false,"context_lines":[{"line_number":1228,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"chip_select\") \u003d\u003d 0) {"},{"line_number":1229,"context_line":"\t\t\tchip_select_bitmask \u003d BIT(strtol(CMD_ARGV[++idx], NULL, 0));"},{"line_number":1230,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"bootctrl_read\") \u003d\u003d 0) {"},{"line_number":1231,"context_line":"\t\t\tread_boot_ctrl \u003d true;"},{"line_number":1232,"context_line":"\t\t} else {"},{"line_number":1233,"context_line":"\t\t\tLOG_WARNING(\"unknown argument %s\", CMD_ARGV[idx]);"},{"line_number":1234,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"fc29e2c9_62330a42","line":1231,"in_reply_to":"91fab55f_6ed00abd","updated":"2024-10-06 12:34:11.000000000","message":"Done","commit_id":"8d55de74e2480c4c06876d08b4499761b2932dbb"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":155,"context_line":"\tif (!regmap-\u003espi_mst)"},{"line_number":156,"context_line":"\t\treturn ERROR_OK;"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\tret \u003d target_read_u32(target, regmap-\u003espi_mst, \u0026ctrl);"},{"line_number":159,"context_line":"\tif (ret) {"},{"line_number":160,"context_line":"\t\tLOG_ERROR(\"DW SPI SPI:MST register read error\");"},{"line_number":161,"context_line":"\t\treturn ret;"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"cf626c5c_07cb5362","line":158,"updated":"2024-10-07 22:36:14.000000000","message":"the coding style requires to declare the variable at the first use, so here\n`int ret \u003d  ...`\nsame in the functions below\nNo need to change this in the files in the `contrib` folder","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":155,"context_line":"\tif (!regmap-\u003espi_mst)"},{"line_number":156,"context_line":"\t\treturn ERROR_OK;"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\tret \u003d target_read_u32(target, regmap-\u003espi_mst, \u0026ctrl);"},{"line_number":159,"context_line":"\tif (ret) {"},{"line_number":160,"context_line":"\t\tLOG_ERROR(\"DW SPI SPI:MST register read error\");"},{"line_number":161,"context_line":"\t\treturn ret;"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"da75c61b_ca6133af","line":158,"in_reply_to":"cf626c5c_07cb5362","updated":"2024-10-08 15:46:54.000000000","message":"Moved variable declarations.","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":155,"context_line":"\tif (!regmap-\u003espi_mst)"},{"line_number":156,"context_line":"\t\treturn ERROR_OK;"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"\tret \u003d target_read_u32(target, regmap-\u003espi_mst, \u0026ctrl);"},{"line_number":159,"context_line":"\tif (ret) {"},{"line_number":160,"context_line":"\t\tLOG_ERROR(\"DW SPI SPI:MST register read error\");"},{"line_number":161,"context_line":"\t\treturn ret;"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"fa32b393_99cff07a","line":158,"in_reply_to":"da75c61b_ca6133af","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":265,"context_line":"\tconst struct dw_spi_regmap *const regmap \u003d \u0026driver-\u003eregmap;"},{"line_number":266,"context_line":"\tint ret;"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"\t// 8 bit frame; Motorolla protocol; middle lo probe; TX RX mode"},{"line_number":269,"context_line":"\tconst uint32_t mode \u003d DW_SPI_REG_CTRLR0_DFS(0x7) |"},{"line_number":270,"context_line":"\t\t\t\t\t\t  DW_SPI_REG_CTRLR0_FRF(0) | DW_SPI_REG_CTRLR0_SCPH(0) |"},{"line_number":271,"context_line":"\t\t\t\t\t\t  DW_SPI_REG_CTRLR0_SCPOL(0) |"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"49893d45_11d1fc46","line":268,"updated":"2024-10-07 22:36:14.000000000","message":"typo s/Motorolla/Motorola/","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":265,"context_line":"\tconst struct dw_spi_regmap *const regmap \u003d \u0026driver-\u003eregmap;"},{"line_number":266,"context_line":"\tint ret;"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"\t// 8 bit frame; Motorolla protocol; middle lo probe; TX RX mode"},{"line_number":269,"context_line":"\tconst uint32_t mode \u003d DW_SPI_REG_CTRLR0_DFS(0x7) |"},{"line_number":270,"context_line":"\t\t\t\t\t\t  DW_SPI_REG_CTRLR0_FRF(0) | DW_SPI_REG_CTRLR0_SCPH(0) |"},{"line_number":271,"context_line":"\t\t\t\t\t\t  DW_SPI_REG_CTRLR0_SCPOL(0) |"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"3ab6a6a0_05333a17","line":268,"in_reply_to":"25aabf12_88c997fe","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":265,"context_line":"\tconst struct dw_spi_regmap *const regmap \u003d \u0026driver-\u003eregmap;"},{"line_number":266,"context_line":"\tint ret;"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"\t// 8 bit frame; Motorolla protocol; middle lo probe; TX RX mode"},{"line_number":269,"context_line":"\tconst uint32_t mode \u003d DW_SPI_REG_CTRLR0_DFS(0x7) |"},{"line_number":270,"context_line":"\t\t\t\t\t\t  DW_SPI_REG_CTRLR0_FRF(0) | DW_SPI_REG_CTRLR0_SCPH(0) |"},{"line_number":271,"context_line":"\t\t\t\t\t\t  DW_SPI_REG_CTRLR0_SCPOL(0) |"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"25aabf12_88c997fe","line":268,"in_reply_to":"49893d45_11d1fc46","updated":"2024-10-08 15:46:54.000000000","message":"replaced","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"0029c0d1c8e1fa7846b7c8464a0f83a675b67a61","unresolved":true,"context_lines":[{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"alloc_err:"},{"line_number":1443,"context_line":"size_err:"},{"line_number":1444,"context_line":"search_err:"},{"line_number":1445,"context_line":"\tdw_spi_master_ctrl_restore(bank);"},{"line_number":1446,"context_line":"\treturn ret;"},{"line_number":1447,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"cd9fb113_a51eb1f6","line":1444,"updated":"2024-10-07 22:36:14.000000000","message":"I think you can use a single label as the exit patch is the same for all of them","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"f73b2402f8ed1e6ee39d63df2663464c6894c5ba","unresolved":false,"context_lines":[{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"alloc_err:"},{"line_number":1443,"context_line":"size_err:"},{"line_number":1444,"context_line":"search_err:"},{"line_number":1445,"context_line":"\tdw_spi_master_ctrl_restore(bank);"},{"line_number":1446,"context_line":"\treturn ret;"},{"line_number":1447,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"35606af7_e51b608f","line":1444,"in_reply_to":"68eb57ae_6f3e2a0c","updated":"2024-10-15 15:09:52.000000000","message":"Done","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"6c4e4d80194d663acc1d7124d1cf8d293bd83a3b","unresolved":true,"context_lines":[{"line_number":1441,"context_line":""},{"line_number":1442,"context_line":"alloc_err:"},{"line_number":1443,"context_line":"size_err:"},{"line_number":1444,"context_line":"search_err:"},{"line_number":1445,"context_line":"\tdw_spi_master_ctrl_restore(bank);"},{"line_number":1446,"context_line":"\treturn ret;"},{"line_number":1447,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"68eb57ae_6f3e2a0c","line":1444,"in_reply_to":"cd9fb113_a51eb1f6","updated":"2024-10-08 15:46:54.000000000","message":"Changed to single label","commit_id":"dcf46364fbed3b98032c4137dd2e509b17bf909b"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":107,"context_line":"struct dw_spi_driver {"},{"line_number":108,"context_line":"\tbool probed; ///\u003c Bank is probed."},{"line_number":109,"context_line":"\tuint32_t id; ///\u003c Chip ID."},{"line_number":110,"context_line":"\tsize_t speed; ///\u003c Flash speed."},{"line_number":111,"context_line":"\tsize_t timeout; ///\u003c Flash timeout in milliseconds."},{"line_number":112,"context_line":"\tuint8_t chip_select_bitmask; ///\u003c Chip select bitmask."},{"line_number":113,"context_line":"\tbool four_byte_mode; ///\u003c Flash chip is in 32bit address mode."}],"source_content_type":"text/x-csrc","patch_set":9,"id":"7be1704b_93dd4ca9","line":110,"range":{"start_line":110,"start_character":1,"end_line":110,"end_character":7},"updated":"2025-01-14 14:19:47.000000000","message":"Please do not abuse `size_t` where `unsigned int` is appropriate.\nMany times.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":107,"context_line":"struct dw_spi_driver {"},{"line_number":108,"context_line":"\tbool probed; ///\u003c Bank is probed."},{"line_number":109,"context_line":"\tuint32_t id; ///\u003c Chip ID."},{"line_number":110,"context_line":"\tsize_t speed; ///\u003c Flash speed."},{"line_number":111,"context_line":"\tsize_t timeout; ///\u003c Flash timeout in milliseconds."},{"line_number":112,"context_line":"\tuint8_t chip_select_bitmask; ///\u003c Chip select bitmask."},{"line_number":113,"context_line":"\tbool four_byte_mode; ///\u003c Flash chip is in 32bit address mode."}],"source_content_type":"text/x-csrc","patch_set":9,"id":"9f1cfc1b_437bf4b8","line":110,"range":{"start_line":110,"start_character":1,"end_line":110,"end_character":7},"in_reply_to":"7be1704b_93dd4ca9","updated":"2025-01-19 18:44:01.000000000","message":"Replaced `size_t` with `unsigned int` where variable does not describe size.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":294,"context_line":"\tstruct dw_spi_driver *const driver \u003d bank-\u003edriver_priv;"},{"line_number":295,"context_line":"\tconst struct dw_spi_regmap *const regmap \u003d \u0026driver-\u003eregmap;"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"\tconst uint16_t div \u003d (regmap-\u003efreq / driver-\u003espeed) \u0026 0xfffe;"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"\tint ret \u003d target_write_u32(target, regmap-\u003esimc + DW_SPI_REG_BAUDR,"},{"line_number":300,"context_line":"\t\t\t\t\t\t\t   DW_SPI_REG_BAUDR_SCKDV(div));"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"8e90ddeb_053d44cb","line":297,"range":{"start_line":297,"start_character":53,"end_line":297,"end_character":61},"updated":"2025-01-14 14:19:47.000000000","message":"Is this correct?\nIMO the divisor should be `DIV_ROUND_UP` to ensure the SPI clock speed is at most the requested speed.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":294,"context_line":"\tstruct dw_spi_driver *const driver \u003d bank-\u003edriver_priv;"},{"line_number":295,"context_line":"\tconst struct dw_spi_regmap *const regmap \u003d \u0026driver-\u003eregmap;"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"\tconst uint16_t div \u003d (regmap-\u003efreq / driver-\u003espeed) \u0026 0xfffe;"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"\tint ret \u003d target_write_u32(target, regmap-\u003esimc + DW_SPI_REG_BAUDR,"},{"line_number":300,"context_line":"\t\t\t\t\t\t\t   DW_SPI_REG_BAUDR_SCKDV(div));"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"00390ce8_757edea3","line":297,"range":{"start_line":297,"start_character":53,"end_line":297,"end_character":61},"in_reply_to":"8e90ddeb_053d44cb","updated":"2025-01-19 18:44:01.000000000","message":"Slightly changed code and added comment. The divisor value is limited to `0xfffe` and LSB must be `0`.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":303,"context_line":"\t\treturn ret;"},{"line_number":304,"context_line":"\t}"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"\tdriver-\u003espeed \u003d regmap-\u003efreq / div;"},{"line_number":307,"context_line":"\tLOG_DEBUG(\"DW SPI setting NOR controller speed to %zu kHz\","},{"line_number":308,"context_line":"\t\t\t  driver-\u003espeed / 1000);"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"6e06010b_9726efec","line":306,"range":{"start_line":306,"start_character":1,"end_line":306,"end_character":14},"updated":"2025-01-14 14:19:47.000000000","message":"Better use just a temporary variable, keep the original speed request.\n`dw_spi_ctrl_configure_speed()` could be called more than once if user re-probes the flash.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":303,"context_line":"\t\treturn ret;"},{"line_number":304,"context_line":"\t}"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"\tdriver-\u003espeed \u003d regmap-\u003efreq / div;"},{"line_number":307,"context_line":"\tLOG_DEBUG(\"DW SPI setting NOR controller speed to %zu kHz\","},{"line_number":308,"context_line":"\t\t\t  driver-\u003espeed / 1000);"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"7083479e_17be12d0","line":306,"range":{"start_line":306,"start_character":1,"end_line":306,"end_character":14},"in_reply_to":"6e06010b_9726efec","updated":"2025-01-19 18:44:01.000000000","message":"Removed original speed overwrite as it\u0027s not used anywhere anyway.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":370,"context_line":"\t\t\t\t\t\t\t\t\t\u0026helper_args);"},{"line_number":371,"context_line":"\tif (ret) {"},{"line_number":372,"context_line":"\t\tLOG_ERROR(\"DW SPI could not allocate working area\");"},{"line_number":373,"context_line":"\t\treturn ret;"},{"line_number":374,"context_line":"\t}"},{"line_number":375,"context_line":"\tstruct working_area *target_buffer;"},{"line_number":376,"context_line":"\tret \u003d target_alloc_working_area(target, size, \u0026target_buffer);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"01798bdb_daa858b4","line":373,"updated":"2025-01-14 14:19:47.000000000","message":"Memory leak of previously allocated `helper`: here and following error returns.\nSimilarly `helper_args` could leak below.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":370,"context_line":"\t\t\t\t\t\t\t\t\t\u0026helper_args);"},{"line_number":371,"context_line":"\tif (ret) {"},{"line_number":372,"context_line":"\t\tLOG_ERROR(\"DW SPI could not allocate working area\");"},{"line_number":373,"context_line":"\t\treturn ret;"},{"line_number":374,"context_line":"\t}"},{"line_number":375,"context_line":"\tstruct working_area *target_buffer;"},{"line_number":376,"context_line":"\tret \u003d target_alloc_working_area(target, size, \u0026target_buffer);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"353a6962_ccc4e0e5","line":373,"in_reply_to":"01798bdb_daa858b4","updated":"2025-01-19 18:44:01.000000000","message":"Added `target_free_working_area` to cleanup code.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":605,"context_line":"\tstruct working_area *target_buffer;"},{"line_number":606,"context_line":"\tret \u003d target_alloc_working_area(target, buffer_size, \u0026target_buffer);"},{"line_number":607,"context_line":"\tif (ret) {"},{"line_number":608,"context_line":"\t\tLOG_ERROR(\"DW SPI could not allocate working area\");"},{"line_number":609,"context_line":"\t\treturn ret;"},{"line_number":610,"context_line":"\t}"},{"line_number":611,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"0324e724_052392d7","line":608,"updated":"2025-01-14 14:19:47.000000000","message":"Unlike other flash drivers this one requires a working area big enough for whole programmed image. The error message should explain it to user and could also print the requested size.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":605,"context_line":"\tstruct working_area *target_buffer;"},{"line_number":606,"context_line":"\tret \u003d target_alloc_working_area(target, buffer_size, \u0026target_buffer);"},{"line_number":607,"context_line":"\tif (ret) {"},{"line_number":608,"context_line":"\t\tLOG_ERROR(\"DW SPI could not allocate working area\");"},{"line_number":609,"context_line":"\t\treturn ret;"},{"line_number":610,"context_line":"\t}"},{"line_number":611,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"46351235_2ec149e9","line":608,"in_reply_to":"0324e724_052392d7","updated":"2025-01-19 18:44:01.000000000","message":"Added error message with total needed work area size. Additionally, this requirement is described in documentation page.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":613,"context_line":"\tret \u003d target_write_buffer(target, helper-\u003eaddress, target_code_size,"},{"line_number":614,"context_line":"\t\t\t\t\t\t\t  target_code);"},{"line_number":615,"context_line":"\tif (ret) {"},{"line_number":616,"context_line":"\t\ttarget_free_all_working_areas(target);"},{"line_number":617,"context_line":"\t\tLOG_ERROR(\"DW SPI writing to working area error\");"},{"line_number":618,"context_line":"\t\treturn ret;"},{"line_number":619,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"c014666e_1bf58b47","line":616,"range":{"start_line":616,"start_character":2,"end_line":616,"end_character":31},"updated":"2025-01-14 14:19:47.000000000","message":"Free only the areas allocated by the driver. `target_free_all_working_areas()` could cause problems if other parts of code has allocated an area. Not possible in the current version however we plan to support persistent working area alloc. Please replace all `target_free_all_working_areas()` usages.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":613,"context_line":"\tret \u003d target_write_buffer(target, helper-\u003eaddress, target_code_size,"},{"line_number":614,"context_line":"\t\t\t\t\t\t\t  target_code);"},{"line_number":615,"context_line":"\tif (ret) {"},{"line_number":616,"context_line":"\t\ttarget_free_all_working_areas(target);"},{"line_number":617,"context_line":"\t\tLOG_ERROR(\"DW SPI writing to working area error\");"},{"line_number":618,"context_line":"\t\treturn ret;"},{"line_number":619,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"0cde2240_458144e3","line":616,"range":{"start_line":616,"start_character":2,"end_line":616,"end_character":31},"in_reply_to":"c014666e_1bf58b47","updated":"2025-01-19 18:44:01.000000000","message":"Added separate `target_free_working_area` calls to cleanup code.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":940,"context_line":"static int"},{"line_number":941,"context_line":"dw_spi_wait_finish(const struct flash_bank *const bank, size_t timeout)"},{"line_number":942,"context_line":"{"},{"line_number":943,"context_line":"\tfor (size_t count \u003d 0; count \u003c timeout; count++) {"},{"line_number":944,"context_line":"\t\tuint8_t status;"},{"line_number":945,"context_line":"\t\tint ret \u003d dw_spi_read_status(bank, \u0026status);"},{"line_number":946,"context_line":"\t\tif (ret) {"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"4d29c393_2c23bd02","line":943,"range":{"start_line":943,"start_character":32,"end_line":943,"end_character":39},"updated":"2025-01-14 14:19:47.000000000","message":"Please use `timeval_ms()` for reasonable timing precision.\n`dw_spi_read_status()` could take tens or even hundreds ms.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":940,"context_line":"static int"},{"line_number":941,"context_line":"dw_spi_wait_finish(const struct flash_bank *const bank, size_t timeout)"},{"line_number":942,"context_line":"{"},{"line_number":943,"context_line":"\tfor (size_t count \u003d 0; count \u003c timeout; count++) {"},{"line_number":944,"context_line":"\t\tuint8_t status;"},{"line_number":945,"context_line":"\t\tint ret \u003d dw_spi_read_status(bank, \u0026status);"},{"line_number":946,"context_line":"\t\tif (ret) {"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"0ba02ef1_d7d769fa","line":943,"range":{"start_line":943,"start_character":32,"end_line":943,"end_character":39},"in_reply_to":"4d29c393_2c23bd02","updated":"2025-01-19 18:44:01.000000000","message":"Refactored to use `timeval_ms`.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":950,"context_line":"\t\tif (!(status \u0026 SPIFLASH_BSY_BIT))"},{"line_number":951,"context_line":"\t\t\treturn ERROR_OK;"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"\t\tusleep(1000);"},{"line_number":954,"context_line":"\t}"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"\tLOG_ERROR(\"DW SPI process timeout\");"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"488c0e68_f22d2ea2","line":953,"updated":"2025-01-14 14:19:47.000000000","message":"Use alive_sleep(1) to keep gdb connection alive.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":950,"context_line":"\t\tif (!(status \u0026 SPIFLASH_BSY_BIT))"},{"line_number":951,"context_line":"\t\t\treturn ERROR_OK;"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"\t\tusleep(1000);"},{"line_number":954,"context_line":"\t}"},{"line_number":955,"context_line":""},{"line_number":956,"context_line":"\tLOG_ERROR(\"DW SPI process timeout\");"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"afed1828_6d7c1422","line":953,"in_reply_to":"488c0e68_f22d2ea2","updated":"2025-01-19 18:44:01.000000000","message":"Replaced function","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":1020,"context_line":"\t}"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"\tfor (size_t sector_idx \u003d 0; sector_idx \u003c bank-\u003enum_sectors; sector_idx++)"},{"line_number":1023,"context_line":"\t\tbank-\u003esectors[sector_idx].is_erased \u003d 1;"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"\treturn ERROR_OK;"},{"line_number":1026,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"e7f4cd33_5b556e5d","line":1023,"updated":"2025-01-14 14:19:47.000000000","message":"Please read the comment of `is_erased` in `src/flash/nor/core.h`","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"\t}"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"\tfor (size_t sector_idx \u003d 0; sector_idx \u003c bank-\u003enum_sectors; sector_idx++)"},{"line_number":1023,"context_line":"\t\tbank-\u003esectors[sector_idx].is_erased \u003d 1;"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"\treturn ERROR_OK;"},{"line_number":1026,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"b1fe7de4_915d7b97","line":1023,"in_reply_to":"e7f4cd33_5b556e5d","updated":"2025-01-19 18:44:01.000000000","message":"Removed unneeded `is_erased` logic.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":1060,"context_line":"\t}"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"\tfor (size_t sector_idx \u003d first; sector_idx \u003c\u003d last; sector_idx++)"},{"line_number":1063,"context_line":"\t\tbank-\u003esectors[sector_idx].is_erased \u003d 1;"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"\treturn ERROR_OK;"},{"line_number":1066,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"e38c8c78_b13afb84","line":1063,"updated":"2025-01-14 14:19:47.000000000","message":"Please read the comment of `is_erased` in `src/flash/nor/core.h`","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":1060,"context_line":"\t}"},{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":"\tfor (size_t sector_idx \u003d first; sector_idx \u003c\u003d last; sector_idx++)"},{"line_number":1063,"context_line":"\t\tbank-\u003esectors[sector_idx].is_erased \u003d 1;"},{"line_number":1064,"context_line":""},{"line_number":1065,"context_line":"\treturn ERROR_OK;"},{"line_number":1066,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"3e0ee927_ade113cd","line":1063,"in_reply_to":"e38c8c78_b13afb84","updated":"2025-01-19 18:44:01.000000000","message":"Removed unneeded `is_erased` logic.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":1133,"context_line":"\t\t sector_idx \u003c ((offset + count) / sector_size +"},{"line_number":1134,"context_line":"\t\t\t\t\t   ((offset + count) % sector_size ? 1 : 0));"},{"line_number":1135,"context_line":"\t\t sector_idx++) {"},{"line_number":1136,"context_line":"\t\tif (bank-\u003esectors[sector_idx].is_erased \u003d\u003d 0)"},{"line_number":1137,"context_line":"\t\t\tLOG_WARNING(\"DW SPI writing to not erased \""},{"line_number":1138,"context_line":"\t\t\t\t\t\t\"flash sector %zd\","},{"line_number":1139,"context_line":"\t\t\t\t\t\tsector_idx);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"cdb9e6c7_5123575c","line":1136,"range":{"start_line":1136,"start_character":32,"end_line":1136,"end_character":41},"updated":"2025-01-14 14:19:47.000000000","message":"Please read the comment of `is_erased` in `src/flash/nor/core.h`","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":1133,"context_line":"\t\t sector_idx \u003c ((offset + count) / sector_size +"},{"line_number":1134,"context_line":"\t\t\t\t\t   ((offset + count) % sector_size ? 1 : 0));"},{"line_number":1135,"context_line":"\t\t sector_idx++) {"},{"line_number":1136,"context_line":"\t\tif (bank-\u003esectors[sector_idx].is_erased \u003d\u003d 0)"},{"line_number":1137,"context_line":"\t\t\tLOG_WARNING(\"DW SPI writing to not erased \""},{"line_number":1138,"context_line":"\t\t\t\t\t\t\"flash sector %zd\","},{"line_number":1139,"context_line":"\t\t\t\t\t\tsector_idx);"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"6a08e830_6e7cda32","line":1136,"range":{"start_line":1136,"start_character":32,"end_line":1136,"end_character":41},"in_reply_to":"cdb9e6c7_5123575c","updated":"2025-01-19 18:44:01.000000000","message":"Removed unneeded `is_erased` logic.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":1216,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"\tfor (size_t idx \u003d 6; idx \u003c CMD_ARGC; idx++) {"},{"line_number":1219,"context_line":"\t\tif (strcmp(CMD_ARGV[idx], \"jaguar2\") \u003d\u003d 0) {"},{"line_number":1220,"context_line":"\t\t\t// Fast config for Jaguar2 chips."},{"line_number":1221,"context_line":"\t\t\tmemcpy(\u0026regmap, \u0026jaguar2_regmap, sizeof(jaguar2_regmap));"},{"line_number":1222,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"ocelot\") \u003d\u003d 0) {"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"61b40853_d9df412b","line":1219,"range":{"start_line":1219,"start_character":29,"end_line":1219,"end_character":36},"updated":"2025-01-14 14:19:47.000000000","message":"Use `-jaguar2` notation for position independent options","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":1216,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":1217,"context_line":""},{"line_number":1218,"context_line":"\tfor (size_t idx \u003d 6; idx \u003c CMD_ARGC; idx++) {"},{"line_number":1219,"context_line":"\t\tif (strcmp(CMD_ARGV[idx], \"jaguar2\") \u003d\u003d 0) {"},{"line_number":1220,"context_line":"\t\t\t// Fast config for Jaguar2 chips."},{"line_number":1221,"context_line":"\t\t\tmemcpy(\u0026regmap, \u0026jaguar2_regmap, sizeof(jaguar2_regmap));"},{"line_number":1222,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"ocelot\") \u003d\u003d 0) {"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"60611fa3_f11dc209","line":1219,"range":{"start_line":1219,"start_character":29,"end_line":1219,"end_character":36},"in_reply_to":"61b40853_d9df412b","updated":"2025-01-19 18:44:01.000000000","message":"Changed all options to use `-arg` notation.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":1223,"context_line":"\t\t\t// Fast config for Ocelot chips."},{"line_number":1224,"context_line":"\t\t\tmemcpy(\u0026regmap, \u0026ocelot_regmap, sizeof(ocelot_regmap));"},{"line_number":1225,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"freq\") \u003d\u003d 0) {"},{"line_number":1226,"context_line":"\t\t\tregmap.freq \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1227,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"simc\") \u003d\u003d 0) {"},{"line_number":1228,"context_line":"\t\t\tregmap.simc \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1229,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"spi_mst\") \u003d\u003d 0) {"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"8578d076_cdb64641","line":1226,"range":{"start_line":1226,"start_character":3,"end_line":1226,"end_character":50},"updated":"2025-01-14 14:19:47.000000000","message":"Please use `COMMAND_PARSE_NUMBER()` instead of all `strtol()\u0027","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":1223,"context_line":"\t\t\t// Fast config for Ocelot chips."},{"line_number":1224,"context_line":"\t\t\tmemcpy(\u0026regmap, \u0026ocelot_regmap, sizeof(ocelot_regmap));"},{"line_number":1225,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"freq\") \u003d\u003d 0) {"},{"line_number":1226,"context_line":"\t\t\tregmap.freq \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1227,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"simc\") \u003d\u003d 0) {"},{"line_number":1228,"context_line":"\t\t\tregmap.simc \u003d strtol(CMD_ARGV[++idx], NULL, 0);"},{"line_number":1229,"context_line":"\t\t} else if (strcmp(CMD_ARGV[idx], \"spi_mst\") \u003d\u003d 0) {"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"802faf4a_a44b0f73","line":1226,"range":{"start_line":1226,"start_character":3,"end_line":1226,"end_character":50},"in_reply_to":"8578d076_cdb64641","updated":"2025-01-19 18:44:01.000000000","message":"Replaced calls.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":1381,"context_line":"\tbank-\u003ewrite_start_alignment \u003d 0;"},{"line_number":1382,"context_line":"\tbank-\u003ewrite_end_alignment \u003d 0;"},{"line_number":1383,"context_line":""},{"line_number":1384,"context_line":"\tuint32_t flash_size \u003d driver-\u003espi_flash-\u003esize_in_bytes;"},{"line_number":1385,"context_line":"\tif (flash_size \u003e bank-\u003esize)"},{"line_number":1386,"context_line":"\t\tLOG_WARNING(\"DW SPI probed flash size 0x%x is \""},{"line_number":1387,"context_line":"\t\t\t\t\t\"greater then declared 0x%x\","}],"source_content_type":"text/x-csrc","patch_set":9,"id":"afb44b2d_e6cd1ac5","line":1384,"range":{"start_line":1384,"start_character":16,"end_line":1384,"end_character":20},"updated":"2025-01-14 14:19:47.000000000","message":"Most spi flash drivers allow to configure zero bank-\u003esize and use the detected size then.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":1381,"context_line":"\tbank-\u003ewrite_start_alignment \u003d 0;"},{"line_number":1382,"context_line":"\tbank-\u003ewrite_end_alignment \u003d 0;"},{"line_number":1383,"context_line":""},{"line_number":1384,"context_line":"\tuint32_t flash_size \u003d driver-\u003espi_flash-\u003esize_in_bytes;"},{"line_number":1385,"context_line":"\tif (flash_size \u003e bank-\u003esize)"},{"line_number":1386,"context_line":"\t\tLOG_WARNING(\"DW SPI probed flash size 0x%x is \""},{"line_number":1387,"context_line":"\t\t\t\t\t\"greater then declared 0x%x\","}],"source_content_type":"text/x-csrc","patch_set":9,"id":"9ca9d3e9_6a117bd7","line":1384,"range":{"start_line":1384,"start_character":16,"end_line":1384,"end_character":20},"in_reply_to":"afb44b2d_e6cd1ac5","updated":"2025-01-19 18:44:01.000000000","message":"Added support for zero `bank-\u003esize` value.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":1394,"context_line":"\t\tgoto err;"},{"line_number":1395,"context_line":"\t}"},{"line_number":1396,"context_line":"\tbank-\u003enum_sectors \u003d bank-\u003esize / driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1397,"context_line":"\tbank-\u003esectors \u003d malloc(sizeof(struct flash_sector) * bank-\u003enum_sectors);"},{"line_number":1398,"context_line":"\tif (!bank-\u003esectors) {"},{"line_number":1399,"context_line":"\t\tLOG_ERROR(\"could not allocate memory\");"},{"line_number":1400,"context_line":"\t\tret \u003d ERROR_FAIL;"},{"line_number":1401,"context_line":"\t\tgoto err;"},{"line_number":1402,"context_line":"\t}"},{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"\tuint32_t offset \u003d 0;"},{"line_number":1405,"context_line":"\tfor (size_t sector_idx \u003d 0; sector_idx \u003c bank-\u003enum_sectors; sector_idx++) {"},{"line_number":1406,"context_line":"\t\tbank-\u003esectors[sector_idx].size \u003d driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1407,"context_line":"\t\tbank-\u003esectors[sector_idx].offset \u003d offset;"},{"line_number":1408,"context_line":"\t\t// set initial erased value to unknown"},{"line_number":1409,"context_line":"\t\tbank-\u003esectors[sector_idx].is_erased \u003d 2;"},{"line_number":1410,"context_line":"\t\tbank-\u003esectors[sector_idx].is_protected \u003d 0;"},{"line_number":1411,"context_line":"\t\toffset +\u003d driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1412,"context_line":"\t}"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"\tdriver-\u003eprobed \u003d true;"},{"line_number":1415,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"c094f46d_dee1e5a1","line":1412,"range":{"start_line":1397,"start_character":1,"end_line":1412,"end_character":2},"updated":"2025-01-14 14:19:47.000000000","message":"Use `alloc_block_array()` for equally sized sectors.\nFirst `free(bank-\u003esectors)` to eliminate leak if re-probed","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"7472260f3cee20cad7a0ed9ceeb19b82ecb99fa5","unresolved":true,"context_lines":[{"line_number":1394,"context_line":"\t\tgoto err;"},{"line_number":1395,"context_line":"\t}"},{"line_number":1396,"context_line":"\tbank-\u003enum_sectors \u003d bank-\u003esize / driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1397,"context_line":"\tbank-\u003esectors \u003d malloc(sizeof(struct flash_sector) * bank-\u003enum_sectors);"},{"line_number":1398,"context_line":"\tif (!bank-\u003esectors) {"},{"line_number":1399,"context_line":"\t\tLOG_ERROR(\"could not allocate memory\");"},{"line_number":1400,"context_line":"\t\tret \u003d ERROR_FAIL;"},{"line_number":1401,"context_line":"\t\tgoto err;"},{"line_number":1402,"context_line":"\t}"},{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"\tuint32_t offset \u003d 0;"},{"line_number":1405,"context_line":"\tfor (size_t sector_idx \u003d 0; sector_idx \u003c bank-\u003enum_sectors; sector_idx++) {"},{"line_number":1406,"context_line":"\t\tbank-\u003esectors[sector_idx].size \u003d driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1407,"context_line":"\t\tbank-\u003esectors[sector_idx].offset \u003d offset;"},{"line_number":1408,"context_line":"\t\t// set initial erased value to unknown"},{"line_number":1409,"context_line":"\t\tbank-\u003esectors[sector_idx].is_erased \u003d 2;"},{"line_number":1410,"context_line":"\t\tbank-\u003esectors[sector_idx].is_protected \u003d 0;"},{"line_number":1411,"context_line":"\t\toffset +\u003d driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1412,"context_line":"\t}"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"\tdriver-\u003eprobed \u003d true;"},{"line_number":1415,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"c855c3e5_299bd577","line":1412,"range":{"start_line":1397,"start_character":1,"end_line":1412,"end_character":2},"in_reply_to":"88d5df5d_6cc1c994","updated":"2025-01-17 20:16:27.000000000","message":"The manual `flash probe` command is intentionally always possible to give another chance if the previous trial went wrong or has to be refreshed for whatever reason. Manual probe is also good for flash driver testing. Of course all other commands use autoprobe, which limits probing to one shot.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"4782f621d6a1ac5a764c6a2be1c0486dbc7d09f9","unresolved":true,"context_lines":[{"line_number":1394,"context_line":"\t\tgoto err;"},{"line_number":1395,"context_line":"\t}"},{"line_number":1396,"context_line":"\tbank-\u003enum_sectors \u003d bank-\u003esize / driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1397,"context_line":"\tbank-\u003esectors \u003d malloc(sizeof(struct flash_sector) * bank-\u003enum_sectors);"},{"line_number":1398,"context_line":"\tif (!bank-\u003esectors) {"},{"line_number":1399,"context_line":"\t\tLOG_ERROR(\"could not allocate memory\");"},{"line_number":1400,"context_line":"\t\tret \u003d ERROR_FAIL;"},{"line_number":1401,"context_line":"\t\tgoto err;"},{"line_number":1402,"context_line":"\t}"},{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"\tuint32_t offset \u003d 0;"},{"line_number":1405,"context_line":"\tfor (size_t sector_idx \u003d 0; sector_idx \u003c bank-\u003enum_sectors; sector_idx++) {"},{"line_number":1406,"context_line":"\t\tbank-\u003esectors[sector_idx].size \u003d driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1407,"context_line":"\t\tbank-\u003esectors[sector_idx].offset \u003d offset;"},{"line_number":1408,"context_line":"\t\t// set initial erased value to unknown"},{"line_number":1409,"context_line":"\t\tbank-\u003esectors[sector_idx].is_erased \u003d 2;"},{"line_number":1410,"context_line":"\t\tbank-\u003esectors[sector_idx].is_protected \u003d 0;"},{"line_number":1411,"context_line":"\t\toffset +\u003d driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1412,"context_line":"\t}"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"\tdriver-\u003eprobed \u003d true;"},{"line_number":1415,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"88d5df5d_6cc1c994","line":1412,"range":{"start_line":1397,"start_character":1,"end_line":1412,"end_character":2},"in_reply_to":"c094f46d_dee1e5a1","updated":"2025-01-17 18:14:24.000000000","message":"\u003e First free(bank-\u003esectors) to eliminate leak if re-probed\n\nDoes this really leak? Shouldn\u0027t\n```c\nif (!driver)\n\treturn ERROR_FAIL;\n```\nand `driver-\u003eprobed` guard against repeated probing?","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":1394,"context_line":"\t\tgoto err;"},{"line_number":1395,"context_line":"\t}"},{"line_number":1396,"context_line":"\tbank-\u003enum_sectors \u003d bank-\u003esize / driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1397,"context_line":"\tbank-\u003esectors \u003d malloc(sizeof(struct flash_sector) * bank-\u003enum_sectors);"},{"line_number":1398,"context_line":"\tif (!bank-\u003esectors) {"},{"line_number":1399,"context_line":"\t\tLOG_ERROR(\"could not allocate memory\");"},{"line_number":1400,"context_line":"\t\tret \u003d ERROR_FAIL;"},{"line_number":1401,"context_line":"\t\tgoto err;"},{"line_number":1402,"context_line":"\t}"},{"line_number":1403,"context_line":""},{"line_number":1404,"context_line":"\tuint32_t offset \u003d 0;"},{"line_number":1405,"context_line":"\tfor (size_t sector_idx \u003d 0; sector_idx \u003c bank-\u003enum_sectors; sector_idx++) {"},{"line_number":1406,"context_line":"\t\tbank-\u003esectors[sector_idx].size \u003d driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1407,"context_line":"\t\tbank-\u003esectors[sector_idx].offset \u003d offset;"},{"line_number":1408,"context_line":"\t\t// set initial erased value to unknown"},{"line_number":1409,"context_line":"\t\tbank-\u003esectors[sector_idx].is_erased \u003d 2;"},{"line_number":1410,"context_line":"\t\tbank-\u003esectors[sector_idx].is_protected \u003d 0;"},{"line_number":1411,"context_line":"\t\toffset +\u003d driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1412,"context_line":"\t}"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"\tdriver-\u003eprobed \u003d true;"},{"line_number":1415,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"0521e73b_e08f3202","line":1412,"range":{"start_line":1397,"start_character":1,"end_line":1412,"end_character":2},"in_reply_to":"c855c3e5_299bd577","updated":"2025-01-19 18:44:01.000000000","message":"Added `free` and converted to use `alloc_block_array`.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"aab1e9f35a5b98d5d90c211b54a8d998d58f383f","unresolved":true,"context_lines":[{"line_number":1516,"context_line":"{"},{"line_number":1517,"context_line":"\tconst struct dw_spi_driver *const driver \u003d bank-\u003edriver_priv;"},{"line_number":1518,"context_line":"\tcommand_print(cmd, \"model %s\", driver-\u003espi_flash-\u003ename);"},{"line_number":1519,"context_line":"\tcommand_print(cmd, \"ID 0x%x\", driver-\u003eid);"},{"line_number":1520,"context_line":"\tcommand_print_sameline(cmd, \"size 0x%x\", bank-\u003esize);"},{"line_number":1521,"context_line":"\treturn ERROR_OK;"},{"line_number":1522,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"da09979a_9c0e938e","line":1519,"range":{"start_line":1519,"start_character":26,"end_line":1519,"end_character":28},"updated":"2025-01-14 14:19:47.000000000","message":"Please use formatting specifiers related to the argument type, e.g. `PRIx32` here.\nMore times.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"ad2f06c0577d25e15a1379a82e1619871efde46e","unresolved":false,"context_lines":[{"line_number":1516,"context_line":"{"},{"line_number":1517,"context_line":"\tconst struct dw_spi_driver *const driver \u003d bank-\u003edriver_priv;"},{"line_number":1518,"context_line":"\tcommand_print(cmd, \"model %s\", driver-\u003espi_flash-\u003ename);"},{"line_number":1519,"context_line":"\tcommand_print(cmd, \"ID 0x%x\", driver-\u003eid);"},{"line_number":1520,"context_line":"\tcommand_print_sameline(cmd, \"size 0x%x\", bank-\u003esize);"},{"line_number":1521,"context_line":"\treturn ERROR_OK;"},{"line_number":1522,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"751ed40b_e62b1e9b","line":1519,"range":{"start_line":1519,"start_character":26,"end_line":1519,"end_character":28},"in_reply_to":"da09979a_9c0e938e","updated":"2025-01-19 18:44:01.000000000","message":"Added formatting specifiers for fixed-width integers.","commit_id":"5221ee50e7975527784b33f4796d4184bbbd845c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c585e906d057fec731b0f393f40b8b5894120042","unresolved":true,"context_lines":[{"line_number":1451,"context_line":"\t}"},{"line_number":1452,"context_line":"\tbank-\u003enum_sectors \u003d bank-\u003esize / driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"\tif (bank-\u003esectors) {"},{"line_number":1455,"context_line":"\t\t// free previously allocated in case of reprobing"},{"line_number":1456,"context_line":"\t\tfree(bank-\u003esectors);"},{"line_number":1457,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"3b23e95f_008e89e6","line":1454,"updated":"2025-01-21 19:47:10.000000000","message":"Please without `if`, `free()` guaranties no-op on NULL argument","commit_id":"94b1eb5f7b77f89838310ffdca9e82daafe400ec"},{"author":{"_account_id":1002205,"name":"Matsievskiy S.V.","display_name":"Sergey Matsievskiy","email":"matsievskiysv@gmail.com","username":"matsievskiysv"},"change_message_id":"fe0554cd59ebfb24299562fbeda807c618d77a42","unresolved":false,"context_lines":[{"line_number":1451,"context_line":"\t}"},{"line_number":1452,"context_line":"\tbank-\u003enum_sectors \u003d bank-\u003esize / driver-\u003espi_flash-\u003esectorsize;"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"\tif (bank-\u003esectors) {"},{"line_number":1455,"context_line":"\t\t// free previously allocated in case of reprobing"},{"line_number":1456,"context_line":"\t\tfree(bank-\u003esectors);"},{"line_number":1457,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"62d088b2_c2fecfb2","line":1454,"in_reply_to":"3b23e95f_008e89e6","updated":"2025-01-23 04:06:11.000000000","message":"Removed unneeded `if`","commit_id":"94b1eb5f7b77f89838310ffdca9e82daafe400ec"}]}
