)]}'
{
  "commit": "cecb2c56d07ac45cde56cadc6416e653b0cfafb7",
  "tree": "81788790601ca10fea904cef17f4694134ecbc3d",
  "parents": [
    "0466c819e248881e03a6ec98db5297565816859b"
  ],
  "author": {
    "name": "Stefan Tauner",
    "email": "stefan.tauner@alumni.tuwien.ac.at",
    "time": "Thu Jun 20 22:55:41 2013 +0000"
  },
  "committer": {
    "name": "Stefan Tauner",
    "email": "stefan.tauner@alumni.tuwien.ac.at",
    "time": "Thu Jun 20 22:55:41 2013 +0000"
  },
  "message": "Fix unlocking function for most Atmel AT2[56]D* chips\n\nI broke unlocking them correctly in r1635 while refactoring (NB: the\ncommit log including the overly selfconfident statement about the\n\"bug in spi_disable_blockprotect_at25df()\").\n\nAffected chips have per sector protection bits and the write protection bits\nin the status register do indicate if none, some or all sectors are protected.\nIt is possible to globally (un)lock all sectors at once but in a way that was\nnot anticipated when refactoring the spi25 unlocking functions into\nspi_disable_blockprotect_generic(). To globally unprotect not only the\nprotection bits (2 and 3) have 0 to be written to them but also bits 4 and 5\nwhich normally would not be touched by spi_disable_blockprotect_generic().\nSome of the chips also support a permanent lockdown with fuses which we\ndo not handle yet.\n\nTo fix this without copying the whole method I introduce another mask\nparameter to spi_disable_blockprotect_generic() namely unprotect_mask.\nSee verbose comments inline for details.\n\nAlso, prettyprint the status register after trying to disable the block\nprotection fails.\n\nCorresponding to flashrom svn r1679.\n\nSigned-off-by: Stefan Tauner \u003cstefan.tauner@alumni.tuwien.ac.at\u003e\nTested-by: Chi Zhang \u003czhangchi866@gmail.com\u003e\nAcked-by: Stefan Tauner \u003cstefan.tauner@alumni.tuwien.ac.at\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dd206311429da5ae30adc259ed66132a2fdb05ee",
      "old_mode": 33188,
      "old_path": "chipdrivers.h",
      "new_id": "fd522a686e983daa3d8648bda0caca90941c44c2",
      "new_mode": 33188,
      "new_path": "chipdrivers.h"
    },
    {
      "type": "modify",
      "old_id": "6ec3749954324730e3fa0fddb5ec5fdbebc8243a",
      "old_mode": 33188,
      "old_path": "flashchips.c",
      "new_id": "d188617fd6809d82cce5491c572ba51248c148f1",
      "new_mode": 33188,
      "new_path": "flashchips.c"
    },
    {
      "type": "modify",
      "old_id": "41903d2b89df1081fb899603f965a6d2b5bfb73f",
      "old_mode": 33188,
      "old_path": "flashchips.h",
      "new_id": "d23c50d1186f8fbd9b1c93dd8e05a2069ba171d0",
      "new_mode": 33188,
      "new_path": "flashchips.h"
    },
    {
      "type": "modify",
      "old_id": "53952fefa9202e730b91ab51638375f98ca4dbb6",
      "old_mode": 33188,
      "old_path": "spi25_statusreg.c",
      "new_id": "a6a46075664ade60fc8c831d848d0909b9878eb7",
      "new_mode": 33188,
      "new_path": "spi25_statusreg.c"
    }
  ]
}
