1. 28 Jun, 2013 3 commits
  2. 20 Jun, 2013 1 commit
    • Stefan Tauner's avatar
      Fix unlocking function for most Atmel AT2[56]D* chips · cecb2c56
      Stefan Tauner authored
      
      I broke unlocking them correctly in r1635 while refactoring (NB: the
      commit log including the overly selfconfident statement about the
      "bug in spi_disable_blockprotect_at25df()").
      
      Affected chips have per sector protection bits and the write protection bits
      in the status register do indicate if none, some or all sectors are protected.
      It is possible to globally (un)lock all sectors at once but in a way that was
      not anticipated when refactoring the spi25 unlocking functions into
      spi_disable_blockprotect_generic(). To globally unprotect not only the
      protection bits (2 and 3) have 0 to be written to them but also bits 4 and 5
      which normally would not be touched by spi_disable_blockprotect_generic().
      Some of the chips also support a permanent lockdown with fuses which we
      do not handle yet.
      
      To fix this without copying the whole method I introduce another mask
      parameter to spi_disable_blockprotect_generic() namely unprotect_mask.
      See verbose comments inline for details.
      
      Also, prettyprint the status register after trying to disable the block
      protection fails.
      
      Corresponding to flashrom svn r1679.
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Tested-by: default avatarChi Zhang <zhangchi866@gmail.com>
      Acked-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      cecb2c56
  3. 01 May, 2013 1 commit
  4. 19 Apr, 2013 1 commit
  5. 29 Dec, 2012 3 commits
    • Stefan Tauner's avatar
      Add support for Atmel's AT25F series of SPI flash chips · 57794ac1
      Stefan Tauner authored
      
      This adds support for the following chips:
       - AT25F512, AT25F512A, AT25F512B
       - AT25F1024, AT25F1024A
       - AT25F2048
       - AT25F4096
      
      Besides the definitions of the the chips in flashchips.c this includes
      - a dedicated probing method (probe_spi_at25f)
      - pretty printing methods (spi_prettyprint_status_register_at25f*), and
      - unlocking methods (spi_disable_blockprotect_at25f*)
      
      Corresponding to flashrom svn r1637.
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Acked-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      57794ac1
    • Stefan Tauner's avatar
      Add support for Intel S33 series flash chips · 54aaa4ae
      Stefan Tauner authored
      
      This includes:
      Bottom boot block:
      * 16Mb/2MB:
        QB25F160S33B8, QB25F016S33B8, QH25F160S33B8, QH25F016S33B8
      * 32Mb/4MB:
        QB25F320S33B8, QH25F320S33B8
      * 64Mb/8MB:
        QB25F640S33B8, QH25F640S33B8
      
      Top boot block:
      * 16Mb/2MB:
        QB25F160S33T8, QB25F016S33T8, QH25F160S33T8, QH25F016S33T8
      * 32Mb/4MB:
        QB25F320S33T8, QH25F320S33T8
      * 64Mb/8MB:
        QB25F640S33T8, QH25F640S33T8
      
      At least some seem to be marketed by other vendors (too?) but also with
      Intel's vendor ID.
      
      Besides a 0xC7 chip erase and a 0xD8 uniform 64kB block erase they
      support also erasing the top/bottom 8 8kB blocks with opcode 0x40.
      But since this command fails for all addresses outside those ranges,
      it is not easily implemented with flashrom's current code base and
      hence left out.
      
      Corresponding to flashrom svn r1636.
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Acked-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      54aaa4ae
    • Stefan Tauner's avatar
      Improve SPI status register pretty printing · 6ee37e28
      Stefan Tauner authored
      
       - Move all functions related to SPI status registers to a new file
         spi25_statusreg.c. This includes the generic as well as the
         SST-specific functions from spi25.c and the chip-specific functions
         from a25.c and at25.c.
       - introduce helper functions
          * spi_prettyprint_status_register_hex()
          * spi_prettyprint_status_register_bpl()
          * spi_prettyprint_status_register_plain()
         Use the latter on every compatible flash chip that has no better printlock
         function set and get rid of the implicit pretty printing in the SPI probing
         functions.
       - remove
          * spi_prettyprint_status_register_common()
          * spi_prettyprint_status_register_amic_a25lq032() because it can be fully
            substituted with spi_prettyprint_status_register_amic_a25l032().
          * spi_prettyprint_status_register() (old switch, no longer needed)
       - promote and export
          * spi_prettyprint_status_register_amic_a25l05p() as spi_prettyprint_status_register_default_bp1().
          * spi_prettyprint_status_register_amic_a25l40p() as spi_prettyprint_status_register_default_bp2().
          * spi_prettyprint_status_register_st_m25p() as spi_prettyprint_status_register_default_bp3().
       - add #define TEST_BAD_REW and use it for a number of Atmel chips which
         had only TEST_BAD_READ set even though they dont have erasers or a write
         function set.
      
      Corresponding to flashrom svn r1634.
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Acked-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      6ee37e28
  6. 28 Oct, 2012 1 commit
  7. 27 Oct, 2012 1 commit
    • Stefan Tauner's avatar
      Add support for Atmel AT26DF041 · 94b39b47
      Stefan Tauner authored
      
      Wicked chip: No WRSR, no write enable command (but swallows our
      default one without a problem), supports an auto-erasing page write
      (but even without that page writes are recommended to write the
      whole page i.e. operate on a completely erased page), mad
      requirements on block refreshments if only partly written.
      
      Found on my Intel D946GZIS and tested with my serprog in situ.
      Using the page write by setting JEDEC_BYTE_PROGRAM to 0x11 and using
      the spi_chip_write_256 command greatly improves performance and works
      flawlessly.
      
      Corresponding to flashrom svn r1616.
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Acked-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      94b39b47
  8. 22 Sep, 2012 1 commit
  9. 21 Sep, 2012 2 commits
  10. 26 Aug, 2012 1 commit
  11. 02 Aug, 2012 1 commit
  12. 15 Apr, 2012 1 commit
  13. 14 Apr, 2012 1 commit
  14. 17 Feb, 2012 1 commit
  15. 18 Dec, 2011 1 commit
  16. 14 Dec, 2011 1 commit
    • Carl-Daniel Hailfinger's avatar
      Use struct flashctx instead of struct flashchip for flash chip access · 63fd9026
      Carl-Daniel Hailfinger authored
      
      Struct flashchip is used only for the flashchips array and for
      operations which do not access hardware, e.g. printing a list of
      supported flash chips.
      
      struct flashctx (flash context) contains all data available in
      struct flashchip, but it also contains runtime information like
      mapping addresses. struct flashctx is expected to grow additional
      members over time, a prime candidate being programmer info.
      struct flashctx contains all of struct flashchip with identical
      member layout, but struct flashctx has additional members at the end.
      
      The separation between struct flashchip/flashctx shrinks the memory
      requirement of the big flashchips array and allows future extension
      of flashctx without having to worry about bloat.
      
      Corresponding to flashrom svn r1473.
      Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      Acked-by: default avatarMichael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
      63fd9026
  17. 23 Nov, 2011 1 commit
  18. 04 Nov, 2011 1 commit
  19. 18 Sep, 2011 2 commits
  20. 25 Aug, 2011 1 commit
  21. 16 Aug, 2011 1 commit
  22. 19 May, 2011 1 commit
    • Carl-Daniel Hailfinger's avatar
      Refine status register and lock printing of Atmel and AMIC SPI chips · 7a3bd8f2
      Carl-Daniel Hailfinger authored
      Add lock printing for AMIC A25L05PT, A25L05PU, A25L10PT, A25L10PU,
      A25L20PT, A25L20PU, A25L40PT, A25L40PU, A25L80P, A25L16PT, A25L16PU,
      A25L512, A25L010, A25L020, A25L040, A25L080, A25L016, A25L032, A25LQ032
      to a25.c.
      
      Add lock printing for Atmel AT26DF081A, AT26DF161, AT26DF161A,
      AT26DF321.
      
      Move Atmel AT25*/AT26* lock related functions originally added in r1115
      from spi25.c to at25.c.
      
      For SPI chips the lock printing was handled by one common function, but
      sharing a common function which only is a big switch() statement doesn't
      make sense, especially if we can define lock printing functions per
      flash chip anyway.
      
      The printlock function pointer in struct flashchip is used to print
      status register and locking information, and serves as replacement for
      implicit status register and lock printing during probe. That code will
      later be changed to store locking info in a machine- accessible data
      structure so flashrom can handle locked regions...
      7a3bd8f2
  23. 14 Apr, 2011 1 commit
  24. 06 Mar, 2011 1 commit
  25. 26 Dec, 2010 1 commit
  26. 05 Dec, 2010 1 commit
    • Carl-Daniel Hailfinger's avatar
      Add support for Winbond W39V040FB and W39V040FC · 9188240a
      Carl-Daniel Hailfinger authored
      
      Print lock status for all supported Winbond W39* chips:
      W39V040A, W39V040B, W39V040C, W39V040FA, W39V040FB, W39V040FC,
      W39V080A, W39V080FA, W39V080FA (dual mode).
      
      Fill in correct probe timing for Winbond W39V040C and W39V080FA.
      
      Please note that the W39V040B/W39V040FB pair has identical IDs,
      identical read/write/erase, but locking differs. Same applies to
      W39V040C/W39V040FC. This causes double detection on chipsets which
      support LPC and FWH, making flashing more difficult because the user
      has to select the correct chip. This is called the evil twin problem.
      A better evil twin handling (patch available) will resolve that problem.
      
      Corresponding to flashrom svn r1245.
      Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      Acked-by: default avatarMichael Karcher <flashrom@mkarcher.dialup.fu-berlin.de>
      9188240a
  27. 13 Oct, 2010 2 commits
  28. 10 Oct, 2010 1 commit
    • Carl-Daniel Hailfinger's avatar
      Unify chip write functions · b30a5ed4
      Carl-Daniel Hailfinger authored
      
      The currently used write functions (wrappers) all use helpers which
      perform the actual write (inner functions).
      
      The signature of the write wrappers is: int write_chip(struct flashchip
      *flash, uint8_t * buf);
      
      The signature of the inner write functions varied a lot. This patch
      changes them to: int write_part(struct flashchip *flash, uint8_t *src,
      int start, int len);
      
      Did you know that flashrom has only 8 inner write functions for all
      flash chips? write_page_write_jedec_common write_sector_jedec_common
      write_sector_28sf040 spi_chip_write_256_new spi_chip_write_1_new
      spi_aai_write_new write_page_82802ab write_page_m29f400bt
      
      Export all inner write functions.
      
      Change the function signature of wait_82802ab to eliminate single-use
      variables.
      
      Remove an error message in write_page_m29f400bt which was printed for
      every byte written regardless of success.
      
      Add sharplhf00l04.c to the list of flash chip drivers in the Makefile.
      While the functions in there are unused, I suspect we will need them
      later, and by hooking the file up we ensure that compilation won't
      break.
      
      Corresponding to flashrom svn r1208.
      Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      Acked-by: default avatarUwe Hermann <uwe@hermann-uwe.de>
      b30a5ed4
  29. 08 Oct, 2010 1 commit
    • Carl-Daniel Hailfinger's avatar
      Move implicit erase out of chip drivers · f52f784b
      Carl-Daniel Hailfinger authored
      
      Flashrom had an implicit erase-on-write for most flash chip and
      programmer drivers, but it was not entirely consistent.
      
      Some drivers had their own hand-rolled partial update functionality
      which made handling partial updates from generic code impossible.
      
      Move implicit erase out of chip drivers, and kill some dead erase
      functions at the same time. A full chip erase is now performed in the
      generic code for all flash chips on write, and after that the whole chip
      is written.
      
      Corresponding to flashrom svn r1206.
      Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      Acked-by: default avatarUwe Hermann <uwe@hermann-uwe.de>
      f52f784b
  30. 05 Oct, 2010 1 commit
  31. 29 Jul, 2010 1 commit
  32. 16 Jul, 2010 1 commit
  33. 14 Jul, 2010 1 commit