)]}'
{"contrib/loaders/flash/stmqspi.S":[{"author":{"_account_id":1000859,"name":"Karl Palsson","email":"karlp@tweak.au","username":"karlp"},"change_message_id":"3237d2964eb82a1fe91d32902bb53d70547351e7","unresolved":false,"context_lines":[{"line_number":59,"context_line":"\t.macro\twait_fifo"},{"line_number":60,"context_line":"1:"},{"line_number":61,"context_line":"\tldr\t\tr7,\t[r3, #QSPI_SR]\t\t/* load status */"},{"line_number":62,"context_line":"\tlsrs\tr7, #(QSPI_FTF+1)\t\t/* wait for TFT to be set */"},{"line_number":63,"context_line":"\tbcc\t\t1b\t\t\t\t\t\t/* if not, then test again */"},{"line_number":64,"context_line":"\t.endm"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-asm","patch_set":4,"id":"a9a721be_cf785d2a","line":62,"updated":"2016-03-02 21:17:21.000000000","message":"TFT or FTF?","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"04ed2e6ebee4f4b0072415fd60bd6306ad67e004","unresolved":false,"context_lines":[{"line_number":59,"context_line":"\t.macro\twait_fifo"},{"line_number":60,"context_line":"1:"},{"line_number":61,"context_line":"\tldr\t\tr7,\t[r3, #QSPI_SR]\t\t/* load status */"},{"line_number":62,"context_line":"\tlsrs\tr7, #(QSPI_FTF+1)\t\t/* wait for TFT to be set */"},{"line_number":63,"context_line":"\tbcc\t\t1b\t\t\t\t\t\t/* if not, then test again */"},{"line_number":64,"context_line":"\t.endm"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-asm","patch_set":4,"id":"a9a721be_0f1185ae","line":62,"in_reply_to":"a9a721be_cf785d2a","updated":"2016-03-08 18:30:06.000000000","message":"Fifo Treshold Flag, so FTF is right, typo in comment.","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"}],"doc/openocd.texi":[{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"7fa97a8213946d2b3f759e727b441ce9a167159e","unresolved":false,"context_lines":[{"line_number":4954,"context_line":"the flash driver infers all parameters from current controller register values."},{"line_number":4955,"context_line":""},{"line_number":4956,"context_line":"Normal OpenOCD commands like @command{mdw} can be used to display"},{"line_number":4957,"context_line":"the flash content, but only after proper controller initialzation."},{"line_number":4958,"context_line":""},{"line_number":4959,"context_line":"@example"},{"line_number":4960,"context_line":"flash bank $_FLASHNAME stmqspi 0x90000000 0 0 0 $_TARGETNAME"}],"source_content_type":"text/x-texinfo","patch_set":6,"id":"29433135_eb42f111","line":4957,"range":{"start_line":4957,"start_character":52,"end_line":4957,"end_character":65},"updated":"2016-08-14 00:15:36.000000000","message":"typo","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"}],"src/flash/nor/stmqspi.c":[{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"a45cd95d733d036cb200b941661a31551779d171","unresolved":false,"context_lines":[{"line_number":45,"context_line":"#define QSPI_BANK_SIZE\t 0x01000000"},{"line_number":46,"context_line":"#define QSPI_SEL_BANK0\t 0x00000000 /* Select Bank0 */"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"#define QSPI_READ_REGB(a) (_QSPI_READ_REGB(a))"},{"line_number":49,"context_line":"#define _QSPI_READ_REGB(a)\t\t\t\\"},{"line_number":50,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":51,"context_line":"\tint __a;\t\t\t\t\t\t\\"},{"line_number":52,"context_line":"\tuint8_t __v;\t\t\t\t\t\\"},{"line_number":53,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":54,"context_line":"\t__a \u003d target_read_u8(target, io_base + (a), \u0026__v); \\"},{"line_number":55,"context_line":"\tif (__a !\u003d ERROR_OK)\t\t\t\\"},{"line_number":56,"context_line":"\t\treturn __a;\t\t\t\t\t\\"},{"line_number":57,"context_line":"\t__v;\t\t\t\t\t\t\t\\"},{"line_number":58,"context_line":"}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"#define QSPI_READ_REG(a) (_QSPI_READ_REG(a))"},{"line_number":61,"context_line":"#define _QSPI_READ_REG(a)\t\t\t\\"},{"line_number":62,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":63,"context_line":"\tint __a;\t\t\t\t\t\t\\"},{"line_number":64,"context_line":"\tuint32_t __v;\t\t\t\t\t\\"},{"line_number":65,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":66,"context_line":"\t__a \u003d target_read_u32(target, io_base + (a), \u0026__v); \\"},{"line_number":67,"context_line":"\tif (__a !\u003d ERROR_OK)\t\t\t\\"},{"line_number":68,"context_line":"\t\treturn __a;\t\t\t\t\t\\"},{"line_number":69,"context_line":"\t__v;\t\t\t\t\t\t\t\\"},{"line_number":70,"context_line":"}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"#define QSPI_WRITE_REG(a, v)\t\t\\"},{"line_number":73,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":74,"context_line":"\tint __r;\t\t\t\t\t\t\\"},{"line_number":75,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":76,"context_line":"\t__r \u003d target_write_u32(target, io_base + (a), (v)); \\"},{"line_number":77,"context_line":"\tif (__r !\u003d ERROR_OK)\t\t\t\\"},{"line_number":78,"context_line":"\t\treturn __r;\t\t\t\t\t\\"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"#define QSPI_POLL_BUSY(timeout)\t\t\\"},{"line_number":82,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":83,"context_line":"\tint __r;\t\t\t\t\t\t\\"},{"line_number":84,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":85,"context_line":"\t__r \u003d poll_busy(target, io_base, timeout); \\"},{"line_number":86,"context_line":"\tif (__r !\u003d ERROR_OK)\t\t\t\\"},{"line_number":87,"context_line":"\t\treturn __r;\t\t\t\t\t\\"},{"line_number":88,"context_line":"}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"#define QSPI_POLL_TCF(timeout)\t\t\\"},{"line_number":91,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":92,"context_line":"\tint __r;\t\t\t\t\t\t\\"},{"line_number":93,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":94,"context_line":"\t__r \u003d poll_tcf(target, io_base, timeout); \\"},{"line_number":95,"context_line":"\tif (__r !\u003d ERROR_OK)\t\t\t\\"},{"line_number":96,"context_line":"\t\treturn __r;\t\t\t\t\t\\"},{"line_number":97,"context_line":"}"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#define QSPI_SET_MM_MODE() QSPI_WRITE_REG(QSPI_CCR, \\"},{"line_number":100,"context_line":"\tstmqspi_info-\u003esaved_ccr)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_8fdd7570","line":97,"range":{"start_line":48,"start_character":0,"end_line":97,"end_character":1},"updated":"2016-02-29 21:36:33.000000000","message":"I know it\u0027s tempting sometimes but returning from a macro? Just say NO!","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"04ed2e6ebee4f4b0072415fd60bd6306ad67e004","unresolved":false,"context_lines":[{"line_number":45,"context_line":"#define QSPI_BANK_SIZE\t 0x01000000"},{"line_number":46,"context_line":"#define QSPI_SEL_BANK0\t 0x00000000 /* Select Bank0 */"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"#define QSPI_READ_REGB(a) (_QSPI_READ_REGB(a))"},{"line_number":49,"context_line":"#define _QSPI_READ_REGB(a)\t\t\t\\"},{"line_number":50,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":51,"context_line":"\tint __a;\t\t\t\t\t\t\\"},{"line_number":52,"context_line":"\tuint8_t __v;\t\t\t\t\t\\"},{"line_number":53,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":54,"context_line":"\t__a \u003d target_read_u8(target, io_base + (a), \u0026__v); \\"},{"line_number":55,"context_line":"\tif (__a !\u003d ERROR_OK)\t\t\t\\"},{"line_number":56,"context_line":"\t\treturn __a;\t\t\t\t\t\\"},{"line_number":57,"context_line":"\t__v;\t\t\t\t\t\t\t\\"},{"line_number":58,"context_line":"}"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"#define QSPI_READ_REG(a) (_QSPI_READ_REG(a))"},{"line_number":61,"context_line":"#define _QSPI_READ_REG(a)\t\t\t\\"},{"line_number":62,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":63,"context_line":"\tint __a;\t\t\t\t\t\t\\"},{"line_number":64,"context_line":"\tuint32_t __v;\t\t\t\t\t\\"},{"line_number":65,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":66,"context_line":"\t__a \u003d target_read_u32(target, io_base + (a), \u0026__v); \\"},{"line_number":67,"context_line":"\tif (__a !\u003d ERROR_OK)\t\t\t\\"},{"line_number":68,"context_line":"\t\treturn __a;\t\t\t\t\t\\"},{"line_number":69,"context_line":"\t__v;\t\t\t\t\t\t\t\\"},{"line_number":70,"context_line":"}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"#define QSPI_WRITE_REG(a, v)\t\t\\"},{"line_number":73,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":74,"context_line":"\tint __r;\t\t\t\t\t\t\\"},{"line_number":75,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":76,"context_line":"\t__r \u003d target_write_u32(target, io_base + (a), (v)); \\"},{"line_number":77,"context_line":"\tif (__r !\u003d ERROR_OK)\t\t\t\\"},{"line_number":78,"context_line":"\t\treturn __r;\t\t\t\t\t\\"},{"line_number":79,"context_line":"}"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"#define QSPI_POLL_BUSY(timeout)\t\t\\"},{"line_number":82,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":83,"context_line":"\tint __r;\t\t\t\t\t\t\\"},{"line_number":84,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":85,"context_line":"\t__r \u003d poll_busy(target, io_base, timeout); \\"},{"line_number":86,"context_line":"\tif (__r !\u003d ERROR_OK)\t\t\t\\"},{"line_number":87,"context_line":"\t\treturn __r;\t\t\t\t\t\\"},{"line_number":88,"context_line":"}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"#define QSPI_POLL_TCF(timeout)\t\t\\"},{"line_number":91,"context_line":"{\t\t\t\t\t\t\t\t\t\\"},{"line_number":92,"context_line":"\tint __r;\t\t\t\t\t\t\\"},{"line_number":93,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":94,"context_line":"\t__r \u003d poll_tcf(target, io_base, timeout); \\"},{"line_number":95,"context_line":"\tif (__r !\u003d ERROR_OK)\t\t\t\\"},{"line_number":96,"context_line":"\t\treturn __r;\t\t\t\t\t\\"},{"line_number":97,"context_line":"}"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#define QSPI_SET_MM_MODE() QSPI_WRITE_REG(QSPI_CCR, \\"},{"line_number":100,"context_line":"\tstmqspi_info-\u003esaved_ccr)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_6f1051a8","line":97,"range":{"start_line":48,"start_character":0,"end_line":97,"end_character":1},"in_reply_to":"a9a721be_8fdd7570","updated":"2016-03-08 18:30:06.000000000","message":"Ugly indeed, but we have no exceptions in C and checking for error every now and then gets very ugly, too. BTW: Just copied from stmsmi.c","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"a45cd95d733d036cb200b941661a31551779d171","unresolved":false,"context_lines":[{"line_number":164,"context_line":"static const struct stmqspi_target target_devices[] \u003d {"},{"line_number":165,"context_line":"\t/* name,\t\t\tdevice_id, qspi_base,   io_base */"},{"line_number":166,"context_line":"\t{ \"stm32f74x_75x\",\t0x449,\t0x90000000,\t0xA0001000 },"},{"line_number":167,"context_line":"\t{ \"stm32l4x6\",\t\t0x415,\t0x90000000,\t0xA0001000 },"},{"line_number":168,"context_line":"\t{ NULL,\t\t\t\t0x000,\t0x00000000,\t0x00000000 },"},{"line_number":169,"context_line":"};"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_6ff931e6","line":167,"updated":"2016-02-29 21:36:33.000000000","message":"Why do you need to specify base in the cfg if we can autodetect it like this?","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"04ed2e6ebee4f4b0072415fd60bd6306ad67e004","unresolved":false,"context_lines":[{"line_number":164,"context_line":"static const struct stmqspi_target target_devices[] \u003d {"},{"line_number":165,"context_line":"\t/* name,\t\t\tdevice_id, qspi_base,   io_base */"},{"line_number":166,"context_line":"\t{ \"stm32f74x_75x\",\t0x449,\t0x90000000,\t0xA0001000 },"},{"line_number":167,"context_line":"\t{ \"stm32l4x6\",\t\t0x415,\t0x90000000,\t0xA0001000 },"},{"line_number":168,"context_line":"\t{ NULL,\t\t\t\t0x000,\t0x00000000,\t0x00000000 },"},{"line_number":169,"context_line":"};"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_2f1649a7","line":167,"in_reply_to":"a9a721be_6ff931e6","updated":"2016-03-08 18:30:06.000000000","message":"Would work as long as there is only one instance. It\u0027s rather tempting to implement several of these function blocks to increase capacity or speed up access (if interleaved).\nIf this is ever done, support would require indication of the desired block in cfg file, an incompatible change in cfg file.\n\nAdding several instances with different addresses here for the same chip requires only some simple rearrangements.","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"a45cd95d733d036cb200b941661a31551779d171","unresolved":false,"context_lines":[{"line_number":821,"context_line":"\tstruct stmqspi_flash_bank *stmqspi_info \u003d bank-\u003edriver_priv;"},{"line_number":822,"context_line":"\tuint32_t device_id, io_base;"},{"line_number":823,"context_line":"\tstruct flash_sector *sectors;"},{"line_number":824,"context_line":"\tuint32_t id1 \u003d 0, id2 \u003d 0; /* silence uninitialized warning */"},{"line_number":825,"context_line":"\tconst struct stmqspi_target *target_device;"},{"line_number":826,"context_line":"\tconst struct flash_device *p;"},{"line_number":827,"context_line":"\tint dual;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_cfe77d42","line":824,"updated":"2016-02-29 21:36:33.000000000","message":"Silencing the warning is wrong because you hide the bug below.","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"a45cd95d733d036cb200b941661a31551779d171","unresolved":false,"context_lines":[{"line_number":848,"context_line":"\t}"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"\tswitch (bank-\u003ebase - target_device-\u003eqspi_base) {"},{"line_number":851,"context_line":"\t\tcase 0*QSPI_BANK_SIZE:"},{"line_number":852,"context_line":"\t\t\tstmqspi_info-\u003ebank_num \u003d QSPI_SEL_BANK0;"},{"line_number":853,"context_line":"\t\t\tbreak;"},{"line_number":854,"context_line":"\t\tdefault:"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_afda3973","line":851,"range":{"start_line":851,"start_character":7,"end_line":851,"end_character":23},"updated":"2016-02-29 21:36:33.000000000","message":"What\u0027s this?","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"04ed2e6ebee4f4b0072415fd60bd6306ad67e004","unresolved":false,"context_lines":[{"line_number":848,"context_line":"\t}"},{"line_number":849,"context_line":""},{"line_number":850,"context_line":"\tswitch (bank-\u003ebase - target_device-\u003eqspi_base) {"},{"line_number":851,"context_line":"\t\tcase 0*QSPI_BANK_SIZE:"},{"line_number":852,"context_line":"\t\t\tstmqspi_info-\u003ebank_num \u003d QSPI_SEL_BANK0;"},{"line_number":853,"context_line":"\t\t\tbreak;"},{"line_number":854,"context_line":"\t\tdefault:"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_4f0b8d7e","line":851,"range":{"start_line":851,"start_character":7,"end_line":851,"end_character":23},"in_reply_to":"a9a721be_afda3973","updated":"2016-03-08 18:30:06.000000000","message":"Same as above and remains from stmsmi.c. Kept as mark in case of several instances of this interface.","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"a45cd95d733d036cb200b941661a31551779d171","unresolved":false,"context_lines":[{"line_number":867,"context_line":"\t\tstmqspi_info-\u003edual_mask, stmqspi_info-\u003esaved_ccr);"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"\t/* read and decode flash ID; returns in memory mapped mode */"},{"line_number":870,"context_line":"\tretval \u003d read_flash_id(bank, \u0026id1, \u0026id2);"},{"line_number":871,"context_line":"\tQSPI_SET_MM_MODE();"},{"line_number":872,"context_line":"\tLOG_DEBUG(\"id1 0x%06X, id2 0x%06\" PRIx32, id1, id2);"},{"line_number":873,"context_line":"\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_efe44140","line":870,"updated":"2016-02-29 21:36:33.000000000","message":"Not checking retval here causes the warning. Just move line 873/874 to here.","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"04ed2e6ebee4f4b0072415fd60bd6306ad67e004","unresolved":false,"context_lines":[{"line_number":867,"context_line":"\t\tstmqspi_info-\u003edual_mask, stmqspi_info-\u003esaved_ccr);"},{"line_number":868,"context_line":""},{"line_number":869,"context_line":"\t/* read and decode flash ID; returns in memory mapped mode */"},{"line_number":870,"context_line":"\tretval \u003d read_flash_id(bank, \u0026id1, \u0026id2);"},{"line_number":871,"context_line":"\tQSPI_SET_MM_MODE();"},{"line_number":872,"context_line":"\tLOG_DEBUG(\"id1 0x%06X, id2 0x%06\" PRIx32, id1, id2);"},{"line_number":873,"context_line":"\tif (retval !\u003d ERROR_OK)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"a9a721be_8f249512","line":870,"in_reply_to":"a9a721be_efe44140","updated":"2016-03-08 18:30:06.000000000","message":"Hm, good point.","commit_id":"02110e1c7a79139e3ab528931669ab424014aa82"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":53,"context_line":"\t\t\t\t\t\t\t\t\t\\"},{"line_number":54,"context_line":"\t__a \u003d target_read_u8(target, io_base + (a), \u0026__v); \\"},{"line_number":55,"context_line":"\tif (__a !\u003d ERROR_OK)\t\t\t\\"},{"line_number":56,"context_line":"\t\treturn __a;\t\t\t\t\t\\"},{"line_number":57,"context_line":"\t__v;\t\t\t\t\t\t\t\\"},{"line_number":58,"context_line":"}"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_dc6aed7d","line":56,"updated":"2016-12-10 11:05:03.000000000","message":"This can\u0027t be assumed to be a reasonable exception substitute since it doesn\u0027t allow one to free allocated resources anyhow.","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":371,"context_line":"\tfor (sector \u003d 0; sector \u003c\u003d bank-\u003enum_sectors; sector++) {"},{"line_number":372,"context_line":"\t\tif (bank-\u003esectors[sector].is_protected) {"},{"line_number":373,"context_line":"\t\t\tLOG_ERROR(\"Flash sector %d protected\", sector);"},{"line_number":374,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":375,"context_line":"\t\t}"},{"line_number":376,"context_line":"\t}"},{"line_number":377,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_bc6739b4","line":374,"updated":"2016-12-10 11:05:03.000000000","message":"Why is protection can be preventing mass_erase? Moreover, the protected flag is set unconditionally and doesn\u0027t ever depend on hardware state, see below.","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":449,"context_line":"\t\t\tduration_elapsed(\u0026bench));"},{"line_number":450,"context_line":"\t}"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":"\treturn retval;"},{"line_number":453,"context_line":"}"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"static int qspi_erase_sector(struct flash_bank *bank, int sector)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_1c108503","line":452,"updated":"2016-12-10 11:05:03.000000000","message":"After mass_erase I\u0027d guess the whole flash is unprotected, right?","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":482,"context_line":"\tretval \u003d wait_till_ready(bank, QSPI_MAX_TIMEOUT);"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"\t/* erasure takes a long time, so some sort of progress message is a good idea */"},{"line_number":485,"context_line":"\tLOG_USER(\"sector %4d erased\", sector);"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"\t/* Switch to memory mapped mode before return to prompt */"},{"line_number":488,"context_line":"\tQSPI_SET_MM_MODE();"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_9c6475b0","line":485,"updated":"2016-12-10 11:05:03.000000000","message":"Well... No other flash driver does this, and the log looks odd. How long is erasing a single sector?","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":521,"context_line":"\tfor (sector \u003d first; sector \u003c\u003d last; sector++) {"},{"line_number":522,"context_line":"\t\tif (bank-\u003esectors[sector].is_protected) {"},{"line_number":523,"context_line":"\t\t\tLOG_ERROR(\"Flash sector %d protected\", sector);"},{"line_number":524,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":525,"context_line":"\t\t}"},{"line_number":526,"context_line":"\t}"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_7c01c1b8","line":524,"updated":"2016-12-10 11:05:03.000000000","message":"This again doesn\u0027t make much sense if protection is not implemented.","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":595,"context_line":"\t\t\tflash_offset, remaining);"},{"line_number":596,"context_line":"\t} else {"},{"line_number":597,"context_line":"\t\t/* programming takes a long time, so some sort of progress message is a good idea */"},{"line_number":598,"context_line":"\t\tLOG_USER(\"pages %6d to %6d programmed\", flash_offset / page_size,"},{"line_number":599,"context_line":"\t\t\t(flash_offset + count - 1) / page_size);"},{"line_number":600,"context_line":"\t}"},{"line_number":601,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_5c06fdd2","line":598,"updated":"2016-12-10 11:05:03.000000000","message":"This should better be LOG_DEBUG for the same reasons, I guess.","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":854,"context_line":"\t}"},{"line_number":855,"context_line":""},{"line_number":856,"context_line":"\tswitch (bank-\u003ebase - target_device-\u003eqspi_base) {"},{"line_number":857,"context_line":"\t\tcase 0*QSPI_BANK_SIZE:"},{"line_number":858,"context_line":"\t\t\tstmqspi_info-\u003ebank_num \u003d QSPI_SEL_BANK0;"},{"line_number":859,"context_line":"\t\t\tbreak;"},{"line_number":860,"context_line":"\t\tdefault:"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_fcf491cd","line":857,"updated":"2016-12-10 11:05:03.000000000","message":"This looks odd, why?","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":942,"context_line":"\t\tsectors[sector].offset \u003d sector * (stmqspi_info-\u003edev-\u003esectorsize \u003c\u003c dual);"},{"line_number":943,"context_line":"\t\tsectors[sector].size \u003d (stmqspi_info-\u003edev-\u003esectorsize \u003c\u003c dual);"},{"line_number":944,"context_line":"\t\tsectors[sector].is_erased \u003d -1;"},{"line_number":945,"context_line":"\t\tsectors[sector].is_protected \u003d 1;"},{"line_number":946,"context_line":"\t}"},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"\tbank-\u003esectors \u003d sectors;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_dcf1cddb","line":945,"updated":"2016-12-10 11:05:03.000000000","message":"Why is it good to assume the whole flash is protected by default?","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"},{"author":{"_account_id":1000160,"name":"Paul Fertser","email":"fercerpav@gmail.com","username":"pfertser"},"change_message_id":"16fb4c28242c8d318172be475b59935728802220","unresolved":false,"context_lines":[{"line_number":1017,"context_line":"\t.erase_check \u003d default_flash_blank_check,"},{"line_number":1018,"context_line":"\t.protect_check \u003d stmqspi_protect_check,"},{"line_number":1019,"context_line":"\t.info \u003d get_stmqspi_info,"},{"line_number":1020,"context_line":"\t.usage \u003d \"\","},{"line_number":1021,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"ce57fb0e_bcfe19aa","line":1020,"updated":"2016-12-10 11:05:03.000000000","message":"Why not fill this in?","commit_id":"4bf4ffabcfdf18e28b9887bf435e41ab14d2a477"}],"tcl/target/stm32f7x.cfg":[{"author":{"_account_id":1001120,"name":"Claudio Lanconelli","email":"claudiolanconelli@gmail.com","username":"lancos"},"change_message_id":"7c3d3964e75c6c1ad9a55695906d22529ac64f67","unresolved":false,"context_lines":[{"line_number":58,"context_line":"set _FLASHNAME $_CHIPNAME.flash"},{"line_number":59,"context_line":"flash bank $_FLASHNAME stm32f2x 0 0 0 0 $_TARGETNAME"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"set _QSPINAME $_CHIPNAME.qspi"},{"line_number":62,"context_line":"flash bank $_QSPINAME stmqspi 0x90000000 0 0 0 $_TARGETNAME"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"# adapter speed should be \u003c\u003d F_CPU/6. F_CPU after reset is 16MHz, so use F_JTAG \u003d 2MHz"},{"line_number":65,"context_line":"adapter_khz 2000"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"89d89d6c_6ec74f9a","line":62,"range":{"start_line":61,"start_character":0,"end_line":62,"end_character":59},"updated":"2016-06-23 10:25:56.000000000","message":"I think this should go in board configuration, not all boards mount external qspi flash chip.","commit_id":"afdad4756461f0814b8b8a4cf977ad143c273ee5"}]}
