[flashrom] Additional voltages

Steven Zakulec spzakulec at gmail.com
Mon Jul 11 00:37:27 CEST 2011


On Sun, Jul 10, 2011 at 5:27 PM, Stefan Tauner <
stefan.tauner at student.tuwien.ac.at> wrote:

> On Sun, 10 Jul 2011 16:07:33 -0400
> Steven Zakulec <spzakulec at gmail.com> wrote:
>
> > 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 */
>
> probably a speed grade distinction again?
>
> >       },
> >
> >       {
> >               .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 */
>
> that comment is a bit vague... i like the one of the AT25DF041A above
> better.
>
> >       },
> >
> >       {
> >               .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,
>
> why?
>
> >               .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,
>
> why?
>
> >               .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",
>
> ah i think i see the pattern... you are reverting my last changes.
> you need to rebase your changes on top of mine/the ones in svn instead.
>
> >               .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 */
>
> space after /* please
>
> >       },
> >
> >       {
> >               .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 */
>
> again
>
> >       },
> >
> >       {
> >               .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",
>
> i just skimmed through it, so i may have missed a few things.
>
> thanks for trying to provide more context in the patch. it is not
> enough though... the number of 5 i told you was just an example.
> this adds 5 lines above and 5 lines below every change in a patch.
> what i wanted to accomplish is that the model name of every chip that
> is changed is mentioned in the patch. so depending on the number of
> erasers in the affected chips a number as high as 20 or so is needed
> (another example number).
>
> > 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.
>
> st created a joint venture with others forming numonyx.
> numonyx was acquired by micron later...
> http://www.micron.com/get-document/?documentId=5983
> --
> Kind regards/Mit freundlichen Grüßen, Stefan Tauner
>
> _______________________________________________
> flashrom mailing list
> flashrom at flashrom.org
> http://www.flashrom.org/mailman/listinfo/flashrom
>

Here's a new version rebased on r1368, with no extraneous changes.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.flashrom.org/pipermail/flashrom/attachments/20110710/aaf76334/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: voltage_patch-v6.patch
Type: text/x-diff
Size: 42558 bytes
Desc: not available
URL: <http://www.flashrom.org/pipermail/flashrom/attachments/20110710/aaf76334/attachment.bin>


More information about the flashrom mailing list