)]}'
{
  "log": [
    {
      "commit": "d40037a83dd03b91042c0725ba4dac2d6b7ffc92",
      "tree": "877e9d73b89d0d0f8174340c0d29ff890b46e96b",
      "parents": [
        "2a1036b98c44529c64db645c481c0b35c81b21b0"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 20 23:20:46 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "selfcheck: Check for WP functions when BP bits are given\n\nWhen block-protect bits in a status/configuration register are\nadvertised, check for the respective function pointers.\n\nChange-Id: I3cabb7ecbe7b21371720690b8f08a922b3b4c4aa\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/278\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "2a1036b98c44529c64db645c481c0b35c81b21b0",
      "tree": "c72d463a2c50ce6f3145a38637094bedbb9b56a7",
      "parents": [
        "d4e41d353604cb19938305590efbc81642152422"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 20 23:19:49 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Fix up GD25Q128C write-protect support\n\nThe SPI write-protection functions were missing in the GD25Q128C\nentry. Fix that.\n\nDatasheet used:\nhttps://files.pine64.org/doc/datasheet/pine64/GD25Q128C-Rev2.5.pdf\n\nChange-Id: Ibda9f224fb5f57a0878246c324bceb2089dd70ae\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/277\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "d4e41d353604cb19938305590efbc81642152422",
      "tree": "50d1ec87c227b58de5c56723bfb86b6c09b1e305",
      "parents": [
        "04c1cf789b0468de5fd1368469d90b6fc75b3c46"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Oct 18 14:59:54 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add SST26VF080A\n\nSimple 8Mbit SPI flash, with one caveat though: SFDP reports 0xd8 as\nboth 32KiB and 64KiB eraser.  The datasheet[1] lists this too in the\nSFDP table,  however otherwise consistently states that erase blocks\nare uniform, and lists 0x52 as the 32KiB eraser.  For now, we\u0027ll try\nthe latter.\n\n[1] https://ww1.microchip.com/downloads/aemDocuments/documents/MPD/ProductDocuments/DataSheets/SST26VF080A-2.5V-3.0V-8-Mbit-Serial-Quad-IO-%28SQI%29-Flash-Memory-20006203C.pdf\n\nChange-Id: I7d66ff23ef9ded7365e9c75a1aff0a68678a4ba0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/263\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "04c1cf789b0468de5fd1368469d90b6fc75b3c46",
      "tree": "3a907becee99560f497f6758342bc1d48c712662",
      "parents": [
        "eb2c04185f8f471c768b742d66e4c552effdd9cb"
      ],
      "author": {
        "name": "Arthur Heymans",
        "email": "arthur@aheymans.xyz",
        "time": "Thu Jan 09 16:04:45 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jan 31 11:40:27 2025 +0000"
      },
      "message": "Add .envrc\n\nhttps://direnv.net/ with use nix, requires the shell.nix to be placed at\nthe project root. This is a very common setup.\n\nChange-Id: I6eff8cca03aaa35c68a034ba1f553946c893377c\nSigned-off-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/317\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "eb2c04185f8f471c768b742d66e4c552effdd9cb",
      "tree": "a92b76fff56165acb60db7e65e503d13e4d2c33e",
      "parents": [
        "e05e3343366340048c421ab0bfa744ea077185c8"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Nov 14 14:22:43 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Nov 21 20:31:44 2024 +0000"
      },
      "message": "cli_wp: Fix bail-out when multiple chips are detected\n\nWe need to bail out in this case, too. Otherwise flashprog tries to\nuse the null pointer `flash\u0027.\n\nChange-Id: Id2588c7e8065169236cf56d67a524779c51f2577\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/310\n"
    },
    {
      "commit": "e05e3343366340048c421ab0bfa744ea077185c8",
      "tree": "0dabe05c1720cf63137fd1df44e03e9ea07a1cff",
      "parents": [
        "efad610a409c48139d8e482b36dca82cc0d73b44"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Nov 14 14:08:56 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Nov 21 20:31:44 2024 +0000"
      },
      "message": "cli_common: Rename local `optarg\u0027 variable\n\nSome toolchains complain that this shadows the global from \u003cgetopt.h\u003e.\nAlas,  toolchains seem inconsistent in the decision when to warn about\nshadowing of globals from system headers and when not to.  Hence, just\nrename `optarg\u0027 -\u003e `opt_arg\u0027.\n\nChange-Id: Ic973f6076109156ec5ca77ea032bd13e5a452d5b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/309\n"
    },
    {
      "commit": "efad610a409c48139d8e482b36dca82cc0d73b44",
      "tree": "984e6c5bc135d1a55afd97d80919419c11ced052",
      "parents": [
        "09289fbb5a4c6c61748844db2b97af0d0e60d319"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 15:07:16 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 14:20:08 2024 +0000"
      },
      "message": "manibuilder: Include NetBSD (anita tags) in `native\u0027 target\n\nThe NetBSD images can now run with KVM on compatible architectures.\nHence they are a lot faster, and can be treated as native.\n\nChange-Id: Ica5124dba752ea58216adbc15e4a9e1c04100444\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/276\n"
    },
    {
      "commit": "09289fbb5a4c6c61748844db2b97af0d0e60d319",
      "tree": "39099bc88b74802ed4ef5d8d56c64c0bcc19c70b",
      "parents": [
        "1457cc6a0500d006a516b63ede5654dc404a69c3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 09 22:56:25 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 14:20:08 2024 +0000"
      },
      "message": "manibuilder: Replace unmaintained DEFAULT_TAGS list\n\nAFAIR, I\u0027ve only used the `working\u0027 target for flashprog releases\nso far. The default became a little stale, so just remove it. For\na quicker test, the `native\u0027 target is still around.\n\nChange-Id: I1dad9ce6dcb1ab77e8c174e801f3b9830b33b190\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/275\n"
    },
    {
      "commit": "1457cc6a0500d006a516b63ede5654dc404a69c3",
      "tree": "23d134c0c8b99c323dd303d33e27304fb70a5bcb",
      "parents": [
        "1faffa5666f6828a15b10bff63ac6ad9ac701fcb"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 09 22:49:59 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 14:20:08 2024 +0000"
      },
      "message": "manibuilder: Stop build testing oldest, EOL targets\n\nThese old targets can\u0027t compile the complete flashprog code anymore.\nAs they are all EOL, just remove them. As a bonus, this also reduces\nour quirk handling a lot.\n\nChange-Id: I0c1d7914e5d2bcce508ea6b8ce3a82d909081975\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/274\n"
    },
    {
      "commit": "1faffa5666f6828a15b10bff63ac6ad9ac701fcb",
      "tree": "e6d0a1b983a8d70de37cf203ed57728b16638ed3",
      "parents": [
        "61dbe36e8cb35c5142e70609d3281901d55f2386"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 09 22:44:53 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 14:20:08 2024 +0000"
      },
      "message": "manibuilder: Fix Ubuntu Noble Numbat (24.04) for amd64\n\nSome parts of the Dockerfile.ubuntu accidentally broke the apt setup for\namd64. Check for the newer `/etc/apt/sources.list.d/ubuntu.sources\u0027, and\nskip the old hacks if it exists.\n\nChange-Id: Iae42ba548e5ffa228922bd060a38450e969e4405\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/273\n"
    },
    {
      "commit": "61dbe36e8cb35c5142e70609d3281901d55f2386",
      "tree": "813ab00ae14ad3d77a5fbf9a28b79dbfbd1cc7a9",
      "parents": [
        "63d30a26b7abfdbf6dc60fd0607173cd1b8b05db"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 01 15:02:44 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 14:20:08 2024 +0000"
      },
      "message": "udev rules: Use `uaccess\u0027 tag instead of `plugdev\u0027 group\n\nNot all systems have a `plugdev\u0027 group.  The `uaccess\u0027 tag, however,\nseems to be the standard these days  (seems to exist for about a de-\ncade on major distros). We rename the file to have a higher priority\nby default. At least on ArchLinux, it has to precede `73-seat-late\u0027.\n\nTested on ArchLinux (local session) and Raspbian (remote session).\n\nChange-Id: Iadcc74b32b92660fbf86b235e65692369535f7a6\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/266\n"
    },
    {
      "commit": "63d30a26b7abfdbf6dc60fd0607173cd1b8b05db",
      "tree": "8de92e7468c02069c4868130c6554cd0d3ca9571",
      "parents": [
        "6ce26a72f721461d3de48c12cd1dc09a96b5519c"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 01 14:18:30 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 14:20:08 2024 +0000"
      },
      "message": "install: Install binary into bin/, not sbin/\n\nThere are plenty of ways today to run flashprog as a normal,\nnon-root user. Hence it should live in bin/, where it can be\nshared by root and others.\n\nChange-Id: Ia614ea234237668cb4d6a0c1915e41975aae70d4\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/265\n"
    },
    {
      "commit": "6ce26a72f721461d3de48c12cd1dc09a96b5519c",
      "tree": "7ca4f4b528dd04b73af42d05b721d4c30c00ca7a",
      "parents": [
        "612519b2c54a008744891540407f2c8ff251083d"
      ],
      "author": {
        "name": "Alexandru M Stan",
        "email": "ams@frame.work",
        "time": "Fri Oct 11 22:47:24 2024 -0700"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 14:00:40 2024 +0000"
      },
      "message": "flashchips: add Winbond W25R512NW / W74M51NW\n\nI used W25Q256JW as a template and just increased every erase size\ncalculation.\n\nDatasheet can be found by form contact only via\nhttps://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/?__locale\u003den_TW\u0026partNo\u003dW25R512NW\n\nI tested it by running:\ndd if\u003d/dev/urandom of\u003d/tmp/random.bin bs\u003d1M count\u003d64\nsudo /tmp/flashrom/build/flashrom -p ft2232_spi:type\u003d2232H -w /tmp/random.bin --progress\nsudo /tmp/flashrom/build/flashrom -p ft2232_spi:type\u003d2232H -v /tmp/random.bin\nAnd I saw \"Verifying flash... VERIFIED.\"\n\nChange-Id: Ibf670e4014a22e4636789768b759cb51f75cd046\nSigned-off-by: Alexandru M Stan \u003cams@frame.work\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/84752\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/272\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "612519b2c54a008744891540407f2c8ff251083d",
      "tree": "f264bf5339ab332436dfd9acaa86d76b7492c1cf",
      "parents": [
        "d5a61efe4e73675570eba7d537b4ec7e476946cb"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Nov 06 23:37:11 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Add Intel Arrow Lake support\n\nARL looks much like a desktop version of Meteor Lake. Hardware registers\nseem to be the same, and the descriptor mostly differs in strap settings\n(as far as we are concerned).\n\nOdd enough, the old (pre 500 series) format for processor straps is used\nagain. For the descriptor detection, we shuffle the old default for Ibex\nPeak around, and make Arrow Lake the default for everything with over 80\nPCH traps.\n\nTested `ich_descriptors_tool\u0027 output for a GIGABYTE Z890M GAMING X BIOS.\n\nDocuments used:\n  * Intel® Core™ Ultra 200S Series Processors Datasheet, Volumes 1 and 2\n  * Arrow Lake-S and Arrow Lake-HX Client Platform\n    SPI Programming Guide\n\nChange-Id: Ibaaeb896273eed3806561ba8c01d89770d27ff18\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/270\n"
    },
    {
      "commit": "d5a61efe4e73675570eba7d537b4ec7e476946cb",
      "tree": "615c8bc476cf847c2d0bea4f7f1f154eede67e5a",
      "parents": [
        "5e0d9b04a07f5646038020e1a45dd04c0b14e8f3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Nov 06 23:55:44 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Add Intel Lunar Lake support\n\nHardware looks much the same as Meteor Lake. The descriptor, however,\nknows 7 masters and regions are named a bit differently. Hence, add a\nnew enum entry for Lunar Lake.\n\nTested `ich_descriptors_tool\u0027 output for an MSI Prestige 13 A2VMG BIOS.\n\nDocuments used:\n  * Intel® Core™ Ultra 200V Series Processors Datasheet, Volumes 1 and 2\n  * Lunar Lake Client Platform\n    SPI Programming Guide\n\nChange-Id: Ia377872cba56a3db6d853b7ce1bd495e5a03a868\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/271\n"
    },
    {
      "commit": "5e0d9b04a07f5646038020e1a45dd04c0b14e8f3",
      "tree": "70386babe868ba7282cbbb0d8bc53880286025e8",
      "parents": [
        "0ef2eb8f041ad6918dd41f4837d39be8811889c9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 19 21:44:52 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Add Intel Meteor Lake SoC\n\nHardware looks the same as C740 series / Emmitsburg. The descriptor\nis somewhere between the latter and latest desktop platforms.\n\nOutput of `ich_descriptors_tool\u0027 with an image from Google/Rex looks\nreasonable.\n\nTested probing and reading on a Lenovo L16 ThinkPad.\n\nDocuments used:\n  * Intel® Core™ Ultra Processor Datasheet, Volumes 1 and 2\n  * Meteor Lake/Arrow Lake-U / H Client Platform\n    SPI Programming Guide\n\nChange-Id: I7f1d162622a141fadcad715b064f92b1ccf7c72a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/189\n"
    },
    {
      "commit": "0ef2eb8f041ad6918dd41f4837d39be8811889c9",
      "tree": "978d212a6cc5031e589162c49a36e4353e91c937",
      "parents": [
        "42daab10a7704bfbe4a0af1a07748b8858649301"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 19 21:38:17 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Add Intel Snow Ridge SoC\n\nHardware looks the same as C740 series / Emmitsburg. The descriptor,\nhowever, has very different frequency settings and different regions\nand masters.\n\nThe output of `ich_descriptors_tool\u0027 tested with an image from Intel\nlooks reasonable.\n\nChange-Id: I9f9dc4414af63cbe48d22ef2955df28e297d7e4c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/188\n"
    },
    {
      "commit": "42daab10a7704bfbe4a0af1a07748b8858649301",
      "tree": "9a9aa5465db9f58aa9d0c55f9807a2f694a98e05",
      "parents": [
        "af26008fbabdd780bc6966acca4ad2481520b304"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Jul 16 00:27:27 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Properly add Emmitsburg PCH\n\nThe Emmitsburg or C740 series PCH is actually ahead of all the other,\ncurrently supported chipsets. Finally, Intel added new registers that\ncarry the read and write access permissions for all 16 regions.\n\nThe old FRAP register seems to be still around, so we print both new\nand old registers. For the detailed report we use the new registers,\nthough.\n\nWe also adapt the descriptor detection slightly: We check for `NM \u003d\u003d 6`\njust like we did for Lewisburg. This way we won\u0027t treat a huge range of\nISL (ICH/PCH strap length) values as Emmitsburg, which should result in\nless false positives.\n\nThe output of `ich_descriptors_tool\u0027 tested on some Supermicro firmware\nlooks reasonable.  Also tested read/erase/write in `swseq\u0027 and  `hwseq\u0027\nmodes with 7 series PCH, reading with ADL-P. All logs still report FRAP\nsettings correctly.\n\nChange-Id: Ibf5ebe2e2edfe5e5ae26bf1136648bf6354b0aa9\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/187\n"
    },
    {
      "commit": "af26008fbabdd780bc6966acca4ad2481520b304",
      "tree": "4462465349f22b4a69725e4b060c26822ef814f0",
      "parents": [
        "82fe12380a10ce24680ef7e4e4ea682ecc58a20c"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 19 18:19:48 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ich_descriptors_tool: Add missing options for EHL \u0026 C620\n\nAdd a missing usage line for Elkhart Lake (EHL), and a new option\nfor C620 series Lewisburg (LWB).\n\nChange-Id: I98492eb924c3d4abf4b5f57f940a24e2fc726cf4\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/186\n"
    },
    {
      "commit": "82fe12380a10ce24680ef7e4e4ea682ecc58a20c",
      "tree": "79dad3c3ba40a89360bab43d786ef8b3c0c44b9a",
      "parents": [
        "157b81865725e9c544c9da323ab8ff93ff2c1ae5"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 19 17:28:47 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ich_descriptors: Hard code number of masters for newer gens\n\nThe number of masters (NM) field is ignored by the hardware and often\nnot updated in Intel\u0027s tooling.  Since PCH100 / Skylake,  it\u0027s always\nbeen 2 masters for the small core, 5 for the big core,  and 6 for the\nserver platforms.\n\nChange-Id: I4975f5b55981791fa5b10c4731af8f330cbbefa8\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/185\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "157b81865725e9c544c9da323ab8ff93ff2c1ae5",
      "tree": "7c41dfdb3639efd6f68edcfe1b4841fb8f33bd88",
      "parents": [
        "db878fb03658e560b9b19728d11c99ccbb961165"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 19 17:48:12 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ich_descriptors: Guard MCH strap handling by chipset version\n\nAt some point, Intel abandoned the classic MCH/processor strap layout\nidentified by the FMSBA/MSL fields.  Avoid misinterpreting the fields\nthat replaced them by guarding all FMSBA/MSL references.\n\nChange-Id: Ib1ce357bd4db85282903cb7aa5ad6d6066b62c2d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/184\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "db878fb03658e560b9b19728d11c99ccbb961165",
      "tree": "c8b65acbd471be943b66ef4ace420d8be638f266",
      "parents": [
        "b3cc2c6d3b39cc3c97d4130257b805a152a79b4c"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 19 17:37:09 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ich_descriptors: Drop chipset detection based on `freq_read`\n\nFinish what commit 72a9dc0db4e6 (ich_descriptors: Don\u0027t base chipset\ndetection on `freq_read`) started:  This was the original check that\n`ifdtool\u0027 used to distinguish pre/post PCH100 descriptors.  Bringing\nthis into flashrom never helped, on better days it was only a mainte-\nnance burden, sometimes it even triggered the wrong path. Let\u0027s drop\nit before adding more platforms.\n\nChange-Id: Ic76f36df91e2816281a51fea1e693113b1d3db9c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/183\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "b3cc2c6d3b39cc3c97d4130257b805a152a79b4c",
      "tree": "a8175496af3d776dcd5b528a045bc8853d5f3455",
      "parents": [
        "8e4151ddb5b4533aa004594e5009ad92159b0651"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 15 00:45:17 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ich_descriptors: Unify pretty printing of PCH100+ masters\n\nThe newer platforms mostly differ in names and numbers of masters and\nregions.  Make that obvious, and write a generic printing loop. Hope-\nfully this will make future additions easier.\n\nChange-Id: I3e616064743e9558f799159ef8b702f2bbd8ec89\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/182\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "8e4151ddb5b4533aa004594e5009ad92159b0651",
      "tree": "64a5d90d128a7e4997cf8e6c4af84e5c72a7498f",
      "parents": [
        "6d72efaff26d50626008f7f52f710cf2e263b5c6"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Aug 25 13:01:23 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "chipset_enable: Remove hidden-spidev workaround for Elkhart Lake\n\nWe already use the ID of the SPI device here.\n\nChange-Id: I0edce3468399184f295d5be53893c7297a912e8f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/253\n"
    },
    {
      "commit": "6d72efaff26d50626008f7f52f710cf2e263b5c6",
      "tree": "9feda016aaca2da0b89d55d4c2aab70dbca8f72b",
      "parents": [
        "092a699d02a5003b323ed6df5a9e1b1241c4d620"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Aug 25 13:01:23 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "chipset_enable: Remove hidden-spidev workaround for all 14nm PCHs\n\nWhen the 300 and 400 series PCH (Cannon Point, Comet Point)  support\nwas added, we did not know if all firmware will be consistent in the\ndecision not to hide the SPI PCI devices.  A few years later, we can\nconfirm that it is: Grepping[1] through the `linuxhw\u0027 database[2] re-\nveals that we actually gain some hardware support, when matching the\nSPI PCI device directly.\n\nH410 and B460 are actually 22nm \"PCH V\", so they keep the workaround.\n\nJasper Lake already used the PCI ID of the SPI device.\n\nTested read/erase/write on CM246 (Cannon Point).\n\n[1] diff -u \u003c(git grep -lE \u00271f.5.*8086:(9da4|02a4|34a4|a324|06a4)\u0027 \\\n              | grep -v README) \\\n            \u003c(git grep -lE \u00271f.0.*8086:(9d84|028[45]|a30[3-68-ac-e]|3482|068[457c-e]|0697)\u0027 \\\n              | grep -v README)\n[2] https://github.com/linuxhw/LsPCI/\n\nChange-Id: I1b490207818d3a44c8037b6d4046eefe6ead7bda\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/252\n"
    },
    {
      "commit": "092a699d02a5003b323ed6df5a9e1b1241c4d620",
      "tree": "b71c0d02ae41304cd22da77dd6c80da084a7cea7",
      "parents": [
        "5bbd3241aa74908d916e42ce37ed94f1f0bce4f3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Aug 25 12:45:18 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "chipset_enable: Remove hidden-spidev workaround for TGP+\n\nWhen the 500 series PCH (Tiger Point) support was added, we did\nnot know if all firmware will be consistent in the decision not\nto hide the SPI PCI devices.  A few years later, we can confirm\nthat it is: Grepping[1] through the `linuxhw\u0027 database[2] shows\nthat we actually gain some hardware support,  when matching the\nSPI PCI device directly.\n\nFor Alder Lake and Raptor Lake, we already used the PCI IDs of\nthe SPI device.\n\nTested read on Alder Lake P, read/erase/write on RM590E (Tiger\nPoint) which was previously not detected.\n\n[1] diff -u \u003c(git grep -lE \u00271f.5.*8086:(a0a4|43a4)\u0027 | grep -v README) \\\n            \u003c(git grep -lE \u00271f.0.*8086:(a08[123678]|438[1-df])\u0027 | grep -v README)\n[2] https://github.com/linuxhw/LsPCI/\n\nChange-Id: I2474d94be53fe01f8bd01d924098fa28fd43d657\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/251\n"
    },
    {
      "commit": "5bbd3241aa74908d916e42ce37ed94f1f0bce4f3",
      "tree": "2f06cb896db5c8b838e723319ae24b560c641251",
      "parents": [
        "a08847581ff039e901644922c65efd07dba62cc1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Aug 25 12:40:46 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "chipset_enable: Add missing PCI ID for Intel PCH H410\n\nThis is a Comet Point PCH V (22nm).\n\nChange-Id: I9b27163d63f7676391a9579d706caeee17979275\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/250\n"
    },
    {
      "commit": "a08847581ff039e901644922c65efd07dba62cc1",
      "tree": "65fca18733796e382116eae9d3945a8c0a01cdf5",
      "parents": [
        "5eb7a58c1bc34f64c43f98578ce5b9be21a3f152"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Aug 25 12:29:44 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "chipset_enable: Factor PCH100 hidden-spidev workaround out\n\nIntel mandates that the SPI PCI device,  usually 00:1f.5, is hidden\non all 22nm PCHs. This applies to the whole 100 and 200 series PCHs\nas well as some special 300 and 400 series PCHs, and the respective\nserver PCHs and small-core SoCs.\n\nTo cope with the hidden PCI device, we match the LPC PCI device and\nthen crudely assume that the SPI device exists too (only its vendor\nand device IDs are hidden). We don\u0027t need this workaround for newer\ngenerations where the PCI device isn\u0027t hidden anymore,  hence split\nit out.\n\nTested read on Alder Lake P, read/erase/write on CM246 (Cannon Point).\n\nChange-Id: I77b5240b99015ecf56773f4a34436cfd3c83bdf6\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/249\n"
    },
    {
      "commit": "5eb7a58c1bc34f64c43f98578ce5b9be21a3f152",
      "tree": "fe01f2dc6954114e565a0a5eaad30b54a29d21db",
      "parents": [
        "7427569e2572cc8182e056876c0c67ddae213fc3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Nov 05 10:30:19 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Nov 06 11:15:42 2024 +0000"
      },
      "message": "Drop 1s delay before automatic verification\n\nThis delay was added in commit 8ab49e72af84 (Disallow erase/write for\nknown bad chips so people won\u0027t try without a clear understanding) to\nhelp with \"a few reports where verify directly after erase had unplea-\nsant side effects\".\n\nSince 2011 however,  commit b4061f61cdf9  (Move erase verification to\ngeneric code),  we read each erased block back directly,  without any\ndelay.  So it seems the original problem is either gone, or would hit\nus much earlier.\n\nGrepping through 3 years of mailing-list archives, also didn\u0027t reveal\nanything specific.  Most reports of failed verifications could be ex-\nplained with write protections. More recent ones were about SPI flash\nchips with auto address increment (AAI) writes, where flashrom didn\u0027t\nerase automatically before writing  (and hence gave rather suspicious\nresults).\n\nChange-Id: I9871ee7085156816bfffb117cda60b9267990609\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/269\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "7427569e2572cc8182e056876c0c67ddae213fc3",
      "tree": "0dd0104a5a0556a715a2126301eb6e52ab163374",
      "parents": [
        "5a9d6ea76f7c1f06f60b9cbbda885add2fb0eaeb"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 16 13:49:10 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Nov 06 11:12:38 2024 +0000"
      },
      "message": "libflashprog: Run programmer_shutdown() on failed setup\n\nThe programmer init functions can already register shutdown functions\nthat we missed to call should the initialization fail. The callers of\nflashprog_programmer_init() can\u0027t take care of it, because they never\nreceive a valid handle in this case.\n\nChange-Id: I03111d8096fac908f8808480a4df513fca8d84f5\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/243\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "5a9d6ea76f7c1f06f60b9cbbda885add2fb0eaeb",
      "tree": "3d1a61cd5643bfbce077d48c74d2e66a0e82249e",
      "parents": [
        "e149fbe31368a8502d31391346a679064014ac81"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 16 13:47:49 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Nov 06 11:12:38 2024 +0000"
      },
      "message": "chipset_enable: Fix memory leaks introduced with AMD SPI100\n\nThe libpci function pci_get_dev() allocates a device struct that\nneeds to be free\u0027d with pci_free_dev() manually.\n\nChange-Id: Ic14f0931beb660b05cfe3f6e6d43b649dce8fff4\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/242\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "e149fbe31368a8502d31391346a679064014ac81",
      "tree": "2a42a0d9db27c9e686e69ae63099cf014e6c8d49",
      "parents": [
        "07ebc68943bb19d561f8a79e52fefd144720bdcc"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Aug 21 10:23:53 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Nov 05 20:42:52 2024 +0000"
      },
      "message": "Only try to check erase opcodes for SPI25 chips\n\nCalling spi_get_opcode_from_erasefn() is only valid when\nthe SPI25 command set is advertised. Note, this includes\nAT45 chips that are partially compatible.\n\nChange-Id: I1800e9a4bc1079a37758722e1924a13cd3e7a4c5\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/248\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "07ebc68943bb19d561f8a79e52fefd144720bdcc",
      "tree": "35e8df18c88db93aeb45965212aad34a75731177",
      "parents": [
        "240531045697cde87ecddf731c15d7fa84d5628f"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Aug 21 10:18:27 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Nov 05 20:42:52 2024 +0000"
      },
      "message": "Avoid NULL deref in check_block_eraser()\n\nspi_get_opcode_from_erasefn() can return NULL. It already prints a\nproper error message, so we only have to propagate the error.\n\nChange-Id: I7dbbb15c9364fcb505c3ff1b5f034185527483dc\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/247\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "240531045697cde87ecddf731c15d7fa84d5628f",
      "tree": "5e467fea700ceeaea24b2241bd95bca67bf85630",
      "parents": [
        "9897063f72c2290d312954d34e305f472101a73b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Tue Sep 10 17:13:05 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 18:03:32 2024 +0000"
      },
      "message": "chipset_enable: Mark Intel QM87 as DEP\n\nThis one is used in the ThinkPad T440p and was tested with HEADS.\nAs usual, support depends on the chipset configuration and locks.\n\nChange-Id: Ife9475a9862804fdb5c3c166e2ba978aae962f48\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/258\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "9897063f72c2290d312954d34e305f472101a73b",
      "tree": "008e9415c6df6d4a528f16184c9f342c3d068712",
      "parents": [
        "c972aedf9bbbcb5993135514095ab445cd6375e1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 30 02:14:05 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "flashchips: Allow volatile register writes for W25Q128.V\n\nMost status register bits can be written either volatile (with an\nEWSR prefix) or non-volatile (WREN prefix).\n\nTested setting a volatile QE and also volatile WP settings.\n\nChange-Id: I8fcd4d33027325150f9bb1a39865368a4b8995b5\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/255\n"
    },
    {
      "commit": "c972aedf9bbbcb5993135514095ab445cd6375e1",
      "tree": "583f09e7278e25f2cbc7898276bdcb48625ef255",
      "parents": [
        "8f7122cd1183a4224b14131483d549df497b22a6"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 30 02:06:41 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "flashchips: Configure WP for MX25L25635F/45G\n\nTested with an RPi and `linux_spi\u0027.\n\nChange-Id: I76134fdbc73faaba3f9b78a5c5798da4d8940e28\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/254\n"
    },
    {
      "commit": "8f7122cd1183a4224b14131483d549df497b22a6",
      "tree": "29a124ddc5e06cab3eb3f4f71d4b21b2f642c04d",
      "parents": [
        "eed122d401a9da5fb438e73e8c7d905092481110"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:28:33 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add new write-protect CLI\n\nAdd a new write-protect CLI that is based on the classic-CLI feature\nin flashrom/master. The syntax is slighty different: With the new\nCLI wrapper, we can either call it as `flashprog write-protect` or\n`flashprog wp`. To keep the CLI code clean, we allow only one write-\nprotection operation per call.\n\nFor instance, the write-protection status can then be queried like\nthis:\n\n  $ flashprog wp status -p ch341a_spi\n\nChange-Id: I32818b58c9db939719913fc63063c41a27876554\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72991\n"
    },
    {
      "commit": "eed122d401a9da5fb438e73e8c7d905092481110",
      "tree": "6c6f292ec515f21aab5b78db29b197004b2b918b",
      "parents": [
        "1f693db7ecb074c42172a3914ed63f4e08de7560"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 02:05:07 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "layout: Implement flashprog_layout_get_region_range()\n\nSimilar to the function found in flashrom/master, implement a\nlibflashprog API to query the range of a layout region.\n\nChange-Id: Idb3b1a4d24a34847102d66ee0e2cb4d93ae99eac\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72990\n"
    },
    {
      "commit": "1f693db7ecb074c42172a3914ed63f4e08de7560",
      "tree": "a76bbbbd7bed2281f677bef1b2e3ce957e63ecb1",
      "parents": [
        "85c2cf81ffae0d1ef65d25652dd5422162d38187"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:28:33 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add new `config\u0027 CLI for status/config registers\n\nAdd a new CLI mode to query and update status and configuration\nregisters of SPI NOR chips.  Programmer initialization and chip\ninitialization works the same as with the classic CLI (`-p\u0027 and\n`-c\u0027 options). There are two commands `get\u0027 and `set\u0027 where the\nformer is implied if no command is given. For a start, only the\n`quad-enable\u0027 bit can be accessed  (for chips that advertise it\nin the database).\n\nThe `--temporary\u0027 option  allows to use a volatile write status\nregister command if the flash chip supports it. So changes made\nwith this option will not be written to flash and are lost when\nthe chip is reset.\n\nFor instance, the quad-enable bit can then be queried like this\n\n  $ flashprog config get -p ch341a_spi quad-enable\n\nor written with\n\n  $ flashprog config set -p ch341a_spi quad-enable 1\n\nor\n\n  $ flashprog config set -p ch341a_spi --temporary quad-enable 1\n\nChange-Id: I6b9d26c67e6ad65be5df367d2db7942bb98f27ac\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/195\n"
    },
    {
      "commit": "85c2cf81ffae0d1ef65d25652dd5422162d38187",
      "tree": "0227041853e65605f3464240ac48c435a724edbd",
      "parents": [
        "24c0977a70cf5e135434dad466024505f8965f66"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 02 13:47:06 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Implement \"command\" option parser\n\nAdd a new helper getopt_command() that works like a POSIX-compliant\n(i.e. no `argv` permutating) getopt_long(),  except that it doesn\u0027t\nsearch for options with a `--\u0027 prefix but those without.\n\nChange-Id: I18b63ee4e5b523e2f4cfcd0c8764ea9353927236\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/268\n"
    },
    {
      "commit": "24c0977a70cf5e135434dad466024505f8965f66",
      "tree": "c219d3dbad6ebdc697bcfa3923772a497e7bb62e",
      "parents": [
        "b82aadcbbf173fcaf6c93c7d8cc664bf33b0dd21"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 02 13:46:21 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add print function for generic CLI options\n\nChange-Id: I3d5d73c6184dd65c9eacbb2f69c6e1a565d41ab0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/267\n"
    },
    {
      "commit": "b82aadcbbf173fcaf6c93c7d8cc664bf33b0dd21",
      "tree": "f2038c52d252f78ee97adaf56d614b10eb92884f",
      "parents": [
        "a705043179ab641794f497c2ebf6a60d7f3d9b3e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:27:30 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Move some declarations into `cli.h`\n\nThis will help to keep new CLIs clean from internal headers.\n\nChange-Id: I3e5515ae5645fcdce56c13df1ff23de829bbbdb9\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72989\n"
    },
    {
      "commit": "a705043179ab641794f497c2ebf6a60d7f3d9b3e",
      "tree": "1ade082eb16bd84ba9685fe4a1c7275b47e2561d",
      "parents": [
        "d39c7d6ca6d7adacc07b98e4d0e3efe476d649e6"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:01:26 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add a new CLI wrapper\n\nThis new CLI wrapper introduces a command mode,  like we are used from\nGit for instance. The first argument specifies the command mode, which\nis `prog` for the classic flashprog CLI.  As an alternative to a first\nargument,  it can be called as `flashprog-cmd`, `flashcmd`, or `fcmd`,\nvia symbolic links for instance. Splitting CLI functions will allow us\nto add more CLI features, that can be developed independently from the\nclassic CLI.\n\nFor instance, flashprog could then be called like this:\n\n  $ flashprog -p ch341a_spi\n  $ fprog -p ch341a_spi\n\nFor the future \"config\" CLI, more aliases are possible, e.g.:\n\n  $ flashprog config -p ch341a_spi\n  $ flashprog-config -p ch341a_spi\n  $ flashcfg -p ch341a_spi\n  $ fconfig -p ch341a_spi\n\nChange-Id: I98cb110b47ebce52daf2e0972fc4565ef9d40242\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72988\n"
    },
    {
      "commit": "d39c7d6ca6d7adacc07b98e4d0e3efe476d649e6",
      "tree": "f8b3a36e914800b81b1b314e781b20e95e768736",
      "parents": [
        "df6ce9ff64e5e005ddd51353e519ec87388e47d9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:53:08 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract basic CLI init into cli_common\n\nMove the first initialization steps (log callback setting,\nversion/banner printing, and libflashprog init) into a new\nfunction cli_init(). This will be shared by other CLIs.\n\nChange-Id: I9f19006aac18ffcdc05159957d58a2668c41e2b1\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72987\n"
    },
    {
      "commit": "df6ce9ff64e5e005ddd51353e519ec87388e47d9",
      "tree": "a1baf7268de195c3c4f21de183b3dc9c870ba034",
      "parents": [
        "0da839bac81da604cc7102c4dabf97efb6bda57c"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 16:16:04 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract log argument parsing into cli_common\n\nMove log argument parsing into `cli_common.c` as it\u0027s also useful for\nother CLIs. Also add a NULL-check for the strdup() return value.\n\nChange-Id: I9b1c9ae2e490edd3560b11b84fddd79e4d396e1d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72986\n"
    },
    {
      "commit": "0da839bac81da604cc7102c4dabf97efb6bda57c",
      "tree": "bce2cb7a129f42b86402ae2e4fd4523704238ff6",
      "parents": [
        "d91822a91d179e0b27629341a3d1a436110b8028"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 01:40:07 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract layout argument processing\n\nMove the processing of layout arguments (i.e. actual reading\nof layout files / data from flash) into a shared function,\ncli_process_layout_args().\n\nThis changes the sequence in `cli_classic.c` slightly: A layout\nfile is now read and parsed after the programmer init / chip\nprobing.\n\nChange-Id: Ibb6574a27bcabc923a53ec355afd384da0665e4c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72985\n"
    },
    {
      "commit": "d91822a91d179e0b27629341a3d1a436110b8028",
      "tree": "cc466b329f29b6ca819b9b059c67419fc0c087d1",
      "parents": [
        "e7899a9c40624eab4cd68595fbcaed91c0ace29a"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:43:54 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract layout argument parsing into cli_common\n\nMove the parsing logic for layout sources into the new function\ncli_parse_layout_args(). This way it can be shared with other CLIs.\n\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\n\nChange-Id: Idcbb136d31477cdb0aebec4af0c4cbc873f26011\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72984\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "e7899a9c40624eab4cd68595fbcaed91c0ace29a",
      "tree": "6a330fcc1fb75b8c9112994c16698ba758d41c54",
      "parents": [
        "34e783ad1d2fded9fecef4c623d95ad96ee6dada"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:39:47 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Move all long-option keys into cli.h\n\nGather all long-option key values in `cli.h` so we can have a single\nenum that counts the numbers up and thus provides unique values.\n\nChange-Id: Id9fb27b442308ee7a7d59282f6db1f8f18ef20f2\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72983\n"
    },
    {
      "commit": "34e783ad1d2fded9fecef4c623d95ad96ee6dada",
      "tree": "bf713cf732a504a0aa2018b46e9f44699bb5c51a",
      "parents": [
        "e68b08b386631f5a44dfa30bf437e0b4dfdd3350"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:30:27 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract flash argument parsing into cli_common\n\nMove the parsing logic for `-c` and `-p` into the new function\ncli_parse_flash_args(). This way it can be shared with other CLIs.\n\nWe start a new header file `cli.h` for common CLI functions.\n\nChange-Id: If3f5eff0a2f56a1235038b19b3c1d6586536fd5d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72982\n"
    },
    {
      "commit": "e68b08b386631f5a44dfa30bf437e0b4dfdd3350",
      "tree": "0053657501b6e52788072870592f7666209a40ae",
      "parents": [
        "6898f5b13d4cc0b5864b0f1f898af10fb1815797"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:00:54 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli_classic: Rewrite programmer argument parsing\n\nOnly break programmer name and arguments and use the libflashprog\nAPI to do the actual programmer lookup. This assumes that program-\nmer names don\u0027t contain a colon. Otherwise it should yield the\nsame results as the old code.\n\nChange-Id: Ie70df81a0531470a6bb005d78346719b4da49134\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72981\n"
    },
    {
      "commit": "6898f5b13d4cc0b5864b0f1f898af10fb1815797",
      "tree": "5717fe27dd3924f083b6403dd7eeb31d15a683e4",
      "parents": [
        "55e788491607997ca93c86e58a38f2ac5dc73afe"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 21 15:59:57 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "spi25_statusreg: Prefer volatile status register writes\n\nNow that libflashprog API users can choose whether to target volatile\nor non-volatile status register bits, we turn around the default beha-\nvior if both are supported. This way, we won\u0027t unnecessarily wear sta-\ntus registers in cases where we automatically disable protections.\n\nChange-Id: I92d84e4a140169464e318c7f84690b7665fdb29f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/194\n"
    },
    {
      "commit": "55e788491607997ca93c86e58a38f2ac5dc73afe",
      "tree": "90be6d93bedff5fc983054de1e474d31aff6f559",
      "parents": [
        "fbba4545dd9ec5ea7f3416370d6b71ccc85e3f7e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 21 00:46:19 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "Introduce FLASHPROG_FLAG_NON_VOLATILE_WRSR\n\nAdd a new flag to our flash context that tells us if we should use\nvolatile or non-volatile status-register writes by default. Use it\nin the write-protection API. The logic to disable block protection\nautomatically stays as is for now, until we have established tools\nto manually control the protection.\n\nChange-Id: Ie9a41b6404991075e2bf76bcffbd4e9887c62c79\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/193\n"
    },
    {
      "commit": "fbba4545dd9ec5ea7f3416370d6b71ccc85e3f7e",
      "tree": "5cb5537e495872d534531df5f6f8f4dfa5c8655f",
      "parents": [
        "768cfc461105e11852706154c85a312831821f4d"
      ],
      "author": {
        "name": "Jakob Haufe",
        "email": "sur5r@sur5r.net",
        "time": "Wed Oct 23 20:45:08 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 02 10:30:21 2024 +0000"
      },
      "message": "Install udev rules\n\nChange-Id: Id8bb6b0fa005e1e9ba09411f59aa1ac8b2f6f1c6\nSigned-off-by: Jakob Haufe \u003csur5r@sur5r.net\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/264\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "768cfc461105e11852706154c85a312831821f4d",
      "tree": "1a77bf477fca555ea53b38e4fc9e9b7c5fbf8a7e",
      "parents": [
        "d128a0ae87086b37c0e5d7a8d934bcdee173402f"
      ],
      "author": {
        "name": "Naresh Solanki",
        "email": "naresh.solanki@9elements.com",
        "time": "Fri Oct 04 20:17:34 2024 +0530"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Oct 14 18:42:03 2024 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25LR512ME\n\nTested on Birman+ board.\n\nChange-Id: I056d9245809c6fddae0123b8ed667deb5d00d6f6\nSigned-off-by: Naresh Solanki \u003cnaresh.solanki@9elements.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/262\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "d128a0ae87086b37c0e5d7a8d934bcdee173402f",
      "tree": "e28ec82c6450d6abc520b9fd7f70d2d776f61dac",
      "parents": [
        "c6a924aa66d7bbd56f28754c44668cc4f054c13d"
      ],
      "author": {
        "name": "Nicholas Chin",
        "email": "nic.c3.14@gmail.com",
        "time": "Fri Sep 27 22:57:22 2024 -0600"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Sep 29 23:37:04 2024 +0000"
      },
      "message": "flashchips: Remove unsupported erase blocks for Winbond W25X{16,32,64}\n\nThis family of chips does not support the 0x52 (32 KiB block erase) and\n0x60 (chip erase) opcodes according to their datasheet.\n\nChange-Id: I35ecc4265fdee208855a4ce8f74880fdc8dfa326\nSigned-off-by: Nicholas Chin \u003cnic.c3.14@gmail.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/260\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "c6a924aa66d7bbd56f28754c44668cc4f054c13d",
      "tree": "bbcf88953a2ebc99f4382dbc9c9198ae40397b20",
      "parents": [
        "dac4239136fcbfdd29e5f71cfe8d570d5be26494"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Wed Sep 04 15:09:52 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Sep 10 10:25:06 2024 +0000"
      },
      "message": "Don\u0027t mention writing when erasing only (-E)\n\nThe old messages were misleading and caused confusion. Probably nobody\nnoticed because `-E\u0027 is rarely used.\n\nChange-Id: I9ed2ba717fbffc274d5d044e1053e6f23f1fdac5\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/256\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nicholas Chin \u003cnic.c3.14@gmail.com\u003e\n"
    },
    {
      "commit": "dac4239136fcbfdd29e5f71cfe8d570d5be26494",
      "tree": "4068869ae91e978984a79e8eab8b0202aa716293",
      "parents": [
        "56d236bda45dfe9069fd29773965aa269506e0a9"
      ],
      "author": {
        "name": "Nicholas Chin",
        "email": "nic.c3.14@gmail.com",
        "time": "Tue Jul 30 20:01:59 2024 -0600"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Aug 19 10:58:13 2024 +0000"
      },
      "message": "ch347_spi: Add \u0027spimode\u0027 parameter\n\nThis allows the SPI mode (clock polarity and phase) of the CH347 to be\nselected. By default mode 0 is used, as most flash chips are compatible\nwith this mode. I have noticed that the CH347 is able to work at higher\nclock speeds with some chips when set to mode 1, despite the chip not\nofficially having support for this configuration.\n\nChange-Id: I7938519e23e9e014c016f9d7f130d1ac191a09fa\nSigned-off-by: Nicholas Chin \u003cnic.c3.14@gmail.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/244\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "56d236bda45dfe9069fd29773965aa269506e0a9",
      "tree": "8b8642038a81db8fe0eae273c7a6a59e571f6f5c",
      "parents": [
        "3b9f152b4d53eef7f10f82cca6e808a223ac11e8"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 13 15:51:37 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 16 22:02:16 2024 +0000"
      },
      "message": "chipset_enable: Add some newer AMD code names\n\nThese were found in the `linuxhw\u0027 database[1] to\nuse the same id/revision.\n\n[1] https://github.com/linuxhw/LsPCI/\n\nChange-Id: I131cacc6712d11ecd96e6c7d1b802488f48cf246\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/171\n"
    },
    {
      "commit": "3b9f152b4d53eef7f10f82cca6e808a223ac11e8",
      "tree": "4a99b0f7431ca0611607bb8b0331d7c0cc5f6360",
      "parents": [
        "522160f57af9a3dd2054d6912d071b6210f61769"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 16:09:29 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 16 22:02:16 2024 +0000"
      },
      "message": "chipset_enable: Probe AMD SPIBAR first and bail on ff\n\nTesting on a ThinkPad T14s Gen3 has shown that the LPC device\u0027s\nPCI config space can return all `ff\u0027 for everything from offset\n0x44 on. Reasons are unknown at this point, so it seems best to\ncheck for this and bail out.\n\nChange-Id: I92dcbdc2eb31652faaad1dba3ad6978de0c8024b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/200\n"
    },
    {
      "commit": "522160f57af9a3dd2054d6912d071b6210f61769",
      "tree": "de346028eede3fa9f5ca775109a52c395f5e2dc5",
      "parents": [
        "639d563b3f0084ed053384c468663be342cba775"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Aug 11 11:03:05 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Aug 15 19:47:52 2024 +0000"
      },
      "message": "meson: Add ft4222_spi\n\nForgot to update Meson when adding the new FT4222\nprogrammer driver. Fix that.\n\nChange-Id: I967715b31291e5221326d9cc0ce620ab59e775b3\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/241\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "639d563b3f0084ed053384c468663be342cba775",
      "tree": "5f1606c04718dd1393cd8161b8ab7bb26d895245",
      "parents": [
        "cbbd601b2a538d5493ec09064f53c1ba3c5ce855"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 02 23:22:34 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Aug 08 21:58:11 2024 +0000"
      },
      "message": "README: Update flashprog.org URLs\n\nFiles are still not uploaded, but this is where they would be.\n\nChange-Id: Ifad18305e9f9463081cd07cd2d0baf5e78db1942\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/224\n"
    },
    {
      "commit": "cbbd601b2a538d5493ec09064f53c1ba3c5ce855",
      "tree": "ce2b626c8d16001721a5c6d5a9b476088598bddd",
      "parents": [
        "79451f1824e289ad74254d6a7b60a24390fbf1d4"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 02 23:17:03 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Aug 08 21:58:11 2024 +0000"
      },
      "message": "README: Update dependency list and Linux package names\n\nSync these with the wiki \"Downloads\" page, add some additional\ncomments.\n\nChange-Id: I33f63ebffd77e1a20fc849e720bcfb1e476a6a17\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/223\n"
    },
    {
      "commit": "79451f1824e289ad74254d6a7b60a24390fbf1d4",
      "tree": "abe021b3793ee7822275c8cfd84125f750964661",
      "parents": [
        "5b4695ce8ba39f289436bd1a680e11c165721408"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 02 22:51:55 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Aug 08 21:58:11 2024 +0000"
      },
      "message": "README: Rename \"Packaging\" -\u003e \"Source Packaging\"\n\nShould be less confusing for binary-package maintainers.\n\nChange-Id: I60ded87c9665a51343b284ef7ae5a58021896c3e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/222\n"
    },
    {
      "commit": "5b4695ce8ba39f289436bd1a680e11c165721408",
      "tree": "8550f6fdd54b522f0009109310db541edbb74d18",
      "parents": [
        "7224085ced4e015ad86673d061cd723b17492608"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Aug 02 22:56:25 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Aug 08 21:58:11 2024 +0000"
      },
      "message": "README: Dial laptop warning down a little\n\nSo far no issues with laptops of the last decade.\n\nChange-Id: If0e0f7b75bf33385ea0ae42aed1014542d8c1f7e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/221\n"
    },
    {
      "commit": "7224085ced4e015ad86673d061cd723b17492608",
      "tree": "98d8f20b04cc465c24c2c499e484de943227cf82",
      "parents": [
        "448457ad4bce249d0165d77f23ea18fb4946508c"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 00:04:37 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Aug 08 21:56:13 2024 +0000"
      },
      "message": "udev rules: Add some more IDs\n\nAdd IDs for Altera USB Blaster, DirtyJTAG, FTDI FT232H, FTDI FT4222H,\nand PICkit2.\n\nChange-Id: I33c69d1ab5db44d6b9761b3d062ed4b66b798f92\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/199\nReviewed-by: Nicholas Chin \u003cnic.c3.14@gmail.com\u003e\n"
    },
    {
      "commit": "448457ad4bce249d0165d77f23ea18fb4946508c",
      "tree": "a1de3df939258bdb95852e1d86807fcdbdb8af88",
      "parents": [
        "e39549b56a4a79a7e4fffa987451b8197053e7ea"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 00:02:54 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Aug 08 21:56:13 2024 +0000"
      },
      "message": "ch347_spi: Add CH347F ID and loop over the entries\n\nTested with CH347T in mode 1 and CH347F.\n\nChange-Id: I2f8246521b359c5cf574b952b32bee603abcc800\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/198\nReviewed-by: Nicholas Chin \u003cnic.c3.14@gmail.com\u003e\n"
    },
    {
      "commit": "e39549b56a4a79a7e4fffa987451b8197053e7ea",
      "tree": "afb761d5402a536539d4fb2d881c76704a98444e",
      "parents": [
        "dfd064759b416463244aafea80a5b7120ef8e4e1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 27 23:58:32 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Aug 08 21:56:13 2024 +0000"
      },
      "message": "ch347_spi: Search for compatible USB interface\n\nThe newer CH347F version uses a different interface number. Hence,\nlook for the interface with \"vendor specific\" class, which is what\nthe SPI interface uses.\n\nTested with the original CH347T in mode 1 and upcoming CH347F.\n\nChange-Id: I16d66b2562d9d2ec1540949d63752e939540db5d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/197\nReviewed-by: Nicholas Chin \u003cnic.c3.14@gmail.com\u003e\n"
    },
    {
      "commit": "dfd064759b416463244aafea80a5b7120ef8e4e1",
      "tree": "b1b636199d652391f66e7af12b306877d77b1aee",
      "parents": [
        "b2ad9fd9186a0f6fea3e5b64415c1e5d1a19baa4"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 23:45:05 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ich_descriptors: Refactor component density handling\n\nIntroduce a new marker CHIPSET_HAS_NEW_COMPONENT_DENSITY and order\nthe actual chipset values around it. This move Bay Trail up before\nall 8-series PCHs.\n\nChange-Id: I1f4d724e2e2ef038aa6a56feb1578208afbbcd99\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/181\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "b2ad9fd9186a0f6fea3e5b64415c1e5d1a19baa4",
      "tree": "c1c6ea1be6e93dbc787ba023f391c8e140d3112d",
      "parents": [
        "140e22f260f7d96054207839bedf73aaae670d65"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 23:18:53 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ich_descriptors: Make use of SPI_ENGINE_PCH100 marker\n\nTested reading on ADL-P, log output stays consistent. Also compared\noutput of `ich_descriptors_tool\u0027 for various descriptors.\n\nChange-Id: I9f47ac571afd481998f56da0bd9481931353324a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/180\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "140e22f260f7d96054207839bedf73aaae670d65",
      "tree": "5ebc8fb6d9d7f8c5eb5d175833ab434dce0bc88a",
      "parents": [
        "869f0e77ad1203ae078163ddfd32b0b08bf3f135"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 23:18:53 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "chipset_enable: Make use of SPI_ENGINE_PCH100 marker\n\nTested with 7 series PCH and ADL-P, log output stays consistent.\n\nChange-Id: I5b0b4d4e5f5a383c5a54342472b29eb73e78754b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/179\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "869f0e77ad1203ae078163ddfd32b0b08bf3f135",
      "tree": "e453d6939c74035f6f1d7ea3cce79713efebf58d",
      "parents": [
        "eeee91bd73ffac9c225a1b86a6cd0c96997f589b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 22:58:39 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ichspi: Use `swseq_data\u0027 on ICH7 paths too\n\nTested read/erase/write on ThinkPad T60 (ICH7), reading on ADL-P.\n\nChange-Id: I0682e8fe811b6cc54102035cb3f1f834b8792b0a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/178\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "eeee91bd73ffac9c225a1b86a6cd0c96997f589b",
      "tree": "6fe1ea8ca8844390e1a2b30bb9670f06b1a7d56c",
      "parents": [
        "ecba1d87f1054a286796489a570a6b4614ec1fda"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 21:12:21 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ichspi: Replace all switch/case on `ich_generation\u0027\n\nTested read/erase/write on ThinkPad T60 (ICH7), reading on ADL-P.\n\nChange-Id: Idcddc19cb18abc418eb2aecbeb75b9926971cc4c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/177\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "ecba1d87f1054a286796489a570a6b4614ec1fda",
      "tree": "dd424b4568d7ed3d72f713ceae6f5dcb87756ce4",
      "parents": [
        "e8babf4ab03842fc1ed59f8c3b72459ca9775e2b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 21:03:27 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ichspi: Drop redundant bail-out cases in ich_set_bbar()\n\nich_set_bbar() is never called for ICH8 nor Bay Trail.\n\nChecked verbose output stays the same on ThinkPad T60 (ICH7).\n\nChange-Id: Ia4af7b4543081f2dfa850c4343989a2f158b43c5\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/176\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "e8babf4ab03842fc1ed59f8c3b72459ca9775e2b",
      "tree": "3103eb005c1de66e2501dc969c67ca690d0c436f",
      "parents": [
        "fda324bfc3c09cce47fe1947f6a2883b357d7f1d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 20:40:56 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ichspi: Use a single check to enable hwseq for PCH100+\n\nThe only difference between these blocks was the debug message printed.\nLet\u0027s not be that picky and unify the code.  It does not only simplify\nthe condition but also helps to avoid mistakes:  C620 series Lewisburg\nwas most likely missed here earlier.\n\nChange-Id: Ic802c6327afdea86a0f50ced53deabe8c2f36175\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/175\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "fda324bfc3c09cce47fe1947f6a2883b357d7f1d",
      "tree": "f2411a115e7d4a7d8222aa9c90aba3243c80921e",
      "parents": [
        "a1f6476a65bda5262d46430724a3af4b49bcd9e7"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 20:36:21 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ichspi: Introduce SPI_ENGINE_PCH100 marker\n\nUse a new SPI_ENGINE_PCH100 marker in ich9_spi_init(). Suddenly this\nfunctions becomes more readable again.\n\nTested read/erase/write in `swseq\u0027 and `hwseq\u0027 modes with 7 series \u0026\nreading with ADL-P. Log output stays consistent.\n\nChange-Id: Iff03354ee886eb1ea80e37e50914b8afff08a29e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/174\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "a1f6476a65bda5262d46430724a3af4b49bcd9e7",
      "tree": "4c03ecc180e60864fcbf59952c01c58390921eed",
      "parents": [
        "3f75d4476da015ae1ee033c1de1ad4dc08f66b0d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 20:23:28 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ichspi: Split ICH7 init out\n\nThe original, ICH7 init only shared about three lines with the newer,\never growing ICH9+ init. That\u0027s not worth an indentation level in an\nendlessly long function, so split it out.\n\nWe introduce a kind of \"breakpoint\" into the `ich_chipset\u0027 enum:\n\n  SPI_ENGINE_ICH9\n\nThis marks all chipset entries below it as supporting this code path\nand should help to avoid long `case\u0027 lists.\n\nTested read/erase/write on ThinkPad T60 (ICH7).\n\nChange-Id: I41e46d12e02c1343e636b47b2378db86e76af95e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/173\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "3f75d4476da015ae1ee033c1de1ad4dc08f66b0d",
      "tree": "f4c241b0df2bc758fc91c999f1326a06d0edec34",
      "parents": [
        "2862011212da1745e4238381bfe16f0dab3fd7c1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 14 19:17:56 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 28 15:02:49 2024 +0000"
      },
      "message": "ich_descriptors: Remove `Dual Output Fast Read\u0027 for newer gens\n\nThis is queried via SFDP since the Cannon Point PCH / Gemini Lake.\n\nAvoid using a relational comparison so we don\u0027t have to worry when\nchanging the enum order.\n\nTested `flashprog\u0027 on ADL-P and `ich_descriptors_tool\u0027 with various\ndescriptors.\n\nChange-Id: I4c60e8c01a019303a830d46561c80e6ad462bb7c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/172\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "2862011212da1745e4238381bfe16f0dab3fd7c1",
      "tree": "c650132ba159d9fa5693afd667768f86956645e4",
      "parents": [
        "4ac536bde43a1d64e11034cab34aabd7a6efd5dc"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 21 15:43:59 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "spi25: Try to set volatile quad-enable (QE) automatically\n\nSome chips have a volatile QE bit. Setting this won\u0027t wear the status/\nconfiguration register, so we\u0027ll try to do so automatically.\n\nChange-Id: I6a4b864d7af1f3ecedd95524f127b5486f999933\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/191\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "4ac536bde43a1d64e11034cab34aabd7a6efd5dc",
      "tree": "ceb3d304075fadbe31ed8d0d25dc8d4b8b8e60fb",
      "parents": [
        "b1d2baea270c1177a78d1672b4f8dd42ed246eb4"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jul 21 00:22:29 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "spi25_statusreg: Allow to write (non-)volatile bits specifically\n\nThere\u0027s a subtle difference between prepending a write-status-register\ncommand with a write enable (WREN)  or an enable write status register\n(EWSR): The former targets non-volatile bits, while the latter targets\nvolatile bits, i.e. register bits that do not survive a reset.\n\nSometimes bits are implemented as both volatile and non-volatile. Then,\nthe non-volatile state is loaded into the volatile registers after chip\nreset, and writes with a WREN target both.  So far, we simply used WREN\nwhen possible.  This can, however, lead to unnecessary wear of the non-\nvolatile bits. Flash datasheets do not mention any maximum write cycles\nfor them. However, it is unclear if this is an academic issue, i.e. the\nmanufacturers account for the wear and implement redundancy, or if they\nsimply don\u0027t expect that many configuration changes.\n\nFor a start, allow to specify explicitly which kind of register bits we\nwant to write. We keep the current behavior. However, the logic to dis-\nable block protections automatically should be revised  to prefer vola-\ntile writes.\n\nChange-Id: I807a2c48f4eaa85d5a10b37362e71818359a4c93\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/190\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "b1d2baea270c1177a78d1672b4f8dd42ed246eb4",
      "tree": "26b280f6c8ffbb9f5c73483491df5ffe0abf4f66",
      "parents": [
        "d0afeef1980da55e602955b1ebc8b5eca27fd9b1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 12 16:10:15 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "dediprog: Fix and enable 4BA modes for SF600Plus-G2\n\nThis was already enabled for the SF600 with protocol v3, however\nnever implemented.  The read path is now covered by the configu-\nrable read command discovered during multi-i/o development.  For\nwrites we have to override the command if no native 4BA write is\navailable and we are in 4BA mode.\n\nTested with \"SF600PG2. V:01.01.012 HW:01.00\" and a W25Q256JV..Q\ntreated as a W25Q256FV (i.e. no native-4BA erase/write opcodes).\n\nChange-Id: I7cc537a96d470461ce35e4c4e97435c4ecb0c4ca\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/169\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "d0afeef1980da55e602955b1ebc8b5eca27fd9b1",
      "tree": "a03ebaf41621251945d7e387b45ed5b6dd85938d",
      "parents": [
        "1b1deda80bbd7f56b8047fad32badb749eeefffb"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 12 16:08:29 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "dediprog: Disable 4BA modes for SF100 w/ protocol v2\n\nIt was enabled in commit a32d47f14886 (dediprog: Disable\nSPI_MASTER_NO_4BA_MODES for additional devices), because\nthe hardware can handle it in theory. However,  it never\nwas implemented on our side.\n\nChange-Id: If4082d4c0ab56f544b48bc827ecee2c23bd976f2\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/168\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "1b1deda80bbd7f56b8047fad32badb749eeefffb",
      "tree": "e7058d9d175d08ed2542f6e34be0842a7ade8f57",
      "parents": [
        "a1b7f3521f66a19a2d4c9a6a373c5a7ab36e1473"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Apr 18 00:35:48 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "Implement QPI support\n\nWith the quad-i/o support in place, this is actually straight-\nforward:\n* we check for compatibility of the flash chip and programmer,\n* select an appropriate fast-read function, and\n* always set the respective io-mode when passing a SPI command\n  to the programmer.\n\nTested with FT4222H + W25Q128FV and linux_gpio_spi + MX25L25645G.\n\nChange-Id: I2287034f6818f24f892d66d1a505cb719838f75d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/165\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "a1b7f3521f66a19a2d4c9a6a373c5a7ab36e1473",
      "tree": "fd996296810ab45fe99d29d8dc254f6d496f3091",
      "parents": [
        "008a44fa1c33b8a77c90b4e9dba267ae23c01056"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 25 18:32:11 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "dediprog: Implement multi-i/o reads\n\nThis implements i/o-mode switches and opcode handling for multi-i/o\nreads with protocol versions 2 and 3. The mode switching is done by\na simple command  that takes an enum just as our internal `io_mode`\nas argument.\n\nThe opcode handling differs between protocol versions. For protocol\nv2, we keep the current behavior for single-i/o operations and only\nset the matching opcode. Tests with an SF600Plus-G2 have shown that\nthe programmer automatically chooses the address length  and number\nof dummy cycles. It is unknown, however,  if it chooses these para-\nmeters based on the opcode or the configured i/o mode. For dual-out\nreads,  it seems to choose the wrong number of dummy cycles. Hence,\nwe mask the respective support bit for the v2 case.\n\nFor protocol v3,  a new `read mode\u0027 was discovered in traces of the\nDediprog Windows application.  It allows to explicitly specify  the\nopcode, the address length, and the number of dummy cycles. We call\nthis READ_MODE_CONFIGURABLE. As this is the only way to make use of\nthe additional command bytes of the v3 protocol, we can assume that\nthis mode always works with v3.\n\nFor partial reads, i.e. not multiples of 512B blocks,  that have to\ngo through dediprog_spi_send_command(),  we temporarily disable the\nchosen `.spi_fast_read` function. This is necessary, because multi-\nio is not supported on this path.\n\nWe enable dual i/o by default for protocol v3 devices. This should\nwork out of the box with many compatible flash chips. The command-\nline logic is a little convoluted this way,  but can be refactored\nonce protocol v2 devices are tested.\n\nChange-Id: Ib07b1b61eccc19c7ead9f64c980b37feabfa70a8\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/114\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "008a44fa1c33b8a77c90b4e9dba267ae23c01056",
      "tree": "896b993627c146b89838742c26a9c12cefd27c69",
      "parents": [
        "4760b6ec1f7fbcee1bf238a25e3df56a86327a5a"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Apr 14 23:39:47 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "dediprog: Split read/write command preparation by protocol\n\nThere has been a forest of `if`s growing inside prepare_rw_cmd(). And\nthe V3 protocol allows for more flexibility that would result in even\nmore branches if we\u0027d continue adding to this function.\n\nInstead, split it into one function per protocol version  and provide\na pointer to it in our context structure. This will allow us to adapt\nthe V3 function more easily and only sacrifices a little code sharing\nbetween V2 and V3.  We also let it return the number of bytes for the\ncommand packet and define a maximum size, to simplify the API.\n\nChange-Id: Ibe9da3d3f1aac74309b89f840d9ce9e6e7978405\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/126\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "4760b6ec1f7fbcee1bf238a25e3df56a86327a5a",
      "tree": "a4c3762b1228f901f62d40b53ed1a953b25926b4",
      "parents": [
        "0c9af0a639bf9180839d548f91547b58de921ca9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jan 06 23:45:28 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "spi25: Implement multi-i/o reads\n\nWe describe a read operation in a new  `struct spi_read_op`. It\u0027s\ncomprised of the i/o mode, its opcode, an optional mode byte, and\nthe number of dummy bytes.\n\nBased on this information  about the various read operations, and\nthe flash and master feature flags,  we select the read operation\nwith the highest throughput.\n\nThe following assumption is made about 4BA chips: When it supports\nnative-4BA fast reads  and a multi-i/o version of the regular fast\nread, then it should also support the respective native-4BA, multi-\ni/o version (yes, JEDEC, there are too many read commands!). So far\nthis seems to hold for the chips in our database.\n\nChange-Id: I3c93e71d85f769831d637c14d3571f7ddb54d8b2\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/49\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "0c9af0a639bf9180839d548f91547b58de921ca9",
      "tree": "a0656e015b5a647cb81d8a85d427687b03a2f246",
      "parents": [
        "930d421385aae5ca93d5963fba7926970d7702e8"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun May 05 12:20:22 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "spi25: Check quad-enable (QE) bit\n\nWhen a chip has a quad-enable bit, check its status and disable\nquad i/o if the bit isn\u0027t set. Note, some chips have a volatile\nQE bit that we could set/reset automatically without wear. This\nwould require more work on the register infrastructure and chip\ndatabase, though.\n\nChange-Id: I8a0b9b3dee14f344d4794c91d7d6fb962a8bea87\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/164\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "930d421385aae5ca93d5963fba7926970d7702e8",
      "tree": "199e15c17260fabb8e422075230621a21e064531",
      "parents": [
        "8d0f4650c73eb7bcda0b71e514c0effdf37d90b5"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat May 04 18:59:15 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "spi25: Introduce generic spi_prepare_io()/spi_finish_io()\n\nIntroduce two new functions to be hooked up in the chip database:\n* spi_prepare_io(), and\n* spi_finish_io().\n\nThese will be used to prepare multi-i/o and QPI operations. Hence,\nhook them up to all the chips that support those. spi_prepare_4ba()\nis wrapped to account for overlaps with 4BA support.\n\nChange-Id: I444f6322b6d6a26a040cb0ca972b2c411838d702\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/163\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "8d0f4650c73eb7bcda0b71e514c0effdf37d90b5",
      "tree": "f27db276221972c6451278fa41806260ebfa7046",
      "parents": [
        "044c9dc9290565ab7b9866bb26a8d077d9c3a5d7"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat May 04 18:52:51 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "spi25: Extract 4BA preparations into new `spi25_prepare.c`\n\nWe will have more preparation steps for fast-read operations and\nQPI in the future. Better start a new file, as `spi25.c` already\nis rather long.\n\nChange-Id: I253b270ce6796fb09e6d74903bd65a6fbc06c7d6\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/162\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "044c9dc9290565ab7b9866bb26a8d077d9c3a5d7",
      "tree": "b0d6ab8fc2df6d8ff7a91a3d197e213a7ca2a320",
      "parents": [
        "fc7c13c882067b3ad7f2f5d3846d64164b8c8c87"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Dec 29 23:26:57 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "Add FT4222H support\n\nThe FT4222H features a very different engine compared to what we are\nused to from other FTDI USB/serial chips. It doesn\u0027t do UART (at least\nnot officially), doesn\u0027t have the MPSSE engine, but has a quad-SPI\nmaster, and SPI/I2C slave support.\n\nA few similarities exist, though, so this could probably make use of\nlibftdi in the future.\n\nThere are two config-mode straps that select one of four modes:\n0. 1 data interface + 1 GPIO interface\n1. 3 data interfaces + 1 GPIO interface\n2. 4 data interfaces\n3. 1 data interface\n\nWith multiple data interfaces, GPIO pins are muxed as additional CS\nlines. The advantage of mode 0 and 3 is that apparently a bigger buffer\nis available for the data interface. Only in these modes, it gets to\nits full speed (52.8MBps according to the datasheet[1]). The CS line is\nautomatically selected based on the USB interface used. No test using\nmultiple interfaces at once were performed, though.\n\nAll the USB commands and transfer protocols were derived from traces\ngathered with the proprietary LibFT4222. The results are summarized\nin the flashprog wiki[2].\n\n[1] https://www.ftdichip.com/old2020/Support/Documents/DataSheets/ICs/DS_FT4222H.pdf\n[2] https://flashprog.org/wiki/FT4222H\n\nChange-Id: I9ee1287e13113ccf8b5ea2be4a25866413a94844\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/50\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "fc7c13c882067b3ad7f2f5d3846d64164b8c8c87",
      "tree": "d63f45915cf6dba885442cf381128bd72a781af3",
      "parents": [
        "5fc31545c979bc345c2016852bc1597b9272daec"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 14 23:39:40 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "linux_gpio2_spi: Implement multi i/o\n\nImplement the optional bitbang_spi calls for multi-i/o. With the new\nlibgpiod API, this is straight forward.\n\nBy default, we enable dual-i/o mode. We add the optional `io2\u0027 and `io3\u0027\nparameters, which can be used to specify additional GPIO numbers for\nquad-i/o.\n\nChange-Id: I6113a8327c08a3d55fbc0c8ffba2d1a47925de34\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/84\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "5fc31545c979bc345c2016852bc1597b9272daec",
      "tree": "4fba6e4c333706ab11ed4c02f7922e3ace55cd43",
      "parents": [
        "d16a911a77220d7cd600c749675070d204543b5d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 07 15:58:34 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "bitbang_spi: Implement multi-i/o\n\nAdd some optional functions to the bitbang_spi API that will allow\nus to transfer multiple bits at once. With these, implement the\nspi_send_multicommand() API, completely with all known transfer\nmodes.\n\nChange-Id: I38346de37809118e13a059e90b9f3fff6456db15\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/82\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "d16a911a77220d7cd600c749675070d204543b5d",
      "tree": "4fd0c463d1f352b79bac82d2bb84ab99e887532b",
      "parents": [
        "226bb87b96c21fbd54061d043aca67e9a02f0aca"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 07 00:11:44 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "bitbang_spi: Move API into its own header file\n\nWe\u0027re going to extent it for multi-i/o.\n\nChange-Id: Ifead97d7a8f848b82a4d21c557f5d364066d5d6a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/81\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "226bb87b96c21fbd54061d043aca67e9a02f0aca",
      "tree": "69907cf91ed509fd4dbd23a888e25605faf4475d",
      "parents": [
        "4fa39c5e016698a5241269dac13d3ad3edb8d7ed"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Tue Apr 09 23:30:34 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "flashchips: Add missing QE-bit definitions\n\nFor all remaining chips that are already tagged as supporting quad-i/o,\nadd missing QE-bit definitions.\n\nChange-Id: I24fa7187c528882b78ac4ba376c410e06bf44f2b\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/124\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "4fa39c5e016698a5241269dac13d3ad3edb8d7ed",
      "tree": "8a8023031d7bc085f2bc9496bd438e1258bf1d28",
      "parents": [
        "5f50999184634a2d197495596dee9cbe3284be34"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Mar 27 01:18:12 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "flashchips: Fill multi-i/o gaps in MX25U family\n\nChange-Id: I488ad3c2d2d2336cd8309514f699db797873963d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/123\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "5f50999184634a2d197495596dee9cbe3284be34",
      "tree": "437c97035908922d7b63b1c4e6ec7d4d10088caf",
      "parents": [
        "46552c810b7501c3bbab940162fea891b42d9d14"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Mar 27 01:18:12 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "flashchips: Fill multi-i/o gaps in MX25R family\n\nChange-Id: I358a0b3eb6ebad67c1e37cd61fcfee4087ede0e8\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/122\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "46552c810b7501c3bbab940162fea891b42d9d14",
      "tree": "9b703c38e183e54ac3390f1be62ff24de5b88b05",
      "parents": [
        "96786d04a9675c786c8e5ca218f58276fdaefd28"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Mar 27 01:18:12 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "flashchips: Fill multi-i/o gaps in MX25L family\n\nChange-Id: I8f1f7add3847f65b058e1a6e721a356bb728cb53\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/117\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "96786d04a9675c786c8e5ca218f58276fdaefd28",
      "tree": "86b9a5e061a4eb43a4eb0798679d3ef66b2ae1a5",
      "parents": [
        "a26a3c6b6877e416681fe103478aa81121ef5f88"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jan 06 18:30:15 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "flashchips: Fill quad-i/o gaps in XM25Q family\n\nChange-Id: Icbbc6732651696c52e236e3828820db286f5ff81\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/48\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "a26a3c6b6877e416681fe103478aa81121ef5f88",
      "tree": "f4934754df61060441e7380ce77a6142b9e95639",
      "parents": [
        "2133f596b1eb9597359b27c4dc996501dca910e1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Fri Apr 12 19:28:28 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "flashchips: Fill dual-i/o gaps in W25X family\n\nChange-Id: I4536df38684258c780c74fc2b12830a4178f955d\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/121\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "2133f596b1eb9597359b27c4dc996501dca910e1",
      "tree": "ed16523bfd6f8730c31f9687e708b96e22e08b9c",
      "parents": [
        "68573afd26ab16e02b7678663ee562384e552bc9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jan 06 18:30:01 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "flashchips: Fill quad-i/o gaps in W25Q family\n\nChange-Id: I8c53e9976b769327893838701eb0be9cff1443d7\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/47\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "68573afd26ab16e02b7678663ee562384e552bc9",
      "tree": "0a3200774a473adfe45d03cb772fba85ac8925bd",
      "parents": [
        "4da971fa6985ae7e2b0ca8031b156918c73293f8"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jan 06 18:28:22 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 22 10:08:47 2024 +0000"
      },
      "message": "flashchips: Split GD25Q127C and GD25Q128C\n\nOnly GD25Q128C supports QPI.\n\nChange-Id: Iecaa15881a574426eb6889335ef6fbdfe017c617\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/46\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    }
  ],
  "next": "4da971fa6985ae7e2b0ca8031b156918c73293f8"
}
