1. 24 Dec, 2011 1 commit
    • Stefan Tauner's avatar
      Add ich_descriptor_tool to decode all flash descriptors stored in a flash dump file · b3850964
      Stefan Tauner authored
      
      This patch adds an external utility that shares most of the existing descriptor
      decoding source code. Additionally to what is available via FDOC/FDOD this
      allows to access:
       - the softstraps which are used to configure the chipset by flash content
         without the need for BIOS routines. on ICH8 it is possible to read those
         with FDOC/FDOC too, but this was removed in later chipsets.
       - the ME VSCC (Vendor Specific Component Capabilities) table. simply put,
         this is an SPI chip database used to figure out the flash's capabilities.
       - the MAC address stored in the GbE image.
      
      Intel thinks this information should be confidential for ICH9 and up, but
      references some tidbits in their public documentation.
      This patch includes the human-readable information for ICH8, Ibex Peak
      (5 series) and Cougar Point (6 series); the latter two were obtained from
      leaked "SPI Flash Programming Guides" found by google. Data regarding ICH9
      and 10 is unknown to us yet. It can probably found in:
      "Intel® ICH7, ICH8, ICH9 and ICH10 — SPI Family Flash Programming Guide"
      Information regarding the upcoming Panther Point chipset is also not included.
      
      Corresponding to flashrom svn r1480.
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Acked-by: default avatarMatthias Wenzel <bios@mazzoo.de>
      b3850964
  2. 22 Dec, 2011 1 commit
  3. 20 Dec, 2011 4 commits
  4. 18 Dec, 2011 1 commit
  5. 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
  6. 08 Dec, 2011 1 commit
  7. 02 Dec, 2011 1 commit
  8. 23 Nov, 2011 1 commit
  9. 19 Nov, 2011 1 commit
  10. 16 Nov, 2011 1 commit
  11. 15 Nov, 2011 1 commit
  12. 14 Nov, 2011 1 commit
  13. 13 Nov, 2011 2 commits
  14. 09 Nov, 2011 1 commit
  15. 08 Nov, 2011 2 commits
  16. 06 Nov, 2011 1 commit
    • Stefan Tauner's avatar
      ichspi: use a variable to distinguish ich generations instead of spi_programmer->type · a8d838d9
      Stefan Tauner authored
      
      The type member is enough most of the time to derive the wanted
      information, but
       - not always (e.g. ich_set_bbar),
       - only available after registration, which we want to delay till the
         end of init, and
       - we really want to distinguish between chipset version-grained
         attributes which are not reflected by the registered programmer.
      
      Hence this patch introduces a new static variable which is set up
      early by the init functions and allows us to get rid of all "switch
      (spi_programmer->type)" in ichspi.c. We reuse the enum introduced
      for descriptor mode for the type of the new variable.
      
      Previously magic numbers were passed by chipset_enable wrappers. Now
      they use the enumeration items too. To get this working the enum
      definition had to be moved to programmer.h.
      
      Another noteworthy detail: previously we have checked for a valid
      programmer/ich generation all over the place. I have removed those
      checks and added one single check in the init method. Calling any
      function of a programmer without executing the init method first, is
      undefined behavior.
      
      Corresponding to flashrom svn r1460.
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Acked-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      a8d838d9
  17. 04 Nov, 2011 1 commit
  18. 02 Nov, 2011 1 commit
  19. 22 Oct, 2011 2 commits
  20. 21 Oct, 2011 2 commits
  21. 20 Oct, 2011 2 commits
  22. 14 Oct, 2011 1 commit
  23. 18 Sep, 2011 3 commits
  24. 17 Sep, 2011 4 commits
  25. 15 Sep, 2011 2 commits
    • Stefan Tauner's avatar
      ichspi: add ICH/PCH flash descriptor decoding via FDOC/FDOD · 1e14639f
      Stefan Tauner authored
      
      Based on the work of Matthias 'mazzoo' Wenzel this patch adds pretty
      printing of those ICH/PCH flash descriptor sections that are
      cached/mapped by the chipset (and which are therefore reachable via
      FDOC/FDOD registers).
      
      this includes the following:
      - content section:
          describes the image and some generic properties (number of
          sections, offset of sections, PCH/ICH and MCH/PROC strap
          offsets and lengths)
      - component section:
          identify the different SPI flash chips and their capabilities.
      - region section
          similarly to a partition table this describes the different regions.
          the content of FLREG* is derived from this section.
      - master section
          defines SPI master (host, ME, GbE) access rights of the
          individual regions. the content of PR* is derived from this section.
      
      this is only a part of the data included in the descriptor. other
      information can be retrieved from a complete binary dump of the
      descriptor region only.
      
      this patch also adds macros and pretty printing for "Vendor Specific
      Component Capabilities" registers: there are two of them: lower and
      upper. they describe the properties of the address space divided by
      FPBA (which allows to use multiple flash chips or partitions with
      different properties). the properties of all supported flash chips
      (together with their RDIDs) are stored in the same format in table
      in a descriptor section (which is used by the ME apparently). a
      later patch will use the macros outside of ichspi.c which is the
      reason why the prettyprinting function and the register bit macros
      are not defined in ichspi.c but ich_descriptors.h (else they would
      be moved in the follow-up patch).
      
      because this patch relies on (compiler) implementation-specific
      layouting of bit-fields, it checks for correct layout before taking
      any action on runtime.
      
      Corresponding to flashrom svn r1443.
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Acked-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
      1e14639f
    • Urja Rannikko's avatar
      serprog: add SPI support · c93f5f12
      Urja Rannikko authored
      
      Adds a new opcode (0x13) that just relays SPI bytes and wires it up to be
      usable within serprog.c. Checks for mandatory opcodes are moved around and
      changed a bit, but non-SPI programmers should not be harmed by this patch.
      
      Corresponding to flashrom svn r1442.
      Signed-off-by: default avatarUrja Rannikko <urjaman@gmail.com>
      Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
      Acked-by: default avatarUwe Hermann <uwe@hermann-uwe.de>
      c93f5f12
  26. 14 Sep, 2011 1 commit