)]}'
{
  "commit": "c9feb1bdfa96745a200b9a62dc4234446db8ddb6",
  "tree": "b532df293904cb48d7efa7b127a0072f48801835",
  "parents": [
    "da1c834e9899e5094377a33d19daa53c0d88640b"
  ],
  "author": {
    "name": "Nikolai Artemiev",
    "email": "nartemiev@google.com",
    "time": "Thu Oct 21 01:35:13 2021 +1100"
  },
  "committer": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Fri Dec 30 01:16:45 2022 +0100"
  },
  "message": "flashchips,writeprotect_ranges: add range decoding function\n\nAllow chips to specify functions that map status register bits to\nprotection ranges. These are used to enumerate available ranges and\ndetermine the protection state of chips. The patch also adds a range\ndecoding function for the example chips. Many other chips can also be\nhandled by it, though some will require different functions (e.g.\nMX25L6406 and related chips).\n\nAnother approach that has been tried in cros flashrom is maintaining\ntables of range data, but it quickly becomes error prone and hard to\nvalidate.\n\nUsing a function to interpret the ranges allows compact encoding with\nmost chips and is flexible enough to allow chips with less predictable\nranges to be handled as well.\n\nTested: dumped range tables, checked against datasheets\n\nChange-Id: Id163ed80938a946a502ed116e48e8236e36eb203\nSigned-off-by: Nikolai Artemiev \u003cnartemiev@google.com\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/58480\nOriginal-Reviewed-by: Edward O\u0027Callaghan \u003cquasisec@chromium.org\u003e\nOriginal-Reviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/70969\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c6841bda7d9dabad245016aa6400cfa5cad4c02e",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "ed46b13069ab761d0dc2bedf29a18dc4ce641444",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "9e2b44b1a7076166c855421b5d2c19c2039abbca",
      "old_mode": 33188,
      "old_path": "chipdrivers.h",
      "new_id": "e5f426c3a103bc1608ba25443e2d0fcfafbe596d",
      "new_mode": 33188,
      "new_path": "chipdrivers.h"
    },
    {
      "type": "modify",
      "old_id": "91293357286702dc66ae5683cc7f7ab58e884f1b",
      "old_mode": 33188,
      "old_path": "flash.h",
      "new_id": "c6173baa81a0bd936a1b22729ed732272063cac4",
      "new_mode": 33188,
      "new_path": "flash.h"
    },
    {
      "type": "modify",
      "old_id": "ab25079c1d810a81808eb13dd0db0dbc1b6f21c7",
      "old_mode": 33188,
      "old_path": "flashchips.c",
      "new_id": "9bdf764837e93c2172905393bee0c88bc73390ed",
      "new_mode": 33188,
      "new_path": "flashchips.c"
    },
    {
      "type": "modify",
      "old_id": "a9043c6470a38807f7a23e0da4e167059e15e2a3",
      "old_mode": 33188,
      "old_path": "meson.build",
      "new_id": "c312ca688e978c34ffaad705ee7debdac70e1b9c",
      "new_mode": 33188,
      "new_path": "meson.build"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "04e38811dc452c04730dc20e4934fd2a5e2d0352",
      "new_mode": 33188,
      "new_path": "writeprotect_ranges.c"
    }
  ]
}
