[flashrom] Additional voltages

Steven Zakulec spzakulec at gmail.com
Sun Jul 10 22:07:33 CEST 2011


On Tue, Jul 5, 2011 at 12:37 AM, Stefan Tauner <
stefan.tauner at student.tuwien.ac.at> wrote:

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


More information about the flashrom mailing list