<div>Hi David</div><div><br></div><div>thank for answer<br></div><br><div class="gmail_quote">2013/2/7 David Hendricks <span dir="ltr"><<a href="mailto:dhendrix@google.com" target="_blank">dhendrix@google.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>We usually use the .feature_bits member to distinguish these capabilities. The feature you describe uses "FEATURE_ADDR_AAA" and corresponds to spi_aai_write().<br>

</div></div></div></div></blockquote><div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">

<div>I think adding an array of structs struct inside of the flashchip struct would be more effort than it is worth. It would make working with the flashchip data structure more complicated, and we'd need to add nested loops whenever we iterate over the flashchip array. It would also require flexible arrays which may cause problems with certain compilers. <br>

</div></div></div></div></blockquote><div> </div></div><div> Sorry but i don't see this "usually" in this code strings</div><div>for example:</div><div>   {<br>                .vendor         = "SST",<br>
                .name           = "SST25VF040B",<br>
                .bustype        = BUS_SPI,<br>                .manufacture_id = SST_ID,<br>                .model_id       = SST_SST25VF040B,<br>                .total_size     = 512,<br>                .page_size      = 256,<br>

                .feature_bits   = FEATURE_WRSR_EWSR,<br>                .tested         = TEST_UNTESTED,<br>                .probe          = probe_spi_rdid,<br>                .probe_timing   = TIMING_ZERO,<br>                .block_erasers  =<br>

                {<br>                        {<br>                                .eraseblocks = { {4 * 1024, 128} }, <br>                                .block_erase = spi_block_erase_20,<br>                        }, {<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>                        },<br>                },<br>

                .printlock      = spi_prettyprint_status_register_sst25vf040b,<br>                .unlock         = spi_disable_blockprotect,<br>                .write          = spi_aai_write,                    /* "FEATURE_ADDR_AAA"  ?  */ this is a fetch  The software must will use  spi_chip_write_256 function.<br>

                .read           = spi_chip_read,<br>                .voltage        = {2700, 3600},<br>        },<br></div><div><br></div><div>and i thinking that this struct is a little complicated </div><div>because:</div>

<div>1. this struct has not used field like a voltage and this field can't uniquely define chip voltage because different chips can have a equivalent ID</div><div>2. this struct has a not informative field like a name  for example that is that - SST25VF040B.REMS. Sorry but i can't  understanding different SST25VF040B and that is REMS - is this a comment or other?  and i can't found documentation on SST25VF040B.REMS chip. Next example EN25Q80(A) Is this a two chips EN25Q80 and EN25Q80A or other?  Is this chip EN25Q80 real?</div>

<div><br></div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>I think adding an array of structs struct inside of the flashchip struct would be more effort than it is worth.</div>

</div></div></div></blockquote><div> </div><div>I think adding an array of struct will be not effort, but testing a software will be effort.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> It would make working with the flashchip data structure more complicated, and we'd need to add nested loops whenever we iterate over the flashchip array. It would also require flexible arrays which may cause problems with certain compilers. </div>

</div></div></div></blockquote><div> </div><div>If we know chip ID  that we can  easy searching any chip parameters in other structure. And i think we can easy exclude this parameters from structure</div><div><br></div></div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>The MX25L25835E actually should look the same as MX25L12805D from a software perspective. The difference is that MX25L25835E is stacked (two 128Mbit flash memories). Each bank is selected by a different chip-select line (referred to as CS#1 and CS#2 in the data sheet).</div>

</div></div></div></blockquote></div><br clear="all"><div>thanks. I'm understanding this is a simple stack but we have a one ID on two different chips..... Will user use flashrom software for program MX25L25835E if software didn't support this chip in list on wiki page, but support MX25L12805D? How will you distinguish chip MX25L25835E from MX25L12805D that chips have a equivalent chip ID.  </div>

<div><br></div><div>What do you think about link on chip Documentation on wiki page?<br></div><div><br></div>-- <br><div>With best regards Nikolay Nikolaev</div>