)]}'
{
  "commit": "f8555e24a456551de9ce3d89fc648db9034ef517",
  "tree": "b2ed02345452c285f0138e2a2777e1dab46ba617",
  "parents": [
    "414bd320ac1346db9539625975644bfa7b30281e"
  ],
  "author": {
    "name": "Carl-Daniel Hailfinger",
    "email": "c-d.hailfinger.devel.2006@gmx.net",
    "time": "Thu Jul 23 01:36:08 2009 +0000"
  },
  "committer": {
    "name": "Carl-Daniel Hailfinger",
    "email": "c-d.hailfinger.devel.2006@gmx.net",
    "time": "Thu Jul 23 01:36:08 2009 +0000"
  },
  "message": "This is a workaround for a bug in SB600 and SB700\n\nIf we only send an opcode and no additional data/address, the SPI\ncontroller will read one byte too few from the chip. Basically, the\nlast byte of the chip response is discarded and will not end up in the\nFIFO. It is unclear if the CS# line is set high too early as well. That\nhardware bug is undocumented as of now, but I\u0027m working with AMD to add\na detailed description of it to the errata.\n\nAdd loads of additional debugging to SB600/SB700 init.\n\nAdd explanatory comments for unintuitive code flow.\n\nThanks go to Uwe for testing quite a few iterations of the patch.\n\nKill the SB600 flash chip status register special case, which was a\nsomewhat misguided workaround for that hardware erratum.\n\nNote for future added features in the SB600 SPI driver: It may be\npossible to read up to 15 bytes of command response with overlapping\nreads due to the ring buffer design of the FIFO if the command can be\nrepeated without ill effects. Same for skipping up to 7 bytes between\ncommand and response.\n\nCorresponding to flashrom svn r661.\n\nSigned-off-by: Carl-Daniel Hailfinger \u003cc-d.hailfinger.devel.2006@gmx.net\u003e\nAcked-by: Stefan Reinauer \u003cstepan@coresystems.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6220e3686946093140e8db20cc7fd21c851ee7af",
      "old_mode": 33188,
      "old_path": "chipset_enable.c",
      "new_id": "6452f82375120585010ce70f588dda29aef0dedb",
      "new_mode": 33188,
      "new_path": "chipset_enable.c"
    },
    {
      "type": "modify",
      "old_id": "0da4293f57145d479ac7e56124cf0c238f2b2c6c",
      "old_mode": 33188,
      "old_path": "flash.h",
      "new_id": "d8454ff5f3b9eab76e468a5517c13e7e1d4d961c",
      "new_mode": 33188,
      "new_path": "flash.h"
    },
    {
      "type": "modify",
      "old_id": "865a8c3dad58b07353387aefdce0d7613e8a3550",
      "old_mode": 33188,
      "old_path": "sb600spi.c",
      "new_id": "2088b08df36ab1943b8e605ad36886af72b6c9a0",
      "new_mode": 33188,
      "new_path": "sb600spi.c"
    },
    {
      "type": "modify",
      "old_id": "8d82c4e7bc8f6799b1102b4fb4f17a80184575de",
      "old_mode": 33188,
      "old_path": "spi.c",
      "new_id": "c177fb06eb8ecb07606ec291358a9fa1850ecdc9",
      "new_mode": 33188,
      "new_path": "spi.c"
    }
  ]
}
