[flashrom] [PATCH] Support Dediprog SF100 bulk read

Qing Pei Wang wangqingpei at gmail.com
Fri Nov 12 08:21:52 CET 2010


hi carl,
  i tried your patch, the read seems very good. But i found that the
readback.rom is not exactly the same as i flashed with the factory tools.
but that does not mean that flashrom read comand is not correct, because i
had faced that the factory tools also could cause some byte flashed
incorrectly.
the log is attached which i test with my SF100.
Best wishes
Wang Qing Pei
Phone: 86+18930528086


On Fri, Nov 12, 2010 at 12:29 PM, Carl-Daniel Hailfinger <
c-d.hailfinger.devel.2006 at gmx.net> wrote:

> New version: Even more guesswork, and support for partial reads.
> If the tests of the previous version have the results I hope for, this
> version will allow partial reads without any regressions.
>
> On 12.11.2010 03:29, Carl-Daniel Hailfinger wrote:
> > New version: More guesswork, split read chunk size from bulk transfer
> > buffer size.
> >
>
> Support bulk read on Dediprog SF100.
> Should result in native speed for plain read and erase.
> Should result in a measurable speedup for writes due to a fast verify.
>
> Read tests with chunksize = 0x20 would be appreciated.
> Read tests with chunksize = 0x1 would be appreciated.
> Both should be a lot slower, but still yield correct images.
>
> Packet size is 512 bytes. Depending on your USB hardware and the
> Dediprog firmware version, this may not work at all.
> Add lots of error checking where it was missing before.
> Somewhat tested, experimental, may hang/crash the programmer.
>
> Write tests of random images are appreciated.
>
> Please note that flashrom needs full access permissions for the USB
> device.
>
> Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
>
> Index: flashrom-dediprog_read_bulk/dediprog.c
> ===================================================================
> --- flashrom-dediprog_read_bulk/dediprog.c      (Revision 1232)
> +++ flashrom-dediprog_read_bulk/dediprog.c      (Arbeitskopie)
> @@ -27,6 +27,7 @@
>
>  #define DEFAULT_TIMEOUT 3000
>  static usb_dev_handle *dediprog_handle;
> +static int dediprog_endpoint;
>
>  #if 0
>  /* Might be useful for other pieces of code as well. */
> @@ -150,9 +151,63 @@
>
>  int dediprog_spi_read(struct flashchip *flash, uint8_t *buf, int start,
> int len)
>  {
> +       int ret = 0;
> +       int i;
> +       int chunksize = 0x200; /* 512, other sizes may not work at all. */
> +       const int bulktransfer_chunksize = 0x200; /* 512, other sizes may
> not work at all. */
> +       /* count only covers full chunksize blocks. */
> +       int count = (len - start % chunksize) / chunksize;
> +       /* Guessed. */
> +       const char count_and_chunk[] = {
> +                               count & 0xff,
> +                               (count >> 8) & 0xff,
> +                               chunksize & 0xff,
> +                               (chunksize >> 8) & 0xff};
> +       int residue = start % chunksize ? chunksize - start % chunksize :
> 0;
> +       int bulkoffset = (start + residue) / chunksize;
> +       char tmpbuf[bulktransfer_chunksize];
> +
>        msg_pspew("%s, start=0x%x, len=0x%x\n", __func__, start, len);
> -       /* Chosen read length is 16 bytes for now. */
> -       return spi_read_chunked(flash, buf, start, len, 16);
> +       if (residue) {
> +               msg_pdbg("Slow read for partial block from 0x%x, length
> 0x%x\n",
> +                        start, residue);
> +               ret = spi_read_chunked(flash, buf, start, residue, 16);
> +       }
> +       if (ret)
> +               return ret;
> +
> +       /* Command Read SPI Bulk. No idea which read command is used on the
> +        * SPI side. offset is a total guess, I only saw it being 0
> everywhere.
> +        */
> +       ret = usb_control_msg(dediprog_handle, 0x42, 0x20, 0x0000,
> bulkoffset, (char *)count_and_chunk, sizeof(count_and_chunk),
> DEFAULT_TIMEOUT);
> +       if (ret != sizeof(count_and_chunk)) {
> +               msg_perr("Command Read SPI Bulk failed, %i %s!\n", ret,
> +                        usb_strerror());
> +               return 1;
> +       }
> +
> +       for (i = 0; i < count; i++) {
> +               /* Crude progress bar, enable with -VV */
> +               msg_pspew(".");
> +               ret = usb_bulk_read(dediprog_handle, 0x80 |
> dediprog_endpoint, tmpbuf, bulktransfer_chunksize, DEFAULT_TIMEOUT);
> +               memcpy(buf + residue + i * chunksize, tmpbuf, chunksize);
> +               if (ret != chunksize) {
> +                       msg_perr("SPI bulk read %i failed, expected %i, got
> %i "
> +                                "%s!\n", i, chunksize, ret,
> usb_strerror());
> +                       return 1;
> +               }
> +       }
> +       len -= residue + i * chunksize;
> +       if (len) {
> +               msg_pdbg("Slow read for partial block from 0x%x, length
> 0x%x\n",
> +                        start, len);
> +               ret = spi_read_chunked(flash, buf + residue + i *
> chunksize,
> +                                      start + residue + i * chunksize,
> len, 16);
> +       }
> +       if (ret)
> +               return ret;
> +
> +       return 0;
>  }
>
>  int dediprog_spi_send_command(unsigned int writecnt, unsigned int readcnt,
> @@ -345,6 +400,7 @@
>         struct usb_device *dev;
>        char *voltage;
>        int millivolt = 3500;
> +       int ret;
>
>        msg_pspew("%s\n", __func__);
>
> @@ -371,8 +427,23 @@
>                  dev->descriptor.idVendor,
>                 dev->descriptor.idProduct);
>        dediprog_handle = usb_open(dev);
> -       usb_set_configuration(dediprog_handle, 1);
> -       usb_claim_interface(dediprog_handle, 0);
> +       ret = usb_set_configuration(dediprog_handle, 1);
> +       if (ret < 0) {
> +               msg_perr("Could not set USB device configuration: %i %s\n",
> +                        ret, usb_strerror());
> +               if (usb_close(dediprog_handle))
> +                       msg_perr("Could not close USB device!\n");
> +               return 1;
> +       }
> +       ret = usb_claim_interface(dediprog_handle, 0);
> +       if (ret < 0) {
> +               msg_perr("Could not claim USB device interface %i: %i
> %s\n",
> +                        0, ret, usb_strerror());
> +               if (usb_close(dediprog_handle))
> +                       msg_perr("Could not close USB device!\n");
> +               return 1;
> +       }
> +       dediprog_endpoint = 2;
>        /* URB 6. Command A. */
>        if (dediprog_command_a())
>                return 1;
> @@ -461,8 +532,12 @@
>         if (dediprog_set_spi_voltage(0x0))
>                return 1;
>
> +       if (usb_release_interface(dediprog_handle, 0)) {
> +               msg_perr("Could not release USB interface!\n");
> +               return 1;
> +       }
>        if (usb_close(dediprog_handle)) {
> -               msg_perr("Couldn't close USB device!\n");
> +               msg_perr("Could not close USB device!\n");
>                return 1;
>        }
>        return 0;
>
>
> --
> http://www.hailfinger.org/
>
>
> _______________________________________________
> flashrom mailing list
> flashrom at flashrom.org
> http://www.flashrom.org/mailman/listinfo/flashrom
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.flashrom.org/pipermail/flashrom/attachments/20101112/b1b97178/attachment.html>
-------------- next part --------------
flashrom v0.9.3-r1232 on Linux 2.6.31.14-0.4-desktop (x86_64), built with libpci 3.1.3, GCC 4.4.1 [gcc-4_4-branch revision 150839], little endian
flashrom is free software, get the source code at http://www.flashrom.org

Calibrating delay loop... OS timer resolution is 1 usecs, 2442M loops per second, 10 myus = 11 us, 100 myus = 112 us, 1000 myus = 1018 us, 10000 myus = 10140 us, 4 myus = 4 us, OK.
Initializing dediprog programmer
Found USB device (0483:dada).
Found a SF100   V:5.1.5 
Setting SPI voltage to 3.500 V
Probing for AMD Am29F010A/B, 128 KB: skipped.
Probing for AMD Am29F002(N)BB, 256 KB: skipped.
Probing for AMD Am29F002(N)BT, 256 KB: skipped.
Probing for AMD Am29F016D, 2048 KB: skipped.
Probing for AMD Am29F040B, 512 KB: skipped.
Probing for AMD Am29F080B, 1024 KB: skipped.
Probing for AMD Am29LV040B, 512 KB: skipped.
Probing for AMD Am29LV081B, 1024 KB: skipped.
Probing for AMIC A25L05PT, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L05PU, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L10PT, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L10PU, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L20PT, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L20PU, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L80P, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L16PT, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L16PU, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L512, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L010, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L020, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L040, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L080, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L016, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25L032, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A25LQ032, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for AMIC A29002B, 256 KB: skipped.
Probing for AMIC A29002T, 256 KB: skipped.
Probing for AMIC A29040B, 512 KB: skipped.
Probing for AMIC A49LF040A, 512 KB: skipped.
Probing for Atmel AT25DF021, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25DQ161, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT29C512, 64 KB: skipped.
Probing for Atmel AT29C010A, 128 KB: skipped.
Probing for Atmel AT29C020, 256 KB: skipped.
Probing for Atmel AT29C040A, 512 KB: skipped.
Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel AT49BV512, 64 KB: skipped.
Probing for Atmel AT49F020, 256 KB: skipped.
Probing for Atmel AT49F002(N), 256 KB: skipped.
Probing for Atmel AT49F002(N)T, 256 KB: skipped.
Probing for Bright BM29F040, 512 KB: skipped.
Probing for EMST F49B002UA, 256 KB: skipped.
Probing for EMST F25L008A, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon EN29F010, 128 KB: skipped.
Probing for Eon EN29F002(A)(N)B, 256 KB: skipped.
Probing for Eon EN29F002(A)(N)T, 256 KB: skipped.
Probing for Fujitsu MBM29F004BC, 512 KB: skipped.
Probing for Fujitsu MBM29F004TC, 512 KB: skipped.
Probing for Fujitsu MBM29F400BC, 512 KB: skipped.
Probing for Fujitsu MBM29F400TC, 512 KB: skipped.
Probing for Hyundai HY29F002T, 256 KB: skipped.
Probing for Hyundai HY29F002B, 256 KB: skipped.
Probing for Hyundai HY29F040A, 512 KB: skipped.
Probing for Intel 28F001BN/BX-B, 128 KB: skipped.
Probing for Intel 28F001BN/BX-T, 128 KB: skipped.
Probing for Intel 28F002BC/BL/BV/BX-T, 256 KB: skipped.
Probing for Intel 28F008S3/S5/SC, 512 KB: skipped.
Probing for Intel 28F004B5/BE/BV/BX-B, 512 KB: skipped.
Probing for Intel 28F004B5/BE/BV/BX-T, 512 KB: skipped.
Probing for Intel 28F400BV/BX/CE/CV-B, 512 KB: skipped.
Probing for Intel 28F400BV/BX/CE/CV-T, 512 KB: skipped.
Probing for Intel 82802AB, 512 KB: skipped.
Probing for Intel 82802AC, 1024 KB: skipped.
Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Chip status register is 00
Chip status register: Status Register Write Disable (SRWD) is not set
Chip status register: Bit 6 is not set
Chip status register: Bit 5 / Block Protect 3 (BP3) is not set
Chip status register: Bit 4 / Block Protect 2 (BP2) is not set
Chip status register: Bit 3 / Block Protect 1 (BP1) is not set
Chip status register: Bit 2 / Block Protect 0 (BP0) is not set
Chip status register: Write Enable Latch (WEL) is not set
Chip status register: Write In Progress (WIP/BUSY) is not set
Found chip "Macronix MX25L8005" (1024 KB, SPI) at physical address 0xfff00000.
Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L1635E, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix MX29F001B, 128 KB: skipped.
Probing for Macronix MX29F001T, 128 KB: skipped.
Probing for Macronix MX29F002B, 256 KB: skipped.
Probing for Macronix MX29F002T, 256 KB: skipped.
Probing for Macronix MX29F040, 512 KB: skipped.
Probing for Macronix MX29LV040, 512 KB: skipped.
Probing for MoselVitelic V29C51000B, 64 KB: skipped.
Probing for MoselVitelic V29C51000T, 64 KB: skipped.
Probing for MoselVitelic V29C51400B, 512 KB: skipped.
Probing for MoselVitelic V29C51400T, 512 KB: skipped.
Probing for MoselVitelic V29LC51000, 64 KB: skipped.
Probing for MoselVitelic V29LC51001, 128 KB: skipped.
Probing for MoselVitelic V29LC51002, 256 KB: skipped.
Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for PMC Pm29F002T, 256 KB: skipped.
Probing for PMC Pm29F002B, 256 KB: skipped.
Probing for PMC Pm39LV010, 128 KB: skipped.
Probing for PMC Pm39LV020, 256 KB: skipped.
Probing for PMC Pm39LV040, 512 KB: skipped.
Probing for PMC Pm49FL002, 256 KB: skipped.
Probing for PMC Pm49FL004, 512 KB: skipped.
Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Sharp LHF00L04, 1024 KB: skipped.
Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for SST SST25VF064C, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xc2, id2 0x13
Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0x13, id2 0x13
Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xc2, id2 0x13
Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for SST SST28SF040A, 512 KB: skipped.
Probing for SST SST29EE010, 128 KB: skipped.
Probing for SST SST29LE010, 128 KB: skipped.
Probing for SST SST29EE020A, 256 KB: skipped.
Probing for SST SST29LE020, 256 KB: skipped.
Probing for SST SST39SF512, 64 KB: skipped.
Probing for SST SST39SF010A, 128 KB: skipped.
Probing for SST SST39SF020A, 256 KB: skipped.
Probing for SST SST39SF040, 512 KB: skipped.
Probing for SST SST39VF512, 64 KB: skipped.
Probing for SST SST39VF010, 128 KB: skipped.
Probing for SST SST39VF020, 256 KB: skipped.
Probing for SST SST39VF040, 512 KB: skipped.
Probing for SST SST39VF080, 1024 KB: skipped.
Probing for SST SST49LF002A/B, 256 KB: skipped.
Probing for SST SST49LF003A/B, 384 KB: skipped.
Probing for SST SST49LF004A/B, 512 KB: skipped.
Probing for SST SST49LF004C, 512 KB: skipped.
Probing for SST SST49LF008A, 1024 KB: skipped.
Probing for SST SST49LF008C, 1024 KB: skipped.
Probing for SST SST49LF016C, 2048 KB: skipped.
Probing for SST SST49LF020, 256 KB: skipped.
Probing for SST SST49LF020A, 256 KB: skipped.
Probing for SST SST49LF040, 512 KB: skipped.
Probing for SST SST49LF040B, 512 KB: skipped.
Probing for SST SST49LF080A, 1024 KB: skipped.
Probing for SST SST49LF160C, 2048 KB: skipped.
Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID.
Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID.
Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID.
Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25PX32, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M25PX64, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST M29F002B, 256 KB: skipped.
Probing for ST M29F002T/NT, 256 KB: skipped.
Probing for ST M29F040B, 512 KB: skipped.
Probing for ST M29F400BB, 512 KB: skipped.
Probing for ST M29F400BT, 512 KB: skipped.
Probing for ST M29W010B, 128 KB: skipped.
Probing for ST M29W040B, 512 KB: skipped.
Probing for ST M29W512B, 64 KB: skipped.
Probing for ST M50FLW040A, 512 KB: skipped.
Probing for ST M50FLW040B, 512 KB: skipped.
Probing for ST M50FLW080A, 1024 KB: skipped.
Probing for ST M50FLW080B, 1024 KB: skipped.
Probing for ST M50FW002, 256 KB: skipped.
Probing for ST M50FW016, 2048 KB: skipped.
Probing for ST M50FW040, 512 KB: skipped.
Probing for ST M50FW080, 1024 KB: skipped.
Probing for ST M50LPW116, 2048 KB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 KB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 KB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 KB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 KB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 KB: skipped.
Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 KB: skipped.
Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 KB: skipped.
Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 KB: skipped.
Probing for TI TMS29F002RB, 256 KB: skipped.
Probing for TI TMS29F002RT, 256 KB: skipped.
Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25Q64, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 KB: skipped.
Probing for Winbond W29C020(C)/W29C022, 256 KB: skipped.
Probing for Winbond W29C040/P, 512 KB: skipped.
Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 KB: skipped.
Probing for Winbond W39V040A, 512 KB: skipped.
Probing for Winbond W39V040(F)B, 512 KB: skipped.
Probing for Winbond W39V040(F)C, 512 KB: skipped.
Probing for Winbond W39V040FA, 512 KB: skipped.
Probing for Winbond W39V080A, 1024 KB: skipped.
Probing for Winbond W49F002U/N, 256 KB: skipped.
Probing for Winbond W49F020, 256 KB: skipped.
Probing for Winbond W49V002A, 256 KB: skipped.
Probing for Winbond W49V002FA, 256 KB: skipped.
Probing for Winbond W39V080FA, 1024 KB: skipped.
Probing for Winbond W39V080FA (dual mode), 512 KB: skipped.
Probing for AMIC unknown AMIC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Eon unknown Eon SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xc2, id2 0x2014
Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xc2, id2 0x13
===
This flash part has status UNTESTED for operations: WRITE
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to flashrom at flashrom.org if any of the above operations
work correctly for you with this flash part. Please include the flashrom
output with the additional -V option for all operations you tested (-V, -Vr,
-Vw, -VE), and mention which mainboard or programmer you tested.
Please mention your board in the subject line. Thanks for your help!
Reading flash... done.
Setting SPI voltage to 0.000 V


More information about the flashrom mailing list