<br><br><div class="gmail_quote">On Tue, Jul 5, 2011 at 12:37 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;">
<div class="im">On Mon, 4 Jul 2011 22:27:59 -0400<br>
Steven Zakulec <<a href="mailto:spzakulec@gmail.com">spzakulec@gmail.com</a>> wrote:<br>
<br>
> Hello, I've attached some additional voltages for a number of the remaining<br>
> chips in flashchips.c.<br>
<br>
</div>thanks for your continuous contributions :)<br>
<div class="im"><br>
> I have some questions about some of the remaining<br>
> chips:<br>
><br>
> Should the voltage range always be the most restrictive one offered, with<br>
> others mentioned in the comments?<br>
<br>
</div>that's most probably what we want for now, yes.<br>
i dont know what we are gonna do with the values, but a possible use<br>
case could be to tell an external programmer what voltage it should<br>
supply. we would have to choose a safe value from a number of choices<br>
that the programmer supports. since we are not able to differentiate<br>
between different speed grades (or whatever the distinction of chips<br>
with different voltage ranges are), we have to choose one of the most<br>
conservative range in our database.<br>
later this could be extended to allow the user to set a voltage outside<br>
of the safe range, but inside the extended ranges.<br>
<div class="im"><br>
> Where can I find the datasheet for the Sanyo LF25FW203A?<br>
<br>
</div>good question, i cant find one either.<br>
the guy who has added this (Sean Nelson <<a href="mailto:audiohacked@gmail.com">audiohacked@gmail.com</a>>)<br>
is currently unavailable afaik.<br>
<div class="im"><br>
> Can I ignore the .REMS/etc text after a chip name when looking for the<br>
> datasheet? Is it something I need to be aware of?<br>
<br>
</div>yes. the suffix corresponds with the opcode used to identify the chip.<br>
some chips do support multiple such opcodes and are added multiple<br>
times (for now) in flashchips.c<br>
supply voltage is independent and so should be equal for such<br>
variations.<br>
<div class="im"><br>
> Is there a difference for M25P40 and P40-old?<br>
<br>
</div>similar to above the old version seems to use a different probing<br>
method. i have not looked at the datasheet(s) so i can't say if the<br>
supply voltages are different.<br>
<a href="http://www.coreboot.org/pipermail/coreboot/2008-May/034640.html" target="_blank">http://www.coreboot.org/pipermail/coreboot/2008-May/034640.html</a> and the<br>
preceding discussion may shed some light on this.<br>
if i were you i would just leave it out for now.<br>
<div class="im"><br>
> For the W25Q64, it seems to be on the same datasheet as the Q80, Q16, and<br>
> Q32, but it's only referenced once in the sheet, and makes me wonder if this<br>
> is the correct sheet then.<br>
<br>
</div>there are multiple versions of the W25Q64 (and maybe also of the other<br>
chips in the 25Q series, i have not looked into it).<br>
<a href="http://www.winbond.com/hq/enu/ProductAndSales/ProductSearch/?partno=w25q64" target="_blank">http://www.winbond.com/hq/enu/ProductAndSales/ProductSearch/?partno=w25q64</a><br>
V: 3V (no datasheet, probably predecessor of BV.<br>
BV: 3V (deprecated)<br>
CV: 3V (successor of BV)<br>
DW: 1.8V (not supported by flashrom yet, has a different id (0x6017)<br>
<br>
the difference between BV and CV regarding the supply voltage is, that<br>
the BV specs a supply voltage of at least 3.0V for "Octal Word Read<br>
Quad I/O (E3h)" when used with a clock of 50MHz.<br>
this can be ignored for now, just use 2.7-3.3 imho.<br>
<br>
> Index: flashchips.c<br>
> ===================================================================<br>
> --- flashchips.c      (revision 1364)<br>
> +++ flashchips.c      (working copy)<br>
<br>
i have not looked into it in detail yet, just a few comments...<br>
<br>
> @@ -145,6 +145,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {4750, 5250}, /* -55 speed is +-5%, all others +-10% */<br>
>       },<br>
><br>
>       {<br>
> @@ -256,6 +257,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {3000, 3600}, /* -45R speed is 3.0-3.6V regulated, others 2.7-3.6V */<br>
>       },<br>
<br>
i think you can drop "regulated" in those entries. its use in the<br>
datasheet is already a bit odd imho, but in the comments it is even<br>
less clear without the context of the datasheet.<br>
<br>
>       {<br>
> @@ -286,6 +288,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {3000, 3600}, /* -45R speed is 3.0-3.6V regulated, others 2.7-3.6V */<br>
>       },<br>
><br>
>       {<br>
> @@ -317,6 +320,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {3000, 3600}, /* -55 speed is 3.0-3.6V regulated, others 2.7-3.6V */<br>
>       },<br>
><br>
>       {<br>
> @@ -348,6 +352,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {3000, 3600}, /* -55 speed is 3.0-3.6V regulated, others 2.7-3.6V */<br>
>       },<br>
><br>
>       {<br>
> @@ -379,6 +384,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -410,6 +416,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -441,6 +448,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {3000, 3600} /* 3.0-3.6V  regulated(-70R), 2.7-3.6V for others */<br>
>       },<br>
><br>
>       {<br>
> @@ -472,6 +480,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {3000, 3600} /* 3.0-3.6V  regulated(-70R), 2.7-3.6V for others */<br>
>       },<br>
><br>
>       {<br>
> @@ -498,7 +507,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> -             .voltage        = {2700, 3600},<br>
> +             .voltage        = {3000, 3600}, /* regulated voltage range- full range is 2.7-3.6V */<br>
>       },<br>
<br>
NB: that's the diff for Am29LV040B<br>
<br>
>3.0V for the -60R speedgrade only, so essentially the line should be similar to the ones above.<br>
<br>
when reading that datasheet i noticed the following paragraph:<br>
"The device requires only a single power supply (2.7<br>
V–3.6V) for both read and write functions. Internally<br>
generated and regulated voltages are provided for the<br>
program and erase operations."<br>
<br>
this indicates to me that at least for these "regulated" means that<br>
they have an internal voltage regulator to guarantee stable supply for<br>
write/erase operations. such regulators need a minimum difference<br>
between input (vcc) and output (some internal voltage rail), hence the<br>
0.3V higher vcc requirement. i am not sure if the other chips we have<br>
encountered also have internal regulators, but they may have.<br>
<br>
these are implementation-specific details which are not necessarily<br>
interesting to flashrom or its users. i think just naming the speed<br>
grades for the noted ranges is the best way to deal with such chips<br>
for now.<br>
<br>
>       {<br>
> @@ -525,7 +534,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> -             .voltage        = {2700, 3600},<br>
> +             .voltage        = {3000, 3600}, /* regulated voltage range- full range is 2.7-3.6V */<br>
>       },<br>
><br>
>       {<br>
> @@ -591,6 +600,7 @@<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -1446,6 +1456,7 @@<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>
> @@ -2317,6 +2328,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
> @@ -3501,6 +3513,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
> @@ -4052,6 +4065,7 @@<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -4344,6 +4358,7 @@<br>
>               },<br>
>               .write          = write_jedec_1,<br>
>               .read           = read_memmapped,<br>
> +             .voltage        = {4500, 5500},<br>
>       },<br>
><br>
>       {<br>
> @@ -4775,6 +4790,7 @@<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -4900,6 +4916,7 @@<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -5201,6 +5218,7 @@<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -5281,6 +5299,7 @@<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -5307,6 +5326,7 @@<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
> @@ -6780,6 +6800,7 @@<br>
>               .unlock         = spi_disable_blockprotect,<br>
>               .write          = spi_chip_write_256,<br>
>               .read           = spi_chip_read,<br>
> +             .voltage        = {2700, 3600},<br>
>       },<br>
><br>
>       {<br>
<br>
to ease review you could post diffs with more context so that the chip<br>
models are included in each hunk. i cant remember the correct svn diff<br>
parameters right now for this though. i personally don't need it, but<br>
if you can figure it out quickly it may be nice to have. :)<br>
<font color="#888888"><br>
--<br>
Kind regards/Mit freundlichen Grüßen, Stefan Tauner<br>
</font></blockquote></div>I believe I've addressed all of your issues.<br>What's the correct datasheet for M25PX16 ? There seem to be several of them , by different companies.<br>