)]}'
{
  "commit": "618994707d5ba556704ad9555191379cf46df6ae",
  "tree": "ad771fb01ca88cbf4ed3e93da0576f4a831a3929",
  "parents": [
    "28790a23f71d942f7ec9aa03c5ec90fb90503d0f"
  ],
  "author": {
    "name": "Steve Markgraf",
    "email": "steve@steve-m.de",
    "time": "Mon Jan 09 23:06:52 2023 +0100"
  },
  "committer": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Sat Mar 04 12:33:03 2023 +0000"
  },
  "message": "programmer: Add bitbanging programmer driver for Linux libgpiod\n\nWith this driver, any single board computer, old smartphone, etc. with\na few spare GPIOs can be used for flashrom.\n\nTested by reading of a 2048 kB flash chip on a Qualcomm MSM8916 SoC\n@800 MHz, ran the following command:\n\ntime flashrom -p linux_gpiod:gpiochip\u003d0,cs\u003d18,sck\u003d19,mosi\u003d13,miso\u003d56 -r test.bin\n\nThis command uses /dev/gpiochip0 with the specified GPIO numbers for the\nSPI lines. All arguments are mandatory.\n\nOutput:\n[...]\nFound GigaDevice flash chip \"GD25LQ16\" (2048 kB, SPI) on linux_gpiod.\n[...]\nreal    1m 33.96s\n\nChange-Id: Icad3eb7764f28feaea51bda3a7893da724c86d06\nSigned-off-by: Steve Markgraf \u003csteve@steve-m.de\u003e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.coreboot.org/c/flashrom-stable/+/73290\nTested-by: build bot (Jenkins) \u003cno-reply@coreboot.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "21d400ee1e9d6dd0ec598c8d0f1da3fdbbe4b2c7",
      "old_mode": 33188,
      "old_path": "Documentation/building_meson.md",
      "new_id": "74dc65b731e73dee8c9c01bbbae531936c3aefc5",
      "new_mode": 33188,
      "new_path": "Documentation/building_meson.md"
    },
    {
      "type": "modify",
      "old_id": "bcf795b1dfc9c0cac6ce2452b0bf4b506b6d5d28",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "5db5e03ca4d733d996af5ad55d96ffdfc7846ff5",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "71e873538e8e7235f322b9000c07d05f2ff4a71a",
      "old_mode": 33188,
      "old_path": "README",
      "new_id": "ac30d6a22b6109af8462872ff345a6ab9427632c",
      "new_mode": 33188,
      "new_path": "README"
    },
    {
      "type": "modify",
      "old_id": "87a9587ebe0187c81ebfed7b032dbf97e4e84167",
      "old_mode": 33188,
      "old_path": "flashrom.8.tmpl",
      "new_id": "fd5fc2aa74b112196814a15ce6b49fc19dabdd42",
      "new_mode": 33188,
      "new_path": "flashrom.8.tmpl"
    },
    {
      "type": "modify",
      "old_id": "b0eac193650c8264f5ca71462135b785ee3545b7",
      "old_mode": 33188,
      "old_path": "include/programmer.h",
      "new_id": "67988511d693adb6516e85032cbc9ed19fa58a19",
      "new_mode": 33188,
      "new_path": "include/programmer.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0103d1917459a6939ced1e0e75294e334531baf1",
      "new_mode": 33188,
      "new_path": "linux_gpio_spi.c"
    },
    {
      "type": "modify",
      "old_id": "cd98e5b519210c30e704423e787aa2bee78bc7e6",
      "old_mode": 33188,
      "old_path": "meson.build",
      "new_id": "30908084df4ba8273ac411648829ea76c9911eff",
      "new_mode": 33188,
      "new_path": "meson.build"
    },
    {
      "type": "modify",
      "old_id": "2d7f5a6620843b72562e0cb4d1b316778b8482a9",
      "old_mode": 33188,
      "old_path": "meson_options.txt",
      "new_id": "616a9f4905165199a35b51c826377309425a37b0",
      "new_mode": 33188,
      "new_path": "meson_options.txt"
    },
    {
      "type": "modify",
      "old_id": "7df088c65c4148798fc577da5d494b27fc522503",
      "old_mode": 33188,
      "old_path": "programmer_table.c",
      "new_id": "5e716ebe9d67e5a054284eb7ce4dcc04ba6d8678",
      "new_mode": 33188,
      "new_path": "programmer_table.c"
    },
    {
      "type": "modify",
      "old_id": "58d89c845f24481620ed70fbdd0a27700c4d93d6",
      "old_mode": 33188,
      "old_path": "util/manibuilder/Dockerfile.alpine",
      "new_id": "7f738e16256c03fcd6f55172b442501c2ec40a74",
      "new_mode": 33188,
      "new_path": "util/manibuilder/Dockerfile.alpine"
    },
    {
      "type": "modify",
      "old_id": "e363fd2a2393f00f325b8cdb380c353ce444e91e",
      "old_mode": 33188,
      "old_path": "util/manibuilder/Dockerfile.debian-debootstrap",
      "new_id": "3f5f0cb920bd3683099ec815a1ce66051e74c2b3",
      "new_mode": 33188,
      "new_path": "util/manibuilder/Dockerfile.debian-debootstrap"
    },
    {
      "type": "modify",
      "old_id": "8a22fa89b9ee4ad7990ac1616d6e666bff5ecc3b",
      "old_mode": 33188,
      "old_path": "util/manibuilder/Dockerfile.fedora",
      "new_id": "179c45f6af6c83595ce386417880353e850e9270",
      "new_mode": 33188,
      "new_path": "util/manibuilder/Dockerfile.fedora"
    },
    {
      "type": "modify",
      "old_id": "f1088c56a4ddbcb6683998c5367c81b44b33dde3",
      "old_mode": 33188,
      "old_path": "util/manibuilder/Dockerfile.ubuntu-debootstrap",
      "new_id": "c30a6720e2e1544703e5892822c044a5bb0e7b98",
      "new_mode": 33188,
      "new_path": "util/manibuilder/Dockerfile.ubuntu-debootstrap"
    },
    {
      "type": "modify",
      "old_id": "c870ebc5f80b8a18570f3f476f5f9b74bdad9cf2",
      "old_mode": 33188,
      "old_path": "util/shell.nix",
      "new_id": "3c983fefe3926be7bddd8e61c72e5401f3797f99",
      "new_mode": 33188,
      "new_path": "util/shell.nix"
    }
  ]
}
