)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7d91f2fccb4e3386557353824568a0efce1dcc1c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d34658fc_14593cbb","updated":"2025-06-28 08:30:22.000000000","message":"Just a few tweaks :)","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"096501f35f57cf4ce46a470655d3ed858af8bee2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"68fa1f64_30896dca","updated":"2026-01-11 11:45:44.000000000","message":"IIRC, this is merely missing the `prepare/finish_access()` hooks, shall I take\nover the change?","commit_id":"be079a1f8ee29e68090edb44c2020f6c753d190e"},{"author":{"_account_id":1000003,"name":"Arthur Heymans","email":"arthur@aheymans.xyz","username":"arthurheymans","avatars":[{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"e1152d1933b86ba60f20e91caec875afae4c601e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3595cc91_32f88fe4","in_reply_to":"68fa1f64_30896dca","updated":"2026-01-11 15:44:24.000000000","message":"Go ahead.","commit_id":"be079a1f8ee29e68090edb44c2020f6c753d190e"}],"sfdp.c":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7d91f2fccb4e3386557353824568a0efce1dcc1c","unresolved":true,"context_lines":[{"line_number":209,"context_line":"\tmsg_cdbg2(\"  Flash chip size is %d kB.\\n\", chip-\u003etotal_size);"},{"line_number":210,"context_line":"\tif (total_size \u003e (1 \u003c\u003c 24)) {"},{"line_number":211,"context_line":"\t\tmsg_cdbg2(\"Flash chip size is bigger than what 3-Byte addressing \""},{"line_number":212,"context_line":"\t\t\t \"can access, checking for 4-byte addressing support.\\n\");"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"\t\t/* Check if we have the 16th DWORD (4-byte addressing info) */"},{"line_number":215,"context_line":"\t\tif (len \u003c 16 * 4) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"5c5b59b6_4b2b214c","line":212,"updated":"2025-06-28 08:30:22.000000000","message":"Looks like there\u0027s one space indentation missing now.","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000003,"name":"Arthur Heymans","email":"arthur@aheymans.xyz","username":"arthurheymans","avatars":[{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1c69f02540ea1e48065ad434120b883011eb9e3","unresolved":false,"context_lines":[{"line_number":209,"context_line":"\tmsg_cdbg2(\"  Flash chip size is %d kB.\\n\", chip-\u003etotal_size);"},{"line_number":210,"context_line":"\tif (total_size \u003e (1 \u003c\u003c 24)) {"},{"line_number":211,"context_line":"\t\tmsg_cdbg2(\"Flash chip size is bigger than what 3-Byte addressing \""},{"line_number":212,"context_line":"\t\t\t \"can access, checking for 4-byte addressing support.\\n\");"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"\t\t/* Check if we have the 16th DWORD (4-byte addressing info) */"},{"line_number":215,"context_line":"\t\tif (len \u003c 16 * 4) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6f90fa07_d973ed00","line":212,"in_reply_to":"5c5b59b6_4b2b214c","updated":"2025-06-30 16:37:47.000000000","message":"Done","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7d91f2fccb4e3386557353824568a0efce1dcc1c","unresolved":false,"context_lines":[{"line_number":222,"context_line":"\t\ttmp32 \u003d  ((unsigned int)buf[(4 * 15) + 0]);"},{"line_number":223,"context_line":"\t\ttmp32 |\u003d ((unsigned int)buf[(4 * 15) + 1]) \u003c\u003c 8;"},{"line_number":224,"context_line":"\t\ttmp32 |\u003d ((unsigned int)buf[(4 * 15) + 2]) \u003c\u003c 16;"},{"line_number":225,"context_line":"\t\ttmp32 |\u003d ((unsigned int)buf[(4 * 15) + 3]) \u003c\u003c 24;"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"\t\tuint8_t enter_4ba \u003d (tmp32 \u003e\u003e 24) \u0026 0xFF;"},{"line_number":228,"context_line":"\t\tuint16_t exit_4ba \u003d (tmp32 \u003e\u003e 14) \u0026 0x3FF;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9d4f18b4_0698fb50","line":225,"updated":"2025-06-28 08:30:22.000000000","message":"There\u0027s a read_le32() now (platform.h). We can also patch the whole file later.","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7d91f2fccb4e3386557353824568a0efce1dcc1c","unresolved":true,"context_lines":[{"line_number":240,"context_line":"\t\t\t/* Issue WREN (06h), then B7h */"},{"line_number":241,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_ENTER_WREN;"},{"line_number":242,"context_line":"\t\t\tmsg_cdbg2(\"  Supports 4BA enter via WREN + B7h\\n\");"},{"line_number":243,"context_line":"\t\t}"},{"line_number":244,"context_line":"\t\tif (enter_4ba \u0026 0x04) {"},{"line_number":245,"context_line":"\t\t\t/* Extended address register (C8h read, C5h write) */"},{"line_number":246,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_EAR_C5C8;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3c259598_d50eaf00","line":243,"updated":"2025-06-28 08:30:22.000000000","message":"Should we also sanity check the same bits are set in `exit_4ba`?","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7d91f2fccb4e3386557353824568a0efce1dcc1c","unresolved":true,"context_lines":[{"line_number":231,"context_line":"\t\t\t  enter_4ba, exit_4ba);"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"\t\t/* Parse Enter 4-Byte Addressing methods */"},{"line_number":234,"context_line":"\t\tif (enter_4ba \u0026 0x01) {"},{"line_number":235,"context_line":"\t\t\t/* Issue instruction B7h (no WREN required) */"},{"line_number":236,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_ENTER;"},{"line_number":237,"context_line":"\t\t\tmsg_cdbg2(\"  Supports 4BA enter via B7h instruction\\n\");"},{"line_number":238,"context_line":"\t\t}"},{"line_number":239,"context_line":"\t\tif (enter_4ba \u0026 0x02) {"},{"line_number":240,"context_line":"\t\t\t/* Issue WREN (06h), then B7h */"},{"line_number":241,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_ENTER_WREN;"},{"line_number":242,"context_line":"\t\t\tmsg_cdbg2(\"  Supports 4BA enter via WREN + B7h\\n\");"},{"line_number":243,"context_line":"\t\t}"},{"line_number":244,"context_line":"\t\tif (enter_4ba \u0026 0x04) {"},{"line_number":245,"context_line":"\t\t\t/* Extended address register (C8h read, C5h write) */"},{"line_number":246,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_EAR_C5C8;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"31f2da23_5da356cc","line":243,"range":{"start_line":234,"start_character":0,"end_line":243,"end_character":3},"updated":"2025-06-28 08:30:22.000000000","message":"These are mutually exclusive, but what if both are set? One possible,\nsimple solution: clear FEATURE_4BA_ENTER inside the second if.","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000003,"name":"Arthur Heymans","email":"arthur@aheymans.xyz","username":"arthurheymans","avatars":[{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1c69f02540ea1e48065ad434120b883011eb9e3","unresolved":false,"context_lines":[{"line_number":231,"context_line":"\t\t\t  enter_4ba, exit_4ba);"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"\t\t/* Parse Enter 4-Byte Addressing methods */"},{"line_number":234,"context_line":"\t\tif (enter_4ba \u0026 0x01) {"},{"line_number":235,"context_line":"\t\t\t/* Issue instruction B7h (no WREN required) */"},{"line_number":236,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_ENTER;"},{"line_number":237,"context_line":"\t\t\tmsg_cdbg2(\"  Supports 4BA enter via B7h instruction\\n\");"},{"line_number":238,"context_line":"\t\t}"},{"line_number":239,"context_line":"\t\tif (enter_4ba \u0026 0x02) {"},{"line_number":240,"context_line":"\t\t\t/* Issue WREN (06h), then B7h */"},{"line_number":241,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_ENTER_WREN;"},{"line_number":242,"context_line":"\t\t\tmsg_cdbg2(\"  Supports 4BA enter via WREN + B7h\\n\");"},{"line_number":243,"context_line":"\t\t}"},{"line_number":244,"context_line":"\t\tif (enter_4ba \u0026 0x04) {"},{"line_number":245,"context_line":"\t\t\t/* Extended address register (C8h read, C5h write) */"},{"line_number":246,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_EAR_C5C8;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"e9228d33_4f274a17","line":243,"range":{"start_line":234,"start_character":0,"end_line":243,"end_character":3},"in_reply_to":"31f2da23_5da356cc","updated":"2025-06-30 16:37:47.000000000","message":"Done","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000003,"name":"Arthur Heymans","email":"arthur@aheymans.xyz","username":"arthurheymans","avatars":[{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1c69f02540ea1e48065ad434120b883011eb9e3","unresolved":false,"context_lines":[{"line_number":240,"context_line":"\t\t\t/* Issue WREN (06h), then B7h */"},{"line_number":241,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_ENTER_WREN;"},{"line_number":242,"context_line":"\t\t\tmsg_cdbg2(\"  Supports 4BA enter via WREN + B7h\\n\");"},{"line_number":243,"context_line":"\t\t}"},{"line_number":244,"context_line":"\t\tif (enter_4ba \u0026 0x04) {"},{"line_number":245,"context_line":"\t\t\t/* Extended address register (C8h read, C5h write) */"},{"line_number":246,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_EAR_C5C8;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f513fe5c_72c03bdd","line":243,"in_reply_to":"3c259598_d50eaf00","updated":"2025-06-30 16:37:47.000000000","message":"Done","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7d91f2fccb4e3386557353824568a0efce1dcc1c","unresolved":true,"context_lines":[{"line_number":248,"context_line":"\t\t}"},{"line_number":249,"context_line":"\t\tif (enter_4ba \u0026 0x08) {"},{"line_number":250,"context_line":"\t\t\t/* Bank register (16h read, 17h write) */"},{"line_number":251,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_EAR_1716;"},{"line_number":252,"context_line":"\t\t\tmsg_cdbg2(\"  Supports bank register (17h/16h)\\n\");"},{"line_number":253,"context_line":"\t\t}"},{"line_number":254,"context_line":"\t\tif (enter_4ba \u0026 0x20) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d1642172_b53f72c1","line":251,"updated":"2025-06-28 08:30:22.000000000","message":"Also, FEATURE_4BA_ENTER_EAR7, AIUI?","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000003,"name":"Arthur Heymans","email":"arthur@aheymans.xyz","username":"arthurheymans","avatars":[{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"d74a9a44319b9cd72f61484e585f339ba640b76e","unresolved":false,"context_lines":[{"line_number":248,"context_line":"\t\t}"},{"line_number":249,"context_line":"\t\tif (enter_4ba \u0026 0x08) {"},{"line_number":250,"context_line":"\t\t\t/* Bank register (16h read, 17h write) */"},{"line_number":251,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_EAR_1716;"},{"line_number":252,"context_line":"\t\t\tmsg_cdbg2(\"  Supports bank register (17h/16h)\\n\");"},{"line_number":253,"context_line":"\t\t}"},{"line_number":254,"context_line":"\t\tif (enter_4ba \u0026 0x20) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"5214c52d_e2fb7b35","line":251,"in_reply_to":"d1642172_b53f72c1","updated":"2025-06-30 16:39:59.000000000","message":"Done","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7d91f2fccb4e3386557353824568a0efce1dcc1c","unresolved":true,"context_lines":[{"line_number":253,"context_line":"\t\t}"},{"line_number":254,"context_line":"\t\tif (enter_4ba \u0026 0x20) {"},{"line_number":255,"context_line":"\t\t\t/* Dedicated 4-byte instruction set */"},{"line_number":256,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_NATIVE;"},{"line_number":257,"context_line":"\t\t\tmsg_cdbg2(\"  Supports dedicated 4-byte instruction set\\n\");"},{"line_number":258,"context_line":"\t\t}"},{"line_number":259,"context_line":"\t\tif (enter_4ba \u0026 0x40) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"83d263e9_9dea0bbd","line":256,"updated":"2025-06-28 08:30:22.000000000","message":"This flag implies some things that aren\u0027t always supported. I guess this\nis where the \"4-byte Address Instruction Table\" comes in. To be useful,\nwe also have to add the respective erase opcodes (also from that table).\n\nFor now, we could just print this isn\u0027t supported yet and not set the flag?","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000003,"name":"Arthur Heymans","email":"arthur@aheymans.xyz","username":"arthurheymans","avatars":[{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1c69f02540ea1e48065ad434120b883011eb9e3","unresolved":false,"context_lines":[{"line_number":253,"context_line":"\t\t}"},{"line_number":254,"context_line":"\t\tif (enter_4ba \u0026 0x20) {"},{"line_number":255,"context_line":"\t\t\t/* Dedicated 4-byte instruction set */"},{"line_number":256,"context_line":"\t\t\tchip-\u003efeature_bits |\u003d FEATURE_4BA_NATIVE;"},{"line_number":257,"context_line":"\t\t\tmsg_cdbg2(\"  Supports dedicated 4-byte instruction set\\n\");"},{"line_number":258,"context_line":"\t\t}"},{"line_number":259,"context_line":"\t\tif (enter_4ba \u0026 0x40) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"50c03197_6dc5a184","line":256,"in_reply_to":"83d263e9_9dea0bbd","updated":"2025-06-30 16:37:47.000000000","message":"Done","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"7d91f2fccb4e3386557353824568a0efce1dcc1c","unresolved":true,"context_lines":[{"line_number":259,"context_line":"\t\tif (enter_4ba \u0026 0x40) {"},{"line_number":260,"context_line":"\t\t\t/* Always operates in 4-byte mode */"},{"line_number":261,"context_line":"\t\t\tmsg_cdbg2(\"  Always operates in 4-byte address mode\\n\""},{"line_number":262,"context_line":"\t\t\t\t  \"   not supported by flashprog.\\n\");"},{"line_number":263,"context_line":"\t\t\treturn 1;"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9971c148_6fe0aca2","line":262,"updated":"2025-06-28 08:30:22.000000000","message":"When bailing out, probably better to use msg_cdbg().","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000003,"name":"Arthur Heymans","email":"arthur@aheymans.xyz","username":"arthurheymans","avatars":[{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"f1c69f02540ea1e48065ad434120b883011eb9e3","unresolved":false,"context_lines":[{"line_number":259,"context_line":"\t\tif (enter_4ba \u0026 0x40) {"},{"line_number":260,"context_line":"\t\t\t/* Always operates in 4-byte mode */"},{"line_number":261,"context_line":"\t\t\tmsg_cdbg2(\"  Always operates in 4-byte address mode\\n\""},{"line_number":262,"context_line":"\t\t\t\t  \"   not supported by flashprog.\\n\");"},{"line_number":263,"context_line":"\t\t\treturn 1;"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2f03e14a_e23f08a7","line":262,"in_reply_to":"9971c148_6fe0aca2","updated":"2025-06-30 16:37:47.000000000","message":"Done","commit_id":"6e134c8890944aae3d0e2f73d5e7f34ba4f97274"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"647bccf7ec472a53ce7a55978b7353c2fd343628","unresolved":true,"context_lines":[{"line_number":292,"context_line":"\t\t\tmsg_cdbg(\"Flash chip size requires 4-byte addressing but \""},{"line_number":293,"context_line":"\t\t\t\t \"no supported 4BA methods found in SFDP.\\n\");"},{"line_number":294,"context_line":"\t\t\treturn 1;"},{"line_number":295,"context_line":"\t\t}"},{"line_number":296,"context_line":"\t}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"\tif (opcode_4k_erase !\u003d 0xFF)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"098c5675_1298caf2","line":295,"updated":"2025-07-19 10:12:32.000000000","message":"Hmmm, started testing this a little more. We\u0027re missing the preparation hooks\nto actually enter 4BA mode (with my chip MX25L25645G, it should actually fall\nback to EAR, but that fails too, still investigating).\n```suggestion\n\t\t}\n\n\t\tchip-\u003eprepare_access \u003d spi_prepare_io;\n\t\tchip-\u003efinish_access \u003d spi_finish_io;\n```","commit_id":"be079a1f8ee29e68090edb44c2020f6c753d190e"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"5752c5282ee937036fa6c5aba2cbc22be77d0144","unresolved":true,"context_lines":[{"line_number":292,"context_line":"\t\t\tmsg_cdbg(\"Flash chip size requires 4-byte addressing but \""},{"line_number":293,"context_line":"\t\t\t\t \"no supported 4BA methods found in SFDP.\\n\");"},{"line_number":294,"context_line":"\t\t\treturn 1;"},{"line_number":295,"context_line":"\t\t}"},{"line_number":296,"context_line":"\t}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"\tif (opcode_4k_erase !\u003d 0xFF)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"7e39d9de_6726de40","line":295,"in_reply_to":"098c5675_1298caf2","updated":"2025-07-19 10:28:41.000000000","message":"\u003e (with my chip MX25L25645G, it should actually fall\n\u003e back to EAR, but that fails too, still investigating).\n\nNevermind, the chip was still in 4BA mode from an earlier run. EAR seems\nfine, we just need to set those hooks.","commit_id":"be079a1f8ee29e68090edb44c2020f6c753d190e"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"059ed25d95a81d8810f77948cb2e80b2727e2431","unresolved":true,"context_lines":[{"line_number":292,"context_line":"\t\t\tmsg_cdbg(\"Flash chip size requires 4-byte addressing but \""},{"line_number":293,"context_line":"\t\t\t\t \"no supported 4BA methods found in SFDP.\\n\");"},{"line_number":294,"context_line":"\t\t\treturn 1;"},{"line_number":295,"context_line":"\t\t}"},{"line_number":296,"context_line":"\t}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"\tif (opcode_4k_erase !\u003d 0xFF)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"7efd536e_beab93d9","line":295,"in_reply_to":"4f4c5878_aab02ddb","updated":"2025-07-19 14:46:17.000000000","message":"You mean when we also have an RDID match?\n\nI was thinking the two could complement each other, but conflicting information\ncan be tricky. I have one chip in mind where SFDP is slightly wrong. We could\nwarn by default, unless SFDP is known broken?","commit_id":"be079a1f8ee29e68090edb44c2020f6c753d190e"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"1e8a26707ada2dc615cce8cfe1d5c84df54f80d7","unresolved":true,"context_lines":[{"line_number":292,"context_line":"\t\t\tmsg_cdbg(\"Flash chip size requires 4-byte addressing but \""},{"line_number":293,"context_line":"\t\t\t\t \"no supported 4BA methods found in SFDP.\\n\");"},{"line_number":294,"context_line":"\t\t\treturn 1;"},{"line_number":295,"context_line":"\t\t}"},{"line_number":296,"context_line":"\t}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"\tif (opcode_4k_erase !\u003d 0xFF)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"bf70b36e_38948574","line":295,"in_reply_to":"7e39d9de_6726de40","updated":"2025-07-19 11:04:05.000000000","message":"For the future, we should run selfcheck() on the SFDP output.","commit_id":"be079a1f8ee29e68090edb44c2020f6c753d190e"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"b93a73e4e5e251aca5a19d1cd6a5ce7cda7f1081","unresolved":false,"context_lines":[{"line_number":292,"context_line":"\t\t\tmsg_cdbg(\"Flash chip size requires 4-byte addressing but \""},{"line_number":293,"context_line":"\t\t\t\t \"no supported 4BA methods found in SFDP.\\n\");"},{"line_number":294,"context_line":"\t\t\treturn 1;"},{"line_number":295,"context_line":"\t\t}"},{"line_number":296,"context_line":"\t}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"\tif (opcode_4k_erase !\u003d 0xFF)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c509eb39_6e22e85f","line":295,"in_reply_to":"7efd536e_beab93d9","updated":"2026-01-26 19:13:11.000000000","message":"Done","commit_id":"be079a1f8ee29e68090edb44c2020f6c753d190e"},{"author":{"_account_id":1000003,"name":"Arthur Heymans","email":"arthur@aheymans.xyz","username":"arthurheymans","avatars":[{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/518bb7353a0a42df698e1736723abc9f.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"611f804abc126d541ca9db2295cbf044b4732675","unresolved":true,"context_lines":[{"line_number":292,"context_line":"\t\t\tmsg_cdbg(\"Flash chip size requires 4-byte addressing but \""},{"line_number":293,"context_line":"\t\t\t\t \"no supported 4BA methods found in SFDP.\\n\");"},{"line_number":294,"context_line":"\t\t\treturn 1;"},{"line_number":295,"context_line":"\t\t}"},{"line_number":296,"context_line":"\t}"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"\tif (opcode_4k_erase !\u003d 0xFF)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4f4c5878_aab02ddb","line":295,"in_reply_to":"bf70b36e_38948574","updated":"2025-07-19 12:54:30.000000000","message":"\u003e For the future, we should run selfcheck() on the SFDP output.\n\nIs it not a good idea to compare SFDP with the flashchips data in general?","commit_id":"be079a1f8ee29e68090edb44c2020f6c753d190e"}]}
