On Tue, Jul 5, 2011 at 12:37 AM, Stefan Tauner <
[email protected]> wrote:

> On Mon, 4 Jul 2011 22:27:59 -0400
> Steven Zakulec <[email protected]> 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 <[email protected]>)
> 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.
Index: flashchips.c
===================================================================
--- flashchips.c	(revision 1368)
+++ flashchips.c	(working copy)
@@ -143,10 +143,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {4750, 5250}, /* -55 speed is +-5%, all others +-10% */
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29F016D",
@@ -254,10 +255,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600}, /* -45R speed is 3.0-3.6V, others 2.7-3.6V */
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV001BT",
@@ -284,10 +286,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600}, /* -45R speed is 3.0-3.6V, others 2.7-3.6V */
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV002BB",
@@ -315,10 +318,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600}, /* -55 speed is 3.0-3.6V, others 2.7-3.6V */
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV002BT",
@@ -346,10 +350,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600}, /* -55 speed is 3.0-3.6V, others 2.7-3.6V */
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV004BB",
@@ -377,10 +382,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV004BT",
@@ -408,10 +414,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV008BB",
@@ -439,10 +446,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600} /* 3.0-3.6V (-70R), 2.7-3.6V for others */
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV008BT",
@@ -470,10 +478,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600} /* 3.0-3.6V (-70R), 2.7-3.6V for others */
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV040B",
@@ -496,11 +505,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
-		.voltage	= {2700, 3600},
+		.voltage	= {3000, 3600}, /* 3.0-3.6V (-60R), 2.7-3.6V for others */
 	},
 
 	{
 		.vendor		= "AMD",
 		.name		= "Am29LV081B",
@@ -523,11 +532,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
-		.voltage	= {2700, 3600},
+		.voltage	= {3000, 3600}, /* regulated voltage range- full range is 2.7-3.6V */
 	},
 
 	{
 		.vendor		= "AMIC",
 		.name		= "A25L05PT",
@@ -589,10 +598,11 @@
 		},
 		.printlock	= spi_prettyprint_status_register_amic_a25l05p,
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "AMIC",
 		.name		= "A25L10PT",
@@ -1330,11 +1340,11 @@
 		},
 		.printlock	= spi_prettyprint_status_register_at25df,
 		.unlock		= spi_disable_blockprotect_at25df,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
-		.voltage	= {2300, 3600}, /* Datasheet says 2.3-3.6V or 2.7-3.6V */
+		.voltage	= {2700, 3600}, /* Datasheet says there's a 2.3-3.6V & 2.7-3.6V model */
 	},
 
 	{
 		.vendor		= "Atmel",
 		.name		= "AT25DF041A",
@@ -1368,11 +1378,11 @@
 		},
 		.printlock	= spi_prettyprint_status_register_at25df,
 		.unlock		= spi_disable_blockprotect_at25df,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
-		.voltage	= {2300, 3600}, /* Datasheet says 2.3-3.6V or 2.7-3.6V */
+		.voltage	= {2700, 3600}, /* Datasheet says there's a 2.3-3.6V & 2.7-3.6V model */
 	},
 
 	{
 		.vendor		= "Atmel",
 		.name		= "AT25DF081",
@@ -1444,10 +1454,11 @@
 		},
 		.printlock	= spi_prettyprint_status_register_at25df_sec,
 		.unlock		= spi_disable_blockprotect_at25df_sec,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Atmel",
 		.name		= "AT25DF161",
@@ -1771,11 +1782,11 @@
 				.block_erase = spi_block_erase_20,
 			}
 		},
 		.write		= NULL /* Incompatible Page write */,
 		.read		= spi_chip_read,
-		.voltage	= {2700, 3600}, /* Datasheet says 3.0-3.6 V or 2.7-3.6 V */
+		.voltage	= {2700, 3600}, /* Datasheet says 3.0-3.6 V or 2.7-3.6 V- either range is fine */
 	},
 
 	{
 		.vendor		= "Atmel",
 		.name		= "AT26DF081A",
@@ -2112,11 +2123,11 @@
 		.tested		= TEST_BAD_READ,
 		.probe		= probe_spi_rdid,
 		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
-		.voltage	= {2500, 3600}, /* Datasheet says 2.5-3.6 V or 2.7-3.6 V */
+		.voltage	= {2700, 3600}, /* Datasheet says 2.5-3.6 V or 2.7-3.6 V */
 	},
 
 	{
 		.vendor		= "Atmel",
 		.name		= "AT45DB161D",
@@ -2128,11 +2139,11 @@
 		.tested		= TEST_BAD_READ,
 		.probe		= probe_spi_rdid,
 		.probe_timing	= TIMING_ZERO,
 		.write		= NULL,
 		.read		= NULL,
-		.voltage	= {2500, 3600}, /* Datasheet says 2.5-3.6 V or 2.7-3.6 V */
+		.voltage	= {2700, 3600}, /* Datasheet says 2.5-3.6 V or 2.7-3.6 V */
 	},
 
 	{
 		.vendor		= "Atmel",
 		.name		= "AT45DB321C",
@@ -2315,10 +2326,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {4500, 5500},
 	},
 
 	{
 		.vendor		= "EMST",
 		.name		= "F49B002UA",
@@ -3499,10 +3511,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {4500, 5500},
 	},
 
 	{
 		.vendor		= "Intel",
 		.name		= "28F001BN/BX-B",
@@ -4050,10 +4063,11 @@
 			}
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Macronix",
 		.name		= "MX25L3205",
@@ -4342,10 +4356,11 @@
 				.block_erase = erase_chip_block_jedec,
 			},
 		},
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {4500, 5500},
 	},
 
 	{
 		.vendor		= "Macronix",
 		.name		= "MX29LV040",
@@ -4773,10 +4788,11 @@
 			}
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "PMC",
 		.name		= "Pm25LV020",
@@ -4898,10 +4914,11 @@
 			}
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "PMC",
 		.name		= "Pm29F002T",
@@ -5199,10 +5216,11 @@
 			}
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Spansion",
 		.name		= "S25FL008A",
@@ -5279,10 +5297,11 @@
 			}
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Spansion",
 		.name		= "S25FL064A",
@@ -5305,10 +5324,11 @@
 			}
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "SST",
 		.name		= "SST25VF010.REMS",
@@ -5334,10 +5354,11 @@
 			},
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_1,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "SST",
 		.name		= "SST25VF016B",
@@ -5471,10 +5492,11 @@
 			},
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_1,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "SST",
 		.name		= "SST25VF040B",
@@ -5536,10 +5558,11 @@
 			},
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_1,
 		.read		= spi_chip_read,
+		.voltage	= {3000, 3600},
 	},
 
 	{
 		.vendor		= "SST",
 		.name		= "SST25VF040B.REMS",
@@ -5571,10 +5594,11 @@
 			},
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_1,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "SST",
 		.name		= "SST25VF080B",
@@ -5769,11 +5793,11 @@
 		.manufacture_id	= SST_ID,
 		.model_id	= SST_SST39SF010,
 		.total_size	= 128,
 		.page_size	= 4096,
 		.feature_bits	= FEATURE_EITHER_RESET,
-		.tested		= TEST_OK_PREW,
+		.tested		= TEST_OK_PR,
 		.probe		= probe_jedec,
 		.probe_timing	= 1,			/* 150 ns */
 		.block_erasers	=
 		{
 			{
@@ -6703,11 +6727,11 @@
 		.bustype	= CHIP_BUSTYPE_SPI,
 		.manufacture_id	= ST_ID,
 		.model_id	= ST_M25P128,
 		.total_size	= 16384,
 		.page_size	= 256,
-		.tested		= TEST_OK_PREW,
+		.tested		= TEST_UNTESTED,
 		.probe		= probe_spi_rdid,
 		.probe_timing	= TIMING_ZERO,
 		.block_erasers	=
 		{
 			{
@@ -6778,10 +6802,11 @@
 			}
 		},
 		.unlock		= spi_disable_blockprotect,
 		.write		= spi_chip_write_256,
 		.read		= spi_chip_read,
+		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "ST",
 		.name		= "M25PX64",
@@ -7774,11 +7799,11 @@
 		.read		= spi_chip_read,
 	},
 
 	{
 		.vendor		= "Winbond",
-		.name		= "W25X10",
+		.name		= "W25x10",
 		.bustype	= CHIP_BUSTYPE_SPI,
 		.manufacture_id	= WINBOND_NEX_ID,
 		.model_id	= WINBOND_NEX_W25X10,
 		.total_size	= 128,
 		.page_size	= 256,
@@ -7805,11 +7830,11 @@
 		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Winbond",
-		.name		= "W25X20",
+		.name		= "W25x20",
 		.bustype	= CHIP_BUSTYPE_SPI,
 		.manufacture_id	= WINBOND_NEX_ID,
 		.model_id	= WINBOND_NEX_W25X20,
 		.total_size	= 256,
 		.page_size	= 256,
@@ -7836,11 +7861,11 @@
 		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Winbond",
-		.name		= "W25X40",
+		.name		= "W25x40",
 		.bustype	= CHIP_BUSTYPE_SPI,
 		.manufacture_id	= WINBOND_NEX_ID,
 		.model_id	= WINBOND_NEX_W25X40,
 		.total_size	= 512,
 		.page_size	= 256,
@@ -7867,11 +7892,11 @@
 		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Winbond",
-		.name		= "W25X80",
+		.name		= "W25x80",
 		.bustype	= CHIP_BUSTYPE_SPI,
 		.manufacture_id	= WINBOND_NEX_ID,
 		.model_id	= WINBOND_NEX_W25X80,
 		.total_size	= 1024,
 		.page_size	= 256,
@@ -7898,11 +7923,11 @@
 		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Winbond",
-		.name		= "W25X16",
+		.name		= "W25x16",
 		.bustype	= CHIP_BUSTYPE_SPI,
 		.manufacture_id	= WINBOND_NEX_ID,
 		.model_id	= WINBOND_NEX_W25X16,
 		.total_size	= 2048,
 		.page_size	= 256,
@@ -7935,11 +7960,11 @@
 		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Winbond",
-		.name		= "W25X32",
+		.name		= "W25x32",
 		.bustype	= CHIP_BUSTYPE_SPI,
 		.manufacture_id	= WINBOND_NEX_ID,
 		.model_id	= WINBOND_NEX_W25X32,
 		.total_size	= 4096,
 		.page_size	= 256,
@@ -7972,11 +7997,11 @@
 		.voltage	= {2700, 3600},
 	},
 
 	{
 		.vendor		= "Winbond",
-		.name		= "W25X64",
+		.name		= "W25x64",
 		.bustype	= CHIP_BUSTYPE_SPI,
 		.manufacture_id	= WINBOND_NEX_ID,
 		.model_id	= WINBOND_NEX_W25X64,
 		.total_size	= 8192,
 		.page_size	= 256,
@@ -8039,13 +8064,13 @@
 		.manufacture_id	= WINBOND_ID,
 		.model_id	= WINBOND_W29C020,
 		.total_size	= 256,
 		.page_size	= 128,
 		.feature_bits	= FEATURE_LONG_RESET,
-		.tested		= TEST_OK_PREW,
+		.tested		= TEST_OK_PRE,
 		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe_timing	= 10, 
 		.block_erasers	=
 		{
 			{
 				.eraseblocks = { {256 * 1024, 1} },
 				.block_erase = erase_chip_block_jedec,
@@ -8129,10 +8154,11 @@
 			}
 		},
 		.printlock	= printlock_w39l040,
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600},
 	},
 
 	{
 		.vendor		= "Winbond",
 		.name		= "W39V040A",
@@ -8273,10 +8299,11 @@
 		},
 		.printlock	= printlock_w39v040fb,
 		.unlock		= unlock_w39v040fb,
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600}, /*Also offers a 12V fast program */
 	},
 
 	{
 		.vendor		= "Winbond",
 		.name		= "W39V040FC",
@@ -8300,10 +8327,11 @@
 			}
 		},
 		.printlock	= printlock_w39v040fc,
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600}, /*Also offers a 12V fast program */
 	},
 
 	{
 		.vendor		= "Winbond",
 		.name		= "W39V080A",
@@ -8395,13 +8423,13 @@
 		.manufacture_id	= WINBOND_ID,
 		.model_id	= WINBOND_W49V002A,
 		.total_size	= 256,
 		.page_size	= 128,
 		.feature_bits	= FEATURE_EITHER_RESET,
-		.tested		= TEST_OK_PREW,
+		.tested		= TEST_OK_PRE,
 		.probe		= probe_jedec,
-		.probe_timing	= 10,
+		.probe_timing	= 10, 
 		.block_erasers	=
 		{
 			{
 				.eraseblocks = {
 					{64 * 1024, 3},
@@ -8504,10 +8532,11 @@
 			}
 		},
 		.printlock	= printlock_w39v080fa_dual,
 		.write		= write_jedec_1,
 		.read		= read_memmapped,
+		.voltage	= {3000, 3600}, /* 12 V fast program mode */
 	},
 
 	{
 		.vendor		= "AMIC",
 		.name		= "unknown AMIC SPI chip",
_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to