<br><br><div class="gmail_quote">On Sat, Jul 16, 2011 at 10:57 AM, Stefan Tauner <span dir="ltr"><<a href="mailto:stefan.tauner@student.tuwien.ac.at">stefan.tauner@student.tuwien.ac.at</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
On Fri, 15 Jul 2011 23:26:23 -0400<br>
<div class="im">Steven Zakulec <<a href="mailto:spzakulec@gmail.com">spzakulec@gmail.com</a>> wrote:<br>
<br>
</div><div class="im">> I believe I've adjusted the phrasings so there's one style for each comment<br>
> type.<br>
<br>
</div>almost ;)<br>
<div class="im"><br>
> The only issue I've come across is the Intel 28F002BC/BL/BV/BX-T.<br>
> From my reading of the datasheets, the later two are compatible with each<br>
> other voltage-wise, but the BC and BL versions are definitely not- they have<br>
> non-overlapping ranges for reading.<br>
<br>
</div>i have looked at 29044901.pdf (28F002BL) and 29053105.pdf (28F002BV)<br>
briefly, but could not see the issue. what is the problem exactly,<br>
where should i look?<br>
<br>
<br>
> Index: flashchips.c<br>
> ===================================================================<br>
> --- flashchips.c      (revision 1373)<br>
> +++ flashchips.c      (working copy)<br>
> @@ -86,92 +86,93 @@<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29F002(N)BB",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29F002BB,<br>
<div class="im">>               .total_size     = 256,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_SHORT_RESET | FEATURE_ADDR_2AA,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {16 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {32 * 1024, 1},<br>
>                                       {64 * 1024, 3},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> -             .voltage        = {4750, 5250}, /* -55 speed is +-5%, all others +-10% */<br>
> +             .voltage        = {4750, 5250}, /* -55 speed is 4.75-5.25V, others 4.5-5.5V */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29F002(N)BT",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29F002BT,<br>
<div class="im">>               .total_size     = 256,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_EITHER_RESET | FEATURE_ADDR_2AA,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
<div class="im">>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {64 * 1024, 3},<br>
</div>>                                       {32 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {4750, 5250}, /* -55 speed is 4.75-5.25V, others 4.5-5.5V */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29F016D",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29F016D,<br>
>               .total_size     = 2 * 1024,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 32} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {2048 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
>               .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
</div>> @@ -229,330 +230,338 @@<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV001BB",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV001BB,<br>
>               .total_size     = 128,<br>
>               .page_size      = 64 * 1024, /* unused */<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_OK_PREW,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {8 * 1024, 1},<br>
>                                       {4 * 1024, 2},<br>
>                                       {16 * 1024, 7},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {128 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600}, /* -45R speed is 3.0-3.6V, others 2.7-3.6V */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV001BT",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV001BT,<br>
>               .total_size     = 128,<br>
>               .page_size      = 64 * 1024, /* unused */<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {16 * 1024, 7},<br>
>                                       {4 * 1024, 2},<br>
>                                       {8 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {128 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600}, /* -45R speed is 3.0-3.6V, others 2.7-3.6V */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV002BB",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV002BB,<br>
>               .total_size     = 256,<br>
>               .page_size      = 64 * 1024, /* unused */<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {16 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {32 * 1024, 1},<br>
>                                       {64 * 1024, 3},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600}, /* -55 speed is 3.0-3.6V, others 2.7-3.6V */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV002BT",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV002BT,<br>
>               .total_size     = 256,<br>
>               .page_size      = 64 * 1024, /* unused */<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
<div class="im">>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {64 * 1024, 3},<br>
</div>>                                       {32 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600}, /* -55 speed is 3.0-3.6V, others 2.7-3.6V */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV004BB",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV004BB,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024, /* unused */<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {16 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {32 * 1024, 1},<br>
>                                       {64 * 1024, 7},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV004BT",<br>
</div>>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV004BT,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024, /* unused */<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {64 * 1024, 7},<br>
>                                       {32 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV008BB",<br>
</div>>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV008BB,<br>
>               .total_size     = 1024,<br>
>               .page_size      = 64 * 1024, /* unused */<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {16 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {32 * 1024, 1},<br>
>                                       {64 * 1024, 15},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600} /* -70R is 3.0-3.6V, others 2.7-3.6V */<br>
before you have used this (note the additional word "speed"):<br>
                .voltage        = {3000, 3600}, /* -55 speed is 3.0-3.6V, others 2.7-3.6V */>   },<br>
<br>
please change all of those lines to:<br>
                .voltage        = {3000, 3600}, /* 3.0-3.6V for type -55, others 2.7-3.6V */<br>
etc.<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV008BT",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV008BT,<br>
>               .total_size     = 1024,<br>
>               .page_size      = 64 * 1024, /* unused */<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {64 * 1024, 15},<br>
>                                       {32 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600} /* -70R is 3.0-3.6V, others 2.7-3.6V */<br>
same here<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV040B",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV040B,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
<div class="im">>               .tested         = TEST_OK_PRE,<br>
>               .probe          = probe_jedec,<br>
</div>>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> -             .voltage        = {2700, 3600},<br>
</div>> +             .voltage        = {3000, 3600}, /* -60R is 3.0-3.6V, others 2.7-3.6V*/<br>
and here<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMD",<br>
>               .name           = "Am29LV081B",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = AMD_ID,<br>
>               .model_id       = AMD_AM29LV080B,<br>
>               .total_size     = 1024,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, /* datasheet specifies address as don't care */<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 16} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> -             .voltage        = {2700, 3600},<br>
</div>> +             .voltage        = {3000, 3600}, /* -70R is 3.0-3.6V, others 2.7-3.6V */<br>
and here<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMIC",<br>
>               .name           = "A25L05PT",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = AMIC_ID,<br>
>               .model_id       = AMIC_A25L05PT,<br>
>               .total_size     = 64,<br>
>               .page_size      = 256,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_spi_rdid4,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = {<br>
>                                       {32 * 1024, 1},<br>
>                                       {16 * 1024, 1},<br>
>                                       {8 * 1024, 1},<br>
>                                       {4 * 1024, 2},<br>
>                               },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .printlock      = spi_prettyprint_status_register_amic_a25l05p,<br>
>               .unlock         = spi_disable_blockprotect,<br>
</div>> @@ -564,60 +573,61 @@<br>
>       {<br>
>               .vendor         = "AMIC",<br>
>               .name           = "A25L05PU",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = AMIC_ID,<br>
>               .model_id       = AMIC_A25L05PU,<br>
>               .total_size     = 64,<br>
>               .page_size      = 256,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_spi_rdid4,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = {<br>
>                                       {4 * 1024, 2},<br>
>                                       {8 * 1024, 1},<br>
>                                       {16 * 1024, 1},<br>
>                                       {32 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .printlock      = spi_prettyprint_status_register_amic_a25l05p,<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "AMIC",<br>
>               .name           = "A25L10PT",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = AMIC_ID,<br>
>               .model_id       = AMIC_A25L10PT,<br>
<div class="im">>               .total_size     = 128,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_spi_rdid4,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = {<br>
>                                       {64 * 1024, 1},<br>
>                                       {32 * 1024, 1},<br>
>                                       {16 * 1024, 1},<br>
>                                       {8 * 1024, 1},<br>
>                                       {4 * 1024, 2},<br>
>                               },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {128 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .printlock      = spi_prettyprint_status_register_amic_a25l05p,<br>
</div>> @@ -1305,99 +1315,99 @@<br>
>               .model_id       = ATMEL_AT25DF021,<br>
<div class="im">>               .total_size     = 256,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_WRSR_WREN,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 64} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 8} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 4} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .printlock      = spi_prettyprint_status_register_at25df,<br>
>               .unlock         = spi_disable_blockprotect_at25df,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> -             .voltage        = {2300, 3600}, /* Datasheet says 2.3-3.6V or 2.7-3.6V */<br>
</div>> +             .voltage        = {2700, 3600}, /* Datasheet says there's a 2.3-3.6V & 2.7-3.6V model */<br>
                .voltage        = {2700, 3600}, /* 2.3-3.6V & 2.7-3.6V models available */<br>
would be terser, but it is ok as it is too. if you change it, please change all occurrences alike.<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "AT25DF041A",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT25DF041A,<br>
<div class="im">>               .total_size     = 512,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_WRSR_WREN,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 128} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .printlock      = spi_prettyprint_status_register_at25df,<br>
>               .unlock         = spi_disable_blockprotect_at25df,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> -             .voltage        = {2300, 3600}, /* Datasheet says 2.3-3.6V or 2.7-3.6V */<br>
</div>> +             .voltage        = {2700, 3600}, /* Datasheet says there's a 2.3-3.6V & 2.7-3.6V model */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "AT25DF081",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT25DF081,<br>
<div class="im">>               .total_size     = 1024,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_WRSR_WREN,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 256} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 32} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
> @@ -1419,60 +1429,61 @@<br>
>               .model_id       = ATMEL_AT25DF081A,<br>
<div class="im">>               .total_size     = 1024,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_WRSR_WREN,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 256} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 32} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .printlock      = spi_prettyprint_status_register_at25df_sec,<br>
>               .unlock         = spi_disable_blockprotect_at25df_sec,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "AT25DF161",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT25DF161,<br>
<div class="im">>               .total_size     = 2048,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_WRSR_WREN,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 512} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 64} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 32} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {2 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {2 * 1024 * 1024, 1} },<br>
> @@ -1746,61 +1757,61 @@<br>
>                               .block_erase = spi_block_erase_c7,<br>
>                       }<br>
>               },<br>
>               .printlock      = spi_prettyprint_status_register_at25fs040,<br>
>               .unlock         = spi_disable_blockprotect_at25fs040,<br>
<div class="im">>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
>               .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
</div>>               .name           = "AT26DF041",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT26DF041,<br>
<div class="im">>               .total_size     = 512,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 128} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
>                       }<br>
>               },<br>
>               .write          = NULL /* Incompatible Page write */,<br>
>               .read           = spi_chip_read,<br>
</div>> -             .voltage        = {2700, 3600}, /* Datasheet says 3.0-3.6 V or 2.7-3.6 V */<br>
> +             .voltage        = {2700, 3600}, /* 3.0-3.6V for higher speed, 2.7-3.6V normal */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "AT26DF081A",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT26DF081A,<br>
<div class="im">>               .total_size     = 1024,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_WRSR_WREN,<br>
>               .tested         = TEST_OK_PREW,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 256} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 32} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
> @@ -2087,77 +2098,77 @@<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "AT45DB041D",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT45DB041D,<br>
>               .total_size     = 512 /* Size can only be determined from status register */,<br>
>               .page_size      = 256 /* Size can only be determined from status register */,<br>
<div class="im">>               .tested         = TEST_BAD_READ,<br>
>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .write          = NULL,<br>
>               .read           = NULL,<br>
</div>>               .voltage        = {2500, 3600}, /* Datasheet says 2.5-3.6 V or 2.7-3.6 V */<br>
<br>
what about this one btw?<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "AT45DB081D",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT45DB081D,<br>
>               .total_size     = 1024 /* Size can only be determined from status register */,<br>
>               .page_size      = 256 /* Size can only be determined from status register */,<br>
<div class="im">>               .tested         = TEST_BAD_READ,<br>
>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .write          = NULL,<br>
>               .read           = NULL,<br>
</div>> -             .voltage        = {2500, 3600}, /* Datasheet says 2.5-3.6 V or 2.7-3.6 V */<br>
> +             .voltage        = {2700, 3600}, /* Datasheet says there's a 2.5-3.6V & 2.7-3.6V model */<br>
><br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "AT45DB161D",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT45DB161D,<br>
>               .total_size     = 2048 /* Size can only be determined from status register */,<br>
>               .page_size      = 512 /* Size can only be determined from status register */,<br>
<div class="im">>               .tested         = TEST_BAD_READ,<br>
>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .write          = NULL,<br>
>               .read           = NULL,<br>
</div>> -             .voltage        = {2500, 3600}, /* Datasheet says 2.5-3.6 V or 2.7-3.6 V */<br>
> +             .voltage        = {2700, 3600}, /* Datasheet says there's a 2.5-3.6V & 2.7-3.6V model */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "AT45DB321C",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT45DB321C,<br>
>               .total_size     = 4224 /* No power of two sizes */,<br>
>               .page_size      = 528 /* No power of two sizes */,<br>
<div class="im">>               .tested         = TEST_BAD_READ,<br>
>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .write          = NULL,<br>
</div>>               .read           = NULL /* Incompatible read */,<br>
<div class="im">>               .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
</div>>               .name           = "AT45DB321D",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = ATMEL_AT45DB321D,<br>
>               .total_size     = 4096 /* Size can only be determined from status register */,<br>
>               .page_size      = 512 /* Size can only be determined from status register */,<br>
<div class="im">>               .tested         = TEST_BAD_READ,<br>
>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .write          = NULL,<br>
</div>> @@ -2290,60 +2301,61 @@<br>
<div class="im">>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
>               .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
</div>>               .vendor         = "Bright",<br>
>               .name           = "BM29F040",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = BRIGHT_ID,<br>
>               .model_id       = BRIGHT_BM29F040,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
<div class="im">>               .feature_bits   = FEATURE_EITHER_RESET,<br>
</div>>               .tested         = TEST_OK_PR,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "EMST",<br>
>               .name           = "F49B002UA",<br>
</div>>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = EMST_ID,<br>
>               .model_id       = EMST_F49B002UA,<br>
>               .total_size     = 256,<br>
>               .page_size      = 4096,<br>
<div class="im">>               .feature_bits   = FEATURE_EITHER_RESET,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info specified */<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {128 * 1024, 1},<br>
>                                       {96 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div>>               },<br>
>               .write          = write_jedec_1,<br>
> @@ -3415,119 +3427,120 @@<br>
><br>
>       {<br>
>               .vendor         = "Hyundai",<br>
>               .name           = "HY29F002T",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = HYUNDAI_ID,<br>
>               .model_id       = HYUNDAI_HY29F002T,<br>
>               .total_size     = 256,<br>
>               .page_size      = 256 * 1024,<br>
>               .feature_bits   = FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */<br>
<div class="im">>               .tested         = TEST_OK_PRE,<br>
>               .probe          = probe_jedec,<br>
</div>>               .probe_timing   = TIMING_ZERO, /* Datasheet has no timing info specified */<br>
<div class="im">>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {64 * 1024, 3},<br>
</div>>                                       {32 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> -             .voltage        = {4750, 5250}, /* 5.0V +-5% for -45 model, +-10% for rest */<br>
> +             .voltage        = {4750, 5250}, /* -45 speed is 4.75-5.25V, others 4.5-5.5V */<br>
please change to:<br>
                .voltage        = {4750, 5250}, /* 4.75-5.25V for type -45, others 4.5-5.5V */<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Hyundai",<br>
>               .name           = "HY29F002B",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = HYUNDAI_ID,<br>
>               .model_id       = HYUNDAI_HY29F002B,<br>
>               .total_size     = 256,<br>
>               .page_size      = 256 * 1024,<br>
>               .feature_bits   = FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO, /* Datasheet has no timing info specified */<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {16 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {32 * 1024, 1},<br>
>                                       {64 * 1024, 3},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> -             .voltage        = {4750, 5250}, /* 5.0V +-5% for -45 model, +-10% for rest */<br>
> +             .voltage        = {4750, 5250}, /* -45 speed is 4.75-5.25V, others 4.5-5.5V */<br>
same here<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Hyundai",<br>
>               .name           = "HY29F040A",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = HYUNDAI_ID,<br>
>               .model_id       = HYUNDAI_HY29F040A,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Intel",<br>
>               .name           = "28F001BN/BX-B",<br>
</div>>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = INTEL_ID,<br>
>               .model_id       = INTEL_28F001B,<br>
>               .total_size     = 128,<br>
>               .page_size      = 128 * 1024, /* 8k + 2x4k + 112k */<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info specified */<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {8 * 1024, 1},<br>
>                                       {4 * 1024, 2},<br>
>                                       {112 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_block_82802ab,<br>
>                       },<br>
>               },<br>
>               .write          = write_82802ab,<br>
<div class="im">>               .read           = read_memmapped,<br>
>               .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
</div>> @@ -3555,61 +3568,61 @@<br>
>               .write          = write_82802ab,<br>
<div class="im">>               .read           = read_memmapped,<br>
>               .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Intel",<br>
</div>>               .name           = "28F002BC/BL/BV/BX-T",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = INTEL_ID,<br>
>               .model_id       = INTEL_28F002T,<br>
>               .total_size     = 256,<br>
>               .page_size      = 256 * 1024,<br>
>               .tested         = TEST_OK_PRE,<br>
>               .probe          = probe_82802ab,<br>
>               .probe_timing   = TIMING_ZERO, /* Datasheet has no timing info specified */<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {128 * 1024, 1},<br>
>                                       {96 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_block_82802ab,<br>
>                       },<br>
>               },<br>
>               .write          = write_82802ab,<br>
>               .read           = read_memmapped,<br>
> -             .voltage        = {4500, 5500}, /* 5.0V +-10% read, 12V fast program & erase- +-5% standard, +-10% option */<br>
> +             .voltage        = {4500, 5500}, /* 5.0V +-10% read, 12V fast program & erase- +-5% standard, +-10% option- differing read voltages */<br>
please discuss this with me on irc (or mail). you can also just leave<br>
this change out for now and we will commit the rest.<br>
<br>
you have dropped percentage indication in favor of absolute voltages<br>
elsewhere. OTOH this line is already way too long... maybe make it a<br>
multiline comment above the field, depending on what needs to be added<br>
after we have discussed the issues you have discovered.<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Intel",<br>
>               .name           = "28F008S3/S5/SC",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = INTEL_ID,<br>
>               .model_id       = INTEL_28F004S3,<br>
<div class="im">>               .total_size     = 512,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_82802ab,<br>
>               .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info specified */<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_block_82802ab,<br>
>                       },<br>
>               },<br>
>               .unlock         = unlock_28f004s5,<br>
>               .write          = write_82802ab,<br>
>               .read           = read_memmapped,<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Intel",<br>
>               .name           = "28F004B5/BE/BV/BX-B",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = INTEL_ID,<br>
> @@ -4025,60 +4038,61 @@<br>
>               .vendor         = "Macronix",<br>
>               .name           = "MX25L1635E",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = MACRONIX_ID,<br>
>               .model_id       = MACRONIX_MX25L1635E,<br>
<div class="im">>               .total_size     = 2048,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_WRSR_WREN,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 512} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 32} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {2 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {2 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Macronix",<br>
>               .name           = "MX25L3205",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = MACRONIX_ID,<br>
>               .model_id       = MACRONIX_MX25L3205,<br>
<div class="im">>               .total_size     = 4096,<br>
>               .page_size      = 256,<br>
</div>>               .feature_bits   = FEATURE_WRSR_WREN,<br>
>               .tested         = TEST_OK_PREW,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 1024} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {4 * 1024, 1024} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {4 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {4 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
>                       },<br>
>               },<br>
> @@ -4317,60 +4331,61 @@<br>
<div class="im">>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
>               .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Macronix",<br>
</div>>               .name           = "MX29F040",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = MACRONIX_ID,<br>
>               .model_id       = MACRONIX_MX29F040,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Macronix",<br>
>               .name           = "MX29LV040",<br>
</div>>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = MACRONIX_ID,<br>
>               .model_id       = MACRONIX_MX29LV040,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8}, },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
</div><div class="im">>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
>               .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
</div>> @@ -4748,60 +4763,61 @@<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = PMC_ID,<br>
>               .model_id       = PMC_PM25LV016B,<br>
<div class="im">>               .total_size     = 2048,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 512} },<br>
>                               .block_erase = spi_block_erase_d7,<br>
>                       }, {<br>
>                               .eraseblocks = { {4 * 1024, 512} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 32} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {2 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {2 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "PMC",<br>
>               .name           = "Pm25LV020",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = PMC_ID,<br>
>               .model_id       = PMC_PM25LV020,<br>
<div class="im">>               .total_size     = 256,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 64} },<br>
>                               .block_erase = spi_block_erase_d7,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 4} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
>               .voltage        = {2700, 3600},<br>
</div>> @@ -4873,60 +4889,61 @@<br>
<div class="im">>               .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "PMC",<br>
</div>>               .name           = "Pm25LV512",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = PMC_ID,<br>
>               .model_id       = PMC_PM25LV512,<br>
>               .total_size     = 64,<br>
>               .page_size      = 256,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_d7,<br>
>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 2} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "PMC",<br>
>               .name           = "Pm29F002T",<br>
</div>>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = PMC_ID_NOPREFIX,<br>
>               .model_id       = PMC_PM29F002T,<br>
>               .total_size     = 256,<br>
>               .page_size      = 8 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_OK_PRE,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_FIXME,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {128 * 1024, 1},<br>
>                                       {96 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
</div>>                       },<br>
>               },<br>
>               .write          = write_jedec_1,<br>
> @@ -5174,60 +5191,61 @@<br>
>               .unlock         = unlock_82802ab,<br>
>               .write          = write_82802ab,<br>
<div class="im">>               .read           = read_memmapped,<br>
>               .voltage        = {3000, 3600},<br>
>       },<br>
><br>
>       {<br>
</div>>               .vendor         = "Spansion",<br>
>               .name           = "S25FL004A",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SPANSION_ID,<br>
>               .model_id       = SPANSION_S25FL004A,<br>
<div class="im">>               .total_size     = 512,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Spansion",<br>
>               .name           = "S25FL008A",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SPANSION_ID,<br>
>               .model_id       = SPANSION_S25FL008A,<br>
<div class="im">>               .total_size     = 1024,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PRE,<br>
>               .probe          = probe_spi_rdid,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {64 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
>               .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
</div>> @@ -5254,115 +5272,118 @@<br>
<div class="im">>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
>               .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Spansion",<br>
</div>>               .name           = "S25FL032A",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SPANSION_ID,<br>
>               .model_id       = SPANSION_S25FL032A,<br>
<div class="im">>               .total_size     = 4096,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {64 * 1024, 64} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {4 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Spansion",<br>
>               .name           = "S25FL064A",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SPANSION_ID,<br>
>               .model_id       = SPANSION_S25FL064A,<br>
<div class="im">>               .total_size     = 8192,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PREW,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {64 * 1024, 128} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {8 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "SST",<br>
>               .name           = "SST25VF010.REMS",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SST_ID,<br>
>               .model_id       = SST_SST25VF010_REMS,<br>
<div class="im">>               .total_size     = 128,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PREW,<br>
>               .probe          = probe_spi_rems,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 32} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 4} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {128 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
<div class="im">>                       },<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_1,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "SST",<br>
>               .name           = "SST25VF016B",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SST_ID,<br>
>               .model_id       = SST_SST25VF016B,<br>
<div class="im">>               .total_size     = 2048,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PREW,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 512} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 64} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 32} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {2 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {2 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
> @@ -5446,60 +5467,61 @@<br>
<div class="im">>               .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "SST",<br>
</div>>               .name           = "SST25VF040.REMS",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SST_ID,<br>
>               .model_id       = SST_SST25VF040_REMS,<br>
<div class="im">>               .total_size     = 512,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PR,<br>
>               .probe          = probe_spi_rems,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 128} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
<div class="im">>                       },<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_1,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "SST",<br>
>               .name           = "SST25VF040B",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SST_ID,<br>
>               .model_id       = SST_SST25VF040B,<br>
<div class="im">>               .total_size     = 512,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 128} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
> @@ -5511,95 +5533,97 @@<br>
<div class="im">>               .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "SST",<br>
</div>>               .name           = "SST25LF040A.RES",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SST_ID,<br>
>               .model_id       = SST_SST25VF040_REMS,<br>
<div class="im">>               .total_size     = 512,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PROBE,<br>
>               .probe          = probe_spi_res2,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 128} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
<div class="im">>                       },<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_1,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {3000, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "SST",<br>
>               .name           = "SST25VF040B.REMS",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SST_ID,<br>
>               .model_id       = SST_SST25VF040B_REMS,<br>
<div class="im">>               .total_size     = 512,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PR,<br>
>               .probe          = probe_spi_rems,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 128} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       },<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_1,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "SST",<br>
>               .name           = "SST25VF080B",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = SST_ID,<br>
>               .model_id       = SST_SST25VF080B,<br>
<div class="im">>               .total_size     = 1024,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PREW,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { {4 * 1024, 256} },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {32 * 1024, 32} },<br>
>                               .block_erase = spi_block_erase_52,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 16} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_60,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
> @@ -6753,153 +6777,154 @@<br>
>               .read           = spi_chip_read,<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "ST",<br>
>               .name           = "M25PX32",<br>
<div class="im">>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ST_ID,<br>
</div>>               .model_id       = ST_M25PX32,<br>
<div class="im">>               .total_size     = 4096,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PRE,<br>
>               .probe          = probe_spi_rdid,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { { 4 * 1024, 1024 } },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 64} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {4 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "ST",<br>
>               .name           = "M25PX64",<br>
</div><div class="im">>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ST_ID,<br>
</div>>               .model_id       = ST_M25PX64,<br>
<div class="im">>               .total_size     = 8192,<br>
>               .page_size      = 256,<br>
</div>>               .tested         = TEST_OK_PRE,<br>
>               .probe          = probe_spi_rdid,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
</div>>                               .eraseblocks = { { 4 * 1024, 2048 } },<br>
<div class="im">>                               .block_erase = spi_block_erase_20,<br>
</div>>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 128} },<br>
>                               .block_erase = spi_block_erase_d8,<br>
>                       }, {<br>
>                               .eraseblocks = { {8 * 1024 * 1024, 1} },<br>
>                               .block_erase = spi_block_erase_c7,<br>
<div class="im">>                       }<br>
>               },<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
</div>>       },<br>
><br>
>       {<br>
>               .vendor         = "ST",<br>
>               .name           = "M29F002B",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = ST_ID,<br>
>               .model_id       = ST_M29F002B,<br>
>               .total_size     = 256,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info specified */<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {16 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {32 * 1024, 1},<br>
>                                       {64 * 1024, 3},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div><div class="im">>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> -             .voltage        = {4750, 5250}, /* Datasheet says some are only 4.75-5.25 V */<br>
> +             .voltage        = {4750, 5250}, /* -X model is 4.75-5.25V, others 4.5-5.5V */<br>
<br>
"model" instead of "speed"/nothing above, please use:<br>
                .voltage        = {4750, 5250}, /* 4.75-5.25V for type -X, others 4.5-5.5V */<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "ST",<br>
>               .name           = "M29F002T/NT",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = ST_ID,<br>
>               .model_id       = ST_M29F002T,<br>
>               .total_size     = 256,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info specified */<br>
<div class="im">>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = {<br>
>                                       {64 * 1024, 3},<br>
</div>>                                       {32 * 1024, 1},<br>
>                                       {8 * 1024, 2},<br>
>                                       {16 * 1024, 1},<br>
>                               },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
<div class="im">>                               .eraseblocks = { {256 * 1024, 1} },<br>
>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div><div class="im">>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> -             .voltage        = {4750, 5250}, /* Datasheet says some are only 4.75-5.25 V */<br>
> +             .voltage        = {4750, 5250}, /* -X model is 4.75-5.25V, others 4.5-5.5V */<br>
<br>
see above<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "ST",<br>
>               .name           = "M29F040B",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = ST_ID,<br>
>               .model_id       = ST_M29F040B,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
>               .probe          = probe_jedec,<br>
>               .probe_timing   = TIMING_ZERO, /* datasheet specifies no timing */<br>
>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8}, },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div><div class="im">>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
>               .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
</div>> @@ -8104,60 +8129,61 @@<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Winbond",<br>
>               .name           = "W39L040",<br>
>               .bustype        = CHIP_BUSTYPE_PARALLEL,<br>
>               .manufacture_id = WINBOND_ID,<br>
>               .model_id       = WINBOND_W39L040,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
<div class="im">>               .feature_bits   = FEATURE_EITHER_RESET,<br>
</div>>               .tested         = TEST_OK_PR,<br>
<div class="im">>               .probe          = probe_jedec,<br>
>               .probe_timing   = 10,<br>
</div>>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {4 * 1024, 128} },<br>
>                               .block_erase = erase_block_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div><div class="im">>               },<br>
>               .printlock      = printlock_w39l040,<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {3000, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Winbond",<br>
>               .name           = "W39V040A",<br>
</div>>               .bustype        = CHIP_BUSTYPE_LPC,<br>
>               .manufacture_id = WINBOND_ID,<br>
>               .model_id       = WINBOND_W39V040A,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
<div class="im">>               .feature_bits   = FEATURE_EITHER_RESET,<br>
</div>>               .tested         = TEST_OK_PR,<br>
<div class="im">>               .probe          = probe_jedec,<br>
>               .probe_timing   = 10,<br>
</div>>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div>>               },<br>
>               .printlock      = printlock_w39v040a,<br>
<div class="im">>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
>               .voltage        = {3000, 3600},<br>
</div>>       },<br>
><br>
> @@ -8248,87 +8274,89 @@<br>
<div class="im">>               .read           = read_memmapped,<br>
>               .voltage        = {3000, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Winbond",<br>
</div>>               .name           = "W39V040FB",<br>
>               .bustype        = CHIP_BUSTYPE_FWH,<br>
>               .manufacture_id = WINBOND_ID,<br>
>               .model_id       = WINBOND_W39V040B,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_OK_PREW,<br>
<div class="im">>               .probe          = probe_jedec,<br>
>               .probe_timing   = 10,<br>
</div>>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div><div class="im">>               },<br>
>               .printlock      = printlock_w39v040fb,<br>
>               .unlock         = unlock_w39v040fb,<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600}, /* Also has 12V fast program */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Winbond",<br>
>               .name           = "W39V040FC",<br>
>               .bustype        = CHIP_BUSTYPE_FWH,<br>
>               .manufacture_id = WINBOND_ID,<br>
>               .model_id       = WINBOND_W39V040C,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_jedec,<br>
>               .probe_timing   = 10,<br>
</div>>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div><div class="im">>               },<br>
>               .printlock      = printlock_w39v040fc,<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600}, /* Also has 12V fast program */<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Winbond",<br>
>               .name           = "W39V080A",<br>
>               .bustype        = CHIP_BUSTYPE_LPC,<br>
>               .manufacture_id = WINBOND_ID,<br>
>               .model_id       = WINBOND_W39V080A,<br>
>               .total_size     = 1024,<br>
>               .page_size      = 64 * 1024,<br>
<div class="im">>               .feature_bits   = FEATURE_EITHER_RESET,<br>
</div>>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_jedec,<br>
>               .probe_timing   = 10,<br>
</div>>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 16} },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div>>               },<br>
>               .printlock      = printlock_w39v080a,<br>
<div class="im">>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
>               .voltage        = {3000, 3600},<br>
</div>>       },<br>
><br>
> @@ -8451,88 +8479,89 @@<br>
<div class="im">>               .read           = read_memmapped,<br>
>               .voltage        = {3000, 3600},<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Winbond",<br>
</div>>               .name           = "W39V080FA",<br>
>               .bustype        = CHIP_BUSTYPE_FWH,<br>
>               .manufacture_id = WINBOND_ID,<br>
>               .model_id       = WINBOND_W39V080FA,<br>
>               .total_size     = 1024,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_OK_PRE,<br>
<div class="im">>               .probe          = probe_jedec,<br>
>               .probe_timing   = 10,<br>
</div>>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 16}, },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {1024 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div>>               },<br>
>               .printlock      = printlock_w39v080fa,<br>
>               .unlock         = unlock_w39v080fa,<br>
<div class="im">>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> -             .voltage        = {3000, 3600}, /* 12 V fast program mode */<br>
> +             .voltage        = {3000, 3600}, /* Also has 12V fast program*/<br>
<br>
missing space at the end<br>
<br>
>       },<br>
><br>
>       {<br>
>               .vendor         = "Winbond",<br>
>               .name           = "W39V080FA (dual mode)",<br>
>               .bustype        = CHIP_BUSTYPE_FWH,<br>
>               .manufacture_id = WINBOND_ID,<br>
>               .model_id       = WINBOND_W39V080FA_DM,<br>
>               .total_size     = 512,<br>
>               .page_size      = 64 * 1024,<br>
>               .feature_bits   = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,<br>
>               .tested         = TEST_UNTESTED,<br>
<div class="im">>               .probe          = probe_jedec,<br>
>               .probe_timing   = 10,<br>
</div>>               .block_erasers  =<br>
>               {<br>
>                       {<br>
>                               .eraseblocks = { {64 * 1024, 8}, },<br>
>                               .block_erase = erase_sector_jedec,<br>
>                       }, {<br>
>                               .eraseblocks = { {512 * 1024, 1} },<br>
<div class="im">>                               .block_erase = erase_chip_block_jedec,<br>
>                       }<br>
</div><div class="im">>               },<br>
>               .printlock      = printlock_w39v080fa_dual,<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
</div>> +             .voltage        = {3000, 3600}, /* Also has 12V fast program */<br>
<div class="im">>       },<br>
><br>
>       {<br>
>               .vendor         = "AMIC",<br>
>               .name           = "unknown AMIC SPI chip",<br>
</div>>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = AMIC_ID,<br>
>               .model_id       = GENERIC_DEVICE_ID,<br>
>               .total_size     = 0,<br>
>               .page_size      = 256,<br>
>               .tested         = TEST_BAD_PREW,<br>
>               .probe          = probe_spi_rdid4,<br>
<div class="im">>               .probe_timing   = TIMING_ZERO,<br>
>               .write          = NULL,<br>
>               .read           = NULL,<br>
</div>>       },<br>
><br>
>       {<br>
>               .vendor         = "Atmel",<br>
>               .name           = "unknown Atmel SPI chip",<br>
>               .bustype        = CHIP_BUSTYPE_SPI,<br>
>               .manufacture_id = ATMEL_ID,<br>
>               .model_id       = GENERIC_DEVICE_ID,<br>
>               .total_size     = 0,<br>
>               .page_size      = 256,<br>
>               .tested         = TEST_BAD_PREW,<br>
<div class="im">>               .probe          = probe_spi_rdid,<br>
>               .probe_timing   = TIMING_ZERO,<br>
>               .write          = NULL,<br>
>               .read           = NULL,<br>
<br>
</div>i think the next iteration will be committable.<br>
<br>
i have not looked how many chips are still missing voltage fields, but<br>
one could use my voltage printing patches to see that easily... (by<br>
using flashrom -V -L)<br>
<a href="http://patchwork.coreboot.org/patch/3215/" target="_blank">http://patchwork.coreboot.org/patch/3215/</a><br>
<a href="http://patchwork.coreboot.org/patch/3216/" target="_blank">http://patchwork.coreboot.org/patch/3216/</a><br>
dunno if they still apply cleanly, but shouldnt be hard to rebase.<br>
<font color="#888888">--<br>
</font><div><div></div><div class="h5">Kind regards/Mit freundlichen Grüßen, Stefan Tauner<br>
</div></div></blockquote></div><br>I've dropped the Intel one for now while I look more closely at it.  Otherwise, I just adjusted all the comments to fit your suggestions.<br>