)]}'
{
  "log": [
    {
      "commit": "a03055d242d4d5681b65b3bf012146e610cea998",
      "tree": "dcceaf4f0bd676dd3283b48626f8b08a1fb46c5f",
      "parents": [
        "f3113acc7b51a1707764f90c0d423e79b59b7543"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 08 15:40:46 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "Allow probing all SPI command sets\n\nThe old guard is not necessary anymore as we handle probing\nprocedures by priority now.\n\nChange-Id: I96707949934875ca23af9ff8a9c349b699a2d868\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/428\n"
    },
    {
      "commit": "f3113acc7b51a1707764f90c0d423e79b59b7543",
      "tree": "4905c73004745c1c76d31f1b68db49b53b5d4ef0",
      "parents": [
        "4af02fe6355beb2ca7eac59a5c35856e1b4084d5"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 21 12:50:19 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "edi: Turn edi_chip_probe() into a bus probing function\n\nLet our common bus-probing infrastructure handle the ID comparison.\nThis also makes the `flashchips\u0027 entry (KB9012) an actual chip entry\nthat carries its identification.\n\nChange-Id: I9533ece2b1337281ea70cb2e3be7a74353a4a758\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/424\n"
    },
    {
      "commit": "4af02fe6355beb2ca7eac59a5c35856e1b4084d5",
      "tree": "74632469db4c140b3a60a8b87a487a15607d5b19",
      "parents": [
        "a94ce1cf4713266d4d6f9e21c5048d70c3c21d51"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 21 12:29:26 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "edi: Split preparation/finalization out of edi_probe_kb9012()\n\nThis turns edi_probe_kb9012() into a pure probing function. To avoid\nturning EDI off after probing, register edi_finish() only after full\npreparation.\n\nChange-Id: Icc342b8ab109d5621d8b65c79cecf71a44bea4bd\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/423\n"
    },
    {
      "commit": "a94ce1cf4713266d4d6f9e21c5048d70c3c21d51",
      "tree": "10568e8fabe989966b2ba379245c1f820161bb96",
      "parents": [
        "6bd4f10ed9f24c1ac60f18598edef0b45b4885c3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 19 19:24:44 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "edi: Pass spi_master instead of flashctx where possible\n\nThis will allow a probing function that doesn\u0027t need a `flashctx\u0027.\n\nChange-Id: I45dbc0aee25227c1f719819c4f6b4108604a4600\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/422\n"
    },
    {
      "commit": "6bd4f10ed9f24c1ac60f18598edef0b45b4885c3",
      "tree": "4e97539643c3599f8ff5577a462387f406dd9d99",
      "parents": [
        "2e0a0031139fe9aa4e7ad3259c6a864112b06f11"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 22 23:28:13 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "edi: Move EDI related things into new chipdrivers/edi.h\n\nChange-Id: I592449693647587b5817614b6c6cac07e8009a89\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/421\n"
    },
    {
      "commit": "2e0a0031139fe9aa4e7ad3259c6a864112b06f11",
      "tree": "453b9a47b06c404e7572945e6c23dc0aaa6c1c1c",
      "parents": [
        "b9e47cc321b4924e19d1a556462a8cd94361d1ea"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 07 22:32:27 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "spi: Use bus probing for SFDP\n\nOnly probe for the SFDP signature and split the actual SFDP parsing\ninto a chip preparation function.\n\nChange-Id: I182d0a386bb2fd11951a1c9f2f965ce68ff57cf0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/427\n"
    },
    {
      "commit": "b9e47cc321b4924e19d1a556462a8cd94361d1ea",
      "tree": "22676291abc0c0530863684f4f002f04038b4522",
      "parents": [
        "ac13873e102208d4a78d9c9e541a3eab29fbb1c6"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 21 13:25:17 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "spi: Use bus probing for ST95 RDID\n\nAs the SPI instruction used for probing conflicts with AT45DB chips,\nlet it only run at priority `1\u0027, when no flash chip was detected.\n\nChange-Id: I61db0d6fa7be81d120bc84213c358498019dc52d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/420\n"
    },
    {
      "commit": "ac13873e102208d4a78d9c9e541a3eab29fbb1c6",
      "tree": "2e55b347493cfd79f2c648726e1cefd57cf62fd9",
      "parents": [
        "64f53a1c9f5bd11b8b35cff757ac6d4aa37b0c59"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 28 17:42:27 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "Introduce a priority for bus-probing functions\n\nWe want to stop probing once anything was detected by specific,\nhigh-priority probing functions. This can benefit, for example,\nthe probing of non-flash chips on the SPI bus. So far we didn\u0027t\nprobe for these automatically, because the probing commands can\nbe misunderstood by SPI flashes.\n\nWe\u0027ll invoke the probing functions in order of their priority,\nstarting with priority `0\u0027. Once any of them returns something\nthat doesn\u0027t look like continuous 0 or 1 bits,  we\u0027ll skip all\nprobing functions with less priority.\n\nChange-Id: Ibde3c348a2fb84b71c325a6c2719e9f2c8b5e784\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/418\n"
    },
    {
      "commit": "64f53a1c9f5bd11b8b35cff757ac6d4aa37b0c59",
      "tree": "d64e96af9998a13ba3e22eb1cce5a65d434b7be2",
      "parents": [
        "4312576b49dc77b53d5ebfa6686e3072c9368ea0"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 15 16:04:29 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "spi: Use bus probing for REMS, RES and AT25F\n\nChange-Id: Ic5d2a5283c5fb5e52c58c0b5937922371f56249f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/417\n"
    },
    {
      "commit": "4312576b49dc77b53d5ebfa6686e3072c9368ea0",
      "tree": "5802bfef2623095f5fdccd98df15bdabac35f785",
      "parents": [
        "fbc41d2a932ede9c02aa7803472c31f39ec200f2"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon May 01 15:56:16 2023 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "spi: Use bus probing for RDID\n\nWe put 3 and 4 byte RDID into a single function. Only if we can\u0027t\nread 4 bytes, we try again with 3. There are no conflicts because\nthe only RDID4 manufacturer ID contains the 0x7f prefix, hence it\ncan\u0027t match any 3-byte ID.\n\nChange-Id: I5d35bc30255aae66da35d58431628512e50b39f0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/74900\n"
    },
    {
      "commit": "fbc41d2a932ede9c02aa7803472c31f39ec200f2",
      "tree": "8b72b78abfd99bf8737b90cc2fece11f2dbe93d3",
      "parents": [
        "966dc9b776c2897d1245937639ab41fc834d7cb9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 22 23:04:01 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "spi: Move SPI related things into new chipdrivers/spi.h\n\nA few things that rely heavily on `flash.h` are moved there instead:\n* function signatures containing `erasefunc_t`,\n* the inline default_wrsr_target() that needs to know struct flashctx.\n\nThis allows to keep the new header file free of a transitive `flash.h`\ninclude.\n\nChange-Id: Ib215821feeb822ea3fc11bf9f48c0328f9a394d4\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/416\n"
    },
    {
      "commit": "966dc9b776c2897d1245937639ab41fc834d7cb9",
      "tree": "517dabeaf5bf7e79fbbdbf988cd2ef7734b7b0d9",
      "parents": [
        "af9d738a66a885f19fdb0659455834f114d9d1e0"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 07 21:59:15 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "Use new probing path for chips w/o IDs\n\nWe used to have a probe_noop() that simply assumed a chip is there\nbut wasn\u0027t called by default. Instead we can handle this case spe-\ncifically in the new probing path.\n\nChange-Id: I633c55f8de3a36c4de96f79fd938f58aa39b5bf9\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/426\n"
    },
    {
      "commit": "af9d738a66a885f19fdb0659455834f114d9d1e0",
      "tree": "e3596a537af16f3d9a0aee3dbe7bfc668fc5ce34",
      "parents": [
        "0069440fb0905b7ff3bf5184ffae34673be2e35d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon May 01 13:33:26 2023 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 09:47:02 2026 +0000"
      },
      "message": "Add infrastructure to probe per bus\n\nAdd some infrastructure around per-bus probing functions.  Each function\nis provided a private parameter, e.g. the expected length of an ID. This\nwill allow us to implement probing functions that are only called as of-\nten as necessary. The results will be stored in the `registered_master`\nstructure, to be compared to database entries later.\n\nThe probe_buses() wrapper can be used for chip entries, and allows us to\ntransition the existing probing functions one by one. Once all functions\nhave been ported, probe_flash() can be adapted as well and the wrapper\nwill become obsolete.\n\nChange-Id: I6e82b6d61df50234096ac39acab58a4014203933\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/74899\n"
    },
    {
      "commit": "0069440fb0905b7ff3bf5184ffae34673be2e35d",
      "tree": "84a5867556f54e1dcb550ee3ce505fe143a028f0",
      "parents": [
        "cb35a8da1a73b85978a1bab860131bb5e9840484"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 21:26:49 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 18:02:27 2026 +0000"
      },
      "message": "ni845x_spi: Add a `ni845x.h` header stub for build tests\n\nThe `ni845x_spi\u0027 programmer driver depends on a proprietary library,\nonly available for Windows. As that\u0027s not the best circumstances for\nbuild tests, add a header file that provides exactly the definitions\nneeded to compile the driver.\n\nThe compilation result can never be linked. Hence, add another build\ntarget to test compilation of this file only.\n\nChange-Id: I3d291bc16eecb1777062a61362a8eb1548afb7a3\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/411\n"
    },
    {
      "commit": "cb35a8da1a73b85978a1bab860131bb5e9840484",
      "tree": "5edf4f9af9d2da42a70a1cbbb80e72f9663ab6e3",
      "parents": [
        "309ca42d11c7c4e559d17acaf67f9de8fe17805f"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 22:17:55 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 18:02:27 2026 +0000"
      },
      "message": "ni845x_spi: Add cast to `unsigned long\u0027 to meet format string\n\nWe don\u0027t know the actual definition of `uInt32` used for `read_size`\nhere. Assuming it\u0027s unsigned and fits into 32 bits, an unsigned long\nshould serve us well  and ensure that we can always match the format\nstring. Fixes the last GCC and Clang warning.\n\nChange-Id: Ice3eb81c79915d60abb0a3bef00ad58397f2706e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/410\n"
    },
    {
      "commit": "309ca42d11c7c4e559d17acaf67f9de8fe17805f",
      "tree": "f26e26b55a859baf6919e5aaddf6536a87ed05c9",
      "parents": [
        "fbe27669b97d1dc5a5c7a69687b2a24c70a35ff5"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 22:08:04 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 18:02:27 2026 +0000"
      },
      "message": "ni845x_spi: Remove ineffective `csnumber\u0027 parameter parsing\n\nRather odd, but this code was apparently never used.  The only side\neffects are in altering the `CS_str` and `CS_number` variables, but\nthey are never read.\n\nThere were also two issues with this code stub that GCC complained\nabout:  checking `CS_number \u003c 0` is ineffective, as it is declared\nunsigned, and strlen() of `CS_str` was taken after it was freed.\n\nIf we can figure out how to actually set the CS pin used, the fea-\nture should be fixed and return, of course.\n\nChange-Id: I076564e0efb07c6120f0a84e6c8de766624c420c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/409\n"
    },
    {
      "commit": "fbe27669b97d1dc5a5c7a69687b2a24c70a35ff5",
      "tree": "5ef5849a3250f067b38c5f5fdccb4247e9fa8d30",
      "parents": [
        "1e610f219d7774550443403acde66f2d2195241b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 22:00:16 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 18:02:27 2026 +0000"
      },
      "message": "ni845x_spi: Make ni845x_spi_init() static\n\nWe have moved the programmer definitions into the respective source\nfiles long ago. We missed to make this init function static, so GCC\nand Clang warn about it now.\n\nChange-Id: I9a99926e63eacbcccd938c8c3d828aa9a18acc32\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/408\n"
    },
    {
      "commit": "1e610f219d7774550443403acde66f2d2195241b",
      "tree": "c014eb784f7936a5fe454d08236d7118a9c48907",
      "parents": [
        "70fe55f50b730629e2a144363590cac090ec6882"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 21:56:44 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 18:02:27 2026 +0000"
      },
      "message": "ni845x_spi: Use unsigned for array indices\n\nCurrent GCC and Clang warn about another signed/unsigned comparison,\nbecause the result of ARRAY_SIZE() is unsigned by definition. Hence,\nmake the array index `i` unsigned  and use a separate `ret` variable\nto check return values.\n\nChange-Id: I479a28ec6778fa1795aa4a538e4ab753c31543a2\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/407\n"
    },
    {
      "commit": "70fe55f50b730629e2a144363590cac090ec6882",
      "tree": "444a1bc548d1fa274c376c56f469304376535f6a",
      "parents": [
        "717b3e5003d0dc73906a9487f16aab73e1210677"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 21:43:19 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 18:02:27 2026 +0000"
      },
      "message": "ni845x_spi: Use strtoul() to convert serial\n\nThe converted serial number is compared to an unsigned long. In theory,\na negative number could match,  as it would be implicitly treated as an\nunsigned integer. However, this doesn\u0027t seem intentional, the number is\nexpected in hex and why would it be negative.  Hence, use strtoul() and\navoid the signed/unsigned comparison. This gets rid of related warnings\nby current GCC and Clang.\n\nChange-Id: I70b847d658d52a53afa253a89c87eecca22177fa\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/406\n"
    },
    {
      "commit": "717b3e5003d0dc73906a9487f16aab73e1210677",
      "tree": "a5d96342d52c861b5042ae5237ee08bb7ae633c7",
      "parents": [
        "afb5dd03a3ce88e642a3c8d518590623bae62ec7"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 15 13:26:14 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 14:43:03 2026 +0000"
      },
      "message": "test_build.sh: Use M25P10-A for emulation during tests\n\nThe M25P10 used for emulation before had a downside:  Because our\ndatabase entry was never tested, the tests spewed the log. All my\nattempts to get hands on an actual M25P10 have failed.  The entry\nfor the M25P10-A, OTOH, is tested.  So use this new emulation for\nthe tests.\n\nChange-Id: I1c9d0a990c6222e997390686174c44303784dacf\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/413\n"
    },
    {
      "commit": "afb5dd03a3ce88e642a3c8d518590623bae62ec7",
      "tree": "d1baa207d970826557f389fdf56ee2ea0a7662ef",
      "parents": [
        "dfea68c563c4f23318e26897846fd2d79e27eefd"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 15 13:26:10 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 14:43:03 2026 +0000"
      },
      "message": "dummyflasher: Add emulation for M25P10-A\n\nThis one has a database entry that is actually tested.\n\nChange-Id: I1d6f7fe4f9ae1eb9680544eea82db631b224a330\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/412\n"
    },
    {
      "commit": "dfea68c563c4f23318e26897846fd2d79e27eefd",
      "tree": "e65d58355fbade12bc53832ed6893bc545256c76",
      "parents": [
        "11136c210e382258a72df44ffe625260a6394a45"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 16:39:31 2026 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 14:28:06 2026 +0000"
      },
      "message": "ichspi: Add Intel Wildcat Lake support\n\nLooks the same as Panther Lake except no 80 MHz options in the\nSPI guide nor the MFIT tool.\n\nChange-Id: I9d922687e5995ed34c9e8aee298554e976adfe0a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/403\n"
    },
    {
      "commit": "11136c210e382258a72df44ffe625260a6394a45",
      "tree": "376f66e9e7a826dcf13f833e90291db7663205a4",
      "parents": [
        "610c1aad71bfa118c4f49ac01761f586b8dede69"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon May 01 12:00:09 2023 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 14:27:20 2026 +0000"
      },
      "message": "flashchips: Add a type enum to the chip identification\n\nWe used to imply what kind of ID (e.g. RES, REMS, RDID) a chip entry\nprovides, based on the given probing function. This works well as long\nas we call the respective probing function for every single chip entry.\nWith our ever growing chip database, however, this slows probing signi-\nficantly down. Especially with external programmers with a long command\nround-trip.\n\nWith the type of identification information stored in the chip entries\nexplicitly, we\u0027ll be able to implement bus-specific probing functions.\nThese would be called only once and their results would be used to look\na matching chip up in the chip database. Instead of looking for every\npossible chip on the buses, we can turn it around and search for the\nactually present chips in the database.\n\nChange-Id: Ie658ebf58f21c8994b9b66f7683f9490e8d12267\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/74898\n"
    },
    {
      "commit": "610c1aad71bfa118c4f49ac01761f586b8dede69",
      "tree": "8ad4cfd904cf909526b32b03561ad369f42720d9",
      "parents": [
        "b95fe9b9751746b269a3bbd7021cf731d8553715"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Feb 15 02:56:05 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 14:27:20 2026 +0000"
      },
      "message": "spi: Pass master instead of flash to .send_command\n\nIn the SPI-master API, `.send_command` should only forward commands to\nthe SPI bus. All details about the commands and the SPI slave should be\nhandled in the chip driver. Hence, replace the `flashctx` pointer with\none to the `spi_master` to enforce proper separation.\n\nChange-Id: I50934a1294217794b7e23cc98ade7e4279c059a1\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/74897\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "b95fe9b9751746b269a3bbd7021cf731d8553715",
      "tree": "d6f6e0a4b47d5dcd4eb919068168163d6ee243f4",
      "parents": [
        "5469c15550be12b4da9d2fbf48f16137895e07ba"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 12 23:03:45 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 14:27:20 2026 +0000"
      },
      "message": "ni845x_spi: Use new voltage API\n\nThis gets rid of the need to have a flash context in the generic SPI\nAPI, ni845x_spi_transmit().\n\nDue to the way this was written before, hooked into the transmission\ncode path but guarded by a static singleton `first_transmit`, things\nare changing a bit: When no flash chip is given on the command line,\nwe used to adapt the voltage  to whichever chip entry happened to be\nthe first in our database. Now we will start with a default voltage,\nand only after probing adapt it to the detected chip.\n\nChange-Id: Iadc08dc0963c9f1c1e9180384da99c32fd264c25\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/415\n"
    },
    {
      "commit": "5469c15550be12b4da9d2fbf48f16137895e07ba",
      "tree": "d3a0fbf038e01141a02a3b49a19be4fc3ee92136",
      "parents": [
        "89e6818a8e60e6e2ddc7d09da0e79b615ea36629"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 12 22:56:52 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 15 14:27:20 2026 +0000"
      },
      "message": "Add common master API to adapt voltage\n\nWe start by setting the voltage in prepare_flash_access() and, if we\nwere told to probe for a specific chip, before the probing. For now,\nwe leave the programmer driver\u0027s default voltage during the probing,\notherwise.\n\nOnce the probing is more bus centric, we can implement a more elabo-\nrate scheme. For instance, we can probe at the lowest voltage first\nand only increase it if there was no response at all.\n\nChange-Id: I6689813f83abe654ba7a18f2e0537314047bf15f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/414\n"
    },
    {
      "commit": "89e6818a8e60e6e2ddc7d09da0e79b615ea36629",
      "tree": "70a471bf9672b8a9d7e2061e2088ab32a045b21e",
      "parents": [
        "dc34409b2016a851ce05b593d3fceb45b0816afa"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 11:55:04 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 28 14:54:31 2026 +0000"
      },
      "message": "udelay: Add cast for `tv_nsec` to always meet format string\n\nThere are libc\u0027s around where `tv_nsec` isn\u0027t a `long`, e.g. glibc\non x32. Casting to long should always be safe, as `tv_nsec` is de-\nfined to be within [0, 999\u0027999\u0027999] (on this code path even within\n[0, 100]).\n\nChange-Id: Ic6318401db2134069c588c96e730b493496e8efb\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/400\n"
    },
    {
      "commit": "dc34409b2016a851ce05b593d3fceb45b0816afa",
      "tree": "dc9f277489a6ebaa1bf8e9d17428312db8290520",
      "parents": [
        "e3f648c3146be28c642782b11187011dfd6f258d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Dec 07 00:22:21 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 22:42:55 2026 +0000"
      },
      "message": "spi: Refactor default_spi_send_command() to avoid flashctx deref\n\nChange-Id: Icc16a52d12de5a07494294f5f76722970c1d1d14\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/323\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "e3f648c3146be28c642782b11187011dfd6f258d",
      "tree": "272af33324401b45fc68bef0e1d697bf502998c1",
      "parents": [
        "32f1ea8df501b41362058bb699a7ea96482e4db3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Feb 15 02:55:23 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 22:42:55 2026 +0000"
      },
      "message": "spi: Implement top-aligned to avoid BBAR hassle\n\nThe BBAR quirk in `ichspi\u0027 is the only case left where we need a flash\ncontext in the SPI `.send_command\u0027 functions. Our Git history suggests\nthat the elaborate calculation there  was not added for an encountered\nsetup but rather all possible settings of BBAR [1]. There are only few\nsettings that make sense, however.\n\nBBAR sets a simple address boundary. Reads for any flash address below\nthe BBAR setting will be rejected.  This was originally the only read-\nprotection mechanism, introduced with ICH7.  The ICH7 datasheet states\nthat upper bits, above the flash chip\u0027s size, should be set to all 1s.\nThis makes sense, as otherwise the read-protection could be circumven-\nted by setting a higher address above BBAR, where the flash chip would\nsimply ignore the most significant bits.  Conversely, this requires us\nto \"lift\" the flash addresses when the BBAR is configured properly. We\ncan achieve this by top-aligning all addresses.\n\nNewer chipsets have protected-range registers (PRx) now, that allow to\nconfigure read protection. Also the descriptor mode was introduced. So\nflash addresses have to match the descriptor regions, and lifting them\nisn\u0027t feasible.  The BBAR register was still around until Wilcat Point\n(PCH9), though, probably useless, and without the note about upper ad-\ndress bits.  Odd though, since [2], we only consider the BBAR on newer\nchipsets when in descriptor mode.\n\nAs the BBAR protection seems unlikely on newer chipsets, and the quirk\nhandling error-prone,  we\u0027ll only change addresses on ICH7 and similar\nold chipsets. We don\u0027t want the dependency on the flash context, hence\nlet the generic `spi25\u0027 code top align the addresses.\n\n[1] commit ed098d62d66d (spi: Move ICH BBAR quirk out of the way)\n[2] commit 4095ed797f87 (Add support for Intel Silvermont: Bay Trail,\n    Rangeley and Avoton)\n\nChange-Id: Ic6f6f5a24d89d4a1ebe2b99f08aabfcd65df129f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/74896\n"
    },
    {
      "commit": "32f1ea8df501b41362058bb699a7ea96482e4db3",
      "tree": "294501d43632515901c1262e6e2b294d75ba3d1a",
      "parents": [
        "b89c4524d978d3104ce3346894503e8d7b3fce51"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon May 01 15:11:48 2023 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 22:42:55 2026 +0000"
      },
      "message": "at45db: Use .prepare_access hook for non-power-of-2 preparations\n\nWe performed some additional preparations in probe_spi_at45db(). Turn\nit into a .prepare_access hook, spi_prepare_at45db(), so we can use\na pure probing function.\n\nChange-Id: I75570078301b9a06a229543f44714a0941457a5a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/74895\n"
    },
    {
      "commit": "b89c4524d978d3104ce3346894503e8d7b3fce51",
      "tree": "7ca1917a0b9dc17d0707ec40c57fae4f51136204",
      "parents": [
        "db90cf7a9da5b0acc04952865c5c1bbc09ccd38d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 04 23:30:13 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 14 22:42:55 2026 +0000"
      },
      "message": "Add new flash-chip preparation step after probing\n\nChange-Id: I57fd63ddc4c8ccd07b0744df33d6a499bfeae9ff\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/321\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "db90cf7a9da5b0acc04952865c5c1bbc09ccd38d",
      "tree": "b863d37644338ae0fbe8bfbb1ffdc2c74bab0af7",
      "parents": [
        "f4d5f3294fd470830f2ec81d4bc803dccaeb9ae3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Jan 24 23:35:52 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Feb 10 15:56:57 2026 +0000"
      },
      "message": "libflashprog: Fix comparison of layout entries\n\nA `next` pointer was added to `struct romentry` in commit 49258610ebd4\n(layout: Use linked list for `struct romentry`). Hence, comparing the\nwhole contents to match entries doesn\u0027t work anymore. Solve that by\ncomparing the `start`, `end` and `name` fields individually.\n\nChange-Id: I125d3892d9efc68e8fc19eef559c82d46c3bdc94\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/399\n"
    },
    {
      "commit": "f4d5f3294fd470830f2ec81d4bc803dccaeb9ae3",
      "tree": "a5408f9f92da87e86756af0b8951132dac22667b",
      "parents": [
        "9c6b35f03ca30c60ee6d9d90b0a0309945e2714b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 08 18:42:55 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Feb 10 15:56:47 2026 +0000"
      },
      "message": "ichspi: Add Intel Panther Lake support\n\nPTL looks much like Lunar Lake. The only noticed differences so far are\na reserved frequency value that means 80MHz now, and that only 1.8V are\nsupported.\n\nTested `ich_descriptors_tool\u0027 output for the BIOS of an MSI Prestige 14\nFlip AI+ (D3MTG).\n\nDocuments used:\n  * Intel® Core™ Ultra Processors (Series 3) Datasheet, Volume 1 of 2\n  * Panther Lake H External Design Specification (EDS) Volume 2 of 2\n  * Panther Lake-H Client Platform\n    SPI Programming Guide\n\nChange-Id: Ifec90975cefc26bb7109d69fcdabcfe480516732\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/397\n"
    },
    {
      "commit": "9c6b35f03ca30c60ee6d9d90b0a0309945e2714b",
      "tree": "7defede1317b0d76d0f9ff9c1a753fd5afd4ac44",
      "parents": [
        "83d04387cfd38b2e286a7686c9373435665cea51"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 08 18:19:00 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Feb 10 15:56:47 2026 +0000"
      },
      "message": "ich_descriptors: Pretty print voltage on supported platforms\n\nSeems more and more important to have such clues about 1.8V parts.\n\nChange-Id: Ida9a447d840d63a9fed7c48b3a18546e67284a44\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/396\n"
    },
    {
      "commit": "83d04387cfd38b2e286a7686c9373435665cea51",
      "tree": "80ba53deb613a54980f6bc73eb14c39f412238da",
      "parents": [
        "96140c7c3e3d61445b996eba62f9ebb3a4a9c760"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 08 16:48:42 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Feb 10 15:56:47 2026 +0000"
      },
      "message": "chipset_enable: Add Arrow Lake H\n\nOther than the desktop Arrow Lake (S) and the high power mobile (HX)\nversions, Arrow Lake H doesn\u0027t use a discrete PCH but the SoC die\u0027s\nSPI controller. This makes it similar to Meteor Lake.\n\nChange-Id: I4aae1fb99eeb63de79abf336f7c76da42b555efe\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/395\n"
    },
    {
      "commit": "96140c7c3e3d61445b996eba62f9ebb3a4a9c760",
      "tree": "05fa3534e13eef1b4bb575e4b0c25794ed4a36fe",
      "parents": [
        "d9aa81ed903efac208083a0933e2ff4643f9fb54"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Thu May 02 21:57:08 2024 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Feb 10 15:56:04 2026 +0000"
      },
      "message": "udelay: Include \u003cdelay.h\u003e from libpayload\n\nChange-Id: I41aef9d03e9150353c4f3ca82dc198bd0156e044\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/398\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "d9aa81ed903efac208083a0933e2ff4643f9fb54",
      "tree": "5db6ca8f476420ba6f4bd6791265ef922cc34fa2",
      "parents": [
        "72d0adaa8c87472994763f1920494d54dff8528b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jan 26 18:30:25 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 09 20:38:18 2026 +0000"
      },
      "message": "sfdp: Call selfcheck_chip() if parsing looked successful\n\nChange-Id: Ic296e0e05425b2bafc11e18f05705f83c075f23b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/394\n"
    },
    {
      "commit": "72d0adaa8c87472994763f1920494d54dff8528b",
      "tree": "f64cb461db4ed2a2cba0f7487eb8e326105c786b",
      "parents": [
        "32fa50845240a8ba3ed9dfa4e860d799cdd768b7"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jan 26 18:28:20 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 09 20:38:18 2026 +0000"
      },
      "message": "Unify chip label in output of selfcheck_chip()/eraseblocks()\n\nAlways print the index if available, but only the name if not.\n\nChange-Id: Id7f8ed6b04febf13b07e3064666ea32ae24267e8\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/393\n"
    },
    {
      "commit": "32fa50845240a8ba3ed9dfa4e860d799cdd768b7",
      "tree": "35fe5f8e28389fb0060ddff00c10c31e51066614",
      "parents": [
        "82834c95ef1d16519d0f114692bfb4cd5e47c461"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jan 26 18:26:49 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 09 20:38:18 2026 +0000"
      },
      "message": "Extract chip selfcheck into new selfcheck_chip() function\n\nWe\u0027re going to call it from the SFDP parser, too.\n\nChange-Id: Ib526d005b84717d4be69cc2dff46cf628af4c9cd\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/392\n"
    },
    {
      "commit": "82834c95ef1d16519d0f114692bfb4cd5e47c461",
      "tree": "4624786e79a26b7e1ba1c354ddbfd340bcfb1689",
      "parents": [
        "a193983b9647f1364e30bba56a1eef72726ccbc0"
      ],
      "author": {
        "name": "Arthur Heymans",
        "email": "arthur@aheymans.xyz",
        "time": "Fri Jun 27 08:33:56 2025 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 09 20:38:18 2026 +0000"
      },
      "message": "Add 4BA support in SFDP parsing\n\nTested: \"Found Unknown flash chip \"SFDP-capable chip\" (32768 kB, SPI) on\ninternal.\" on a W25Q256JW.\n\nAlso tested MX25L25645G, probe/read/erase/write.\n\nChange-Id: I26d161bcfd16053716e8319c3d978a245390545e\nSigned-off-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/336\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "a193983b9647f1364e30bba56a1eef72726ccbc0",
      "tree": "ffefc51cc344409cede664cc45ba79a7df03aad1",
      "parents": [
        "1926900454166df3de18a1fa584e79dab8a48d75"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Oct 07 21:58:02 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 09 20:21:46 2026 +0000"
      },
      "message": "amd: Fall back to reading rom3 range in case of ROM Armor\n\nAMD is pushing ROM Armor forward, which leaves the SPI handling to\nthe PSP and only a mailbox interface (guarded by SMM) for the main\nCPU. With the current ROM Armor 3, there is no opt-out in the BIOS\nsetup anymore.\n\nOnly access left for the main CPU is the read-only memory mapping.\nWe make this available when active ROM Armor is detected (SPI BAR\nregister reads all ff). Probing of the flash size is peculiar, we\ncan only try to guess it when memory contents look repetitive.\n\nTo not pollute the `amd_spi100` driver, we start a new one.\n\nStory: https://icon.sourcearcade.org/posts/amd_firmware_reading/\nChange-Id: Ib4866084fe80853fd66501176dbc6b766750062f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/350\n"
    },
    {
      "commit": "1926900454166df3de18a1fa584e79dab8a48d75",
      "tree": "eb58a44ae94ac539d1b5e69f038d722931feff54",
      "parents": [
        "13e745cf7a9bc867bd3575768e33e322f3c5adf8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 12 20:34:01 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jan 26 17:56:03 2026 +0000"
      },
      "message": "helpers_fileio.c: fix fsync() check.\n\nBoth the _POSIX_FSYNC macro and the fsync() declaration are in\n\u003cunistd.h\u003e. The current code works by accident on glibc courtesy of\ntransitive includes, but is broken in Android currently (mistakenly\nassuming there is no fsync() because _POSIX_FSYNC isn\u0027t defined, merely\nbecause \u003cunistd.h\u003e hasn\u0027t been included), and won\u0027t compile with Android\u0027s\nC23 addition of call_once() to \u003cstdlib.h\u003e because _POSIX_FSYNC comes in\ntransitively via \u003climits.h\u003e but without \u003cunistd.h\u003e for the fsync()\ndeclaration.\n\nFix all of this by just including the right POSIX header file for both\nthe feature macro and the function declaration.\n\nChange-Id: Ifd6eeba56cffabb6a37880c78ea21de4705308b5\nSigned-off-by: Elliott Hughes \u003cenh@google.com\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/90015\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/390\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "13e745cf7a9bc867bd3575768e33e322f3c5adf8",
      "tree": "76c89e83b10dcb0c979c8315c7400b3188b14227",
      "parents": [
        "e332db70039fa1725f344dd551d0a68875fb0484"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 18 10:11:00 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jan 26 17:55:51 2026 +0000"
      },
      "message": "udev rules: Separate `uaccess\u0027 flag from `plugdev\u0027 group setting\n\nIt turned out that at least systemd doesn\u0027t apply the flag if the group\ncan\u0027t be set, e.g. on systems w/o `plugdev\u0027 group.\n\nResolves: https://github.com/SourceArcade/flashprog/issues/8\nChange-Id: I39b70ec1ed089596dc42d2acdea29feb3dca72d7\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/391\n"
    },
    {
      "commit": "e332db70039fa1725f344dd551d0a68875fb0484",
      "tree": "b5c75f498280d25fbb7decf196c5641e6546bcc5",
      "parents": [
        "ee1d1b41e81dc7171b6ec09b66a7ba7c928e1bda"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 01 13:45:56 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 25 15:30:00 2026 +0000"
      },
      "message": "manibuilder: Add Android cross-compilation targets\n\nChange-Id: Ief71ef392f59197c95b5d01a63bc6998748bceb2\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/389\n"
    },
    {
      "commit": "ee1d1b41e81dc7171b6ec09b66a7ba7c928e1bda",
      "tree": "d590bc5201d1c7120234c00e8fee728037eaf36b",
      "parents": [
        "8b892481d0747ea7800318dc373b42f7dc1232b4"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 23 12:10:04 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jan 25 15:30:00 2026 +0000"
      },
      "message": "manibuilder: Allow differing uid to fix local Git access\n\nChange-Id: Iae06908a2cb2e0c55245a14600590ad0c6d91146\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/388\n"
    },
    {
      "commit": "8b892481d0747ea7800318dc373b42f7dc1232b4",
      "tree": "126abd1bf55b5fbbd9c99f463341002c616437fd",
      "parents": [
        "ea27a6e524690a7a376764fd60a37ec1b78ec8f3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Nov 18 17:17:03 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jan 16 15:32:05 2026 +0000"
      },
      "message": "dediprog: Drop enum of i/o bits\n\nThese bit positions differ between device revisions and models. Also the\ndefault meaning (and mapping of adapters) show different intentions per\nmodel. For instance, SF600 adapters expose IO2 as IO4 of an SF100.\n\nChange-Id: I38c587214fa0167bf971ead5e3f490da2cedaf24\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/353\n"
    },
    {
      "commit": "ea27a6e524690a7a376764fd60a37ec1b78ec8f3",
      "tree": "91463bba7261a69dc84fdf14800c3331046447de",
      "parents": [
        "c0124d13afa0b1399238b1ce94a3f20ea7ffbd91"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Oct 03 14:21:00 2025 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jan 16 15:32:05 2026 +0000"
      },
      "message": "dediprog: Set i/o lines with protocol v2+\n\nWhen adding support for the v2 protocol, we left a FIXME open\ninstead of setting the i/o lines as before.  Looking into the\n`dpcmd` source code confirms  that the i/o values are now set\nin the lower bits of `wValue` of the USB request.\n\nTraces of Dediprog\u0027s Windows application with an SF600Plus-G2\nshow that it first sends a request with `wValue \u003d 0x8001` and\n`wIndex \u003d 0x0021` during initialization, then later `wValue \u003d\n0x0L09` by default (L being the LED setting).\n\nIn a ticket[1], test results showed that setting 0x09 fixes\nspurious high-levels on the MISO line with newer SF100 ver-\nsions and certain flash chips.\n\nTests with an SF600Plus-G2 confirmed that the magic 0x9 sets\nCS2 and IO2 high. Adapters map IO2 to IO4 of an SF100 inter-\nface, which again is expected to be high.\n\n[1] https://ticket.coreboot.org/issues/609\n\nChange-Id: Iba5e113adb607a92802cb93a121987920f507fad\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/349\n"
    },
    {
      "commit": "c0124d13afa0b1399238b1ce94a3f20ea7ffbd91",
      "tree": "b171e11c317dff41aeb6a096c60016cef4428c33",
      "parents": [
        "ee2401c7fa900c15f9c2801c46881c9413141ad1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 26 12:40:14 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jan 16 15:30:46 2026 +0000"
      },
      "message": "chipset_enable: Suppress laptop warning for AMD SPI100\n\nChange-Id: I3f00e32cb182f7de366ff10725de50953e63a302\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/351\n"
    },
    {
      "commit": "ee2401c7fa900c15f9c2801c46881c9413141ad1",
      "tree": "a55bd883e476fccb921a58b9b36e0904148d765d",
      "parents": [
        "ffcf92fbfd04a3ac1a5d882bcd5c4b78255af495"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Fri Jan 09 15:48:07 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jan 16 15:30:29 2026 +0000"
      },
      "message": "chipset_enable: Fix use-after-free of LPC PCI device\n\nWe ran pci_free_dev() too early,  after some code moved around\nin enable_flash_amd_spi100(). Instead of trying to ensure that\nwe free the device handle on all paths, only use it early, and\nfree it right away.\n\nChange-Id: Ie71cdd2f98f67bc5016067404bb911f5629d0f03\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/352\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": "ffcf92fbfd04a3ac1a5d882bcd5c4b78255af495",
      "tree": "3ab6c036d9a0ab2f0f71c6c76fcb5d60bd3dd4de",
      "parents": [
        "b6f4e73d4d76b61451869e2b0b353a1a5555c61e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Tue Apr 08 15:03:06 2025 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:58:48 2025 +0000"
      },
      "message": "chipset_enable: Mark Raptor Lake-S as DEP\n\nAs usual, partial programming (BIOS region) is possible. Tested by\nrip_help on IRC.\n\nChange-Id: I259b9e7c6281120f6c5bea5ee468d7000930db8b\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/334\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "b6f4e73d4d76b61451869e2b0b353a1a5555c61e",
      "tree": "7c0bc3950274db2e5a3f4de54cd9575f5a75858e",
      "parents": [
        "fcdab42070697005a8e004d2e6a5a83b81a9e753"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 21 22:41:29 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/anita: Explicitly prefer ipv4\n\nDocker doesn\u0027t provide ipv6 support by default. Without telling\nNetBSD to prefer ipv4, we ran into very long timeouts.\n\nChange-Id: Id1303629883117e69243bcbbe601a8249f9fd703\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/376\n"
    },
    {
      "commit": "fcdab42070697005a8e004d2e6a5a83b81a9e753",
      "tree": "61e09d51263f4d3347c3cd05918029f0a906a723",
      "parents": [
        "6198fc728c0df56119a9281597f616c6fb1e6af3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 21 22:39:19 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/anita: Resolve actual pkgsrc URL with curl\n\nOlder NetBSD releases seem to have problems with the current redirects\non pkgsrc mirrors. So we try to resolve a current, final URL with curl\nand force the scheme back to http.\n\nChange-Id: I0a975a6c7c698eeea6ab0a267b11370e2b3e4770\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/375\n"
    },
    {
      "commit": "6198fc728c0df56119a9281597f616c6fb1e6af3",
      "tree": "95db9cd10d2c7281b9f477150216775149061f28",
      "parents": [
        "45a89609f8e7e7b208ec81af913cfbd9349bc11d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 21 22:35:30 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/anita: Switch to libftdi1, add libjaylink\n\nWe had the old libftdi (0.x) selected, which is useless to us.\nThe newer libftdi1 is available for x86 at least. Fortunately,\nlibjaylink seems always available.\n\nChange-Id: I423de4bd857b63418c4d0a11f773ce9d7e1fcc42\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/374\n"
    },
    {
      "commit": "45a89609f8e7e7b208ec81af913cfbd9349bc11d",
      "tree": "f8144c5f6ebbaade8e38039de127c333ebfedaef",
      "parents": [
        "8eb900e83060ee3902db8bc9e9911a91a6657427"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 21 22:33:31 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/anita: Drop NetBSD 8.2, 9.3-sparc64; add 10.1-sparc64\n\nChange-Id: I7ee76566c555efeab87d3ca9a60448f717559f97\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/373\n"
    },
    {
      "commit": "8eb900e83060ee3902db8bc9e9911a91a6657427",
      "tree": "990a42e37c0cf78d524af649e3911c1ee969e0f8",
      "parents": [
        "19e34a82d21e8539c22716de17945d5082486f68"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 03 22:02:07 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder: By default, build native targets last\n\nThe \"native\" targets don\u0027t require emulation, hence run a lot\nfaster. Testing them last helps to run more in parallel.\n\nChange-Id: I9d6b6cd5d65322e3cbfe60adeb58cef99b246a08\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/372\n"
    },
    {
      "commit": "19e34a82d21e8539c22716de17945d5082486f68",
      "tree": "c58e5548eee4e9c9572326b1169b95b5512066e2",
      "parents": [
        "6f04c71ccfbf3e1821829f1e6ebb606bf8658565"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 03 12:04:11 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder: Re-arrange order of test targets\n\nPut slower targets first, so we can parallelize better. AlmaLinux\nlacks `cchache`,  hence they are very slow.  Also, newer versions\nseem to stress QEMU a lot more (maybe due to more complex instruc-\ntions used?).\n\nChange-Id: Ied30ffb3d17ae78b6a313890548e97a7cad6af90\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/371\n"
    },
    {
      "commit": "6f04c71ccfbf3e1821829f1e6ebb606bf8658565",
      "tree": "1fa1d5cd08e546089b3c777ff37638fac4551cc1",
      "parents": [
        "1b20b7f88489ca2582e9b56a6d3241873f1839e9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 22 12:20:17 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/ubuntu: Add Resolute Raccoon (26.04) prelim.\n\nChange-Id: Ifb154d11d087a5128121bc9ce2c970f662d9925b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/370\n"
    },
    {
      "commit": "1b20b7f88489ca2582e9b56a6d3241873f1839e9",
      "tree": "8cad7f462cf2afa1e2682f5782079e15e2959a6d",
      "parents": [
        "dc2f156366640ddd55e5c2e298d884fcf6c3d421"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 22 12:19:07 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/alpine: List arm32 targets with QEMU issues as broken\n\nChange-Id: I82686536127b1db4d42374ca6249030bacc856eb\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/369\n"
    },
    {
      "commit": "dc2f156366640ddd55e5c2e298d884fcf6c3d421",
      "tree": "ee269c57dc82fb57fc62facd09c1c991b5753f3e",
      "parents": [
        "4a4b6b5508d4d6e5839ebf71a18842a8c2f87151"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 16 16:44:26 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/alpine: Fix building images w/o libjaylink\n\nIf not all packages can be installed with an `apk add` command, none\nare. We\u0027d have to run `apk` multiple times. However, `libgpiod` and\n`meson` are available in all used releases now, so we can always\ninstall them.\n\nChange-Id: I992b8f47a6b670a150228417a41281abe14ac27e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/368\n"
    },
    {
      "commit": "4a4b6b5508d4d6e5839ebf71a18842a8c2f87151",
      "tree": "01e7d2cc29acc99973a876ce99d4751519d69bbe",
      "parents": [
        "d038ab2abdec1db9f0dabf59987d7f7c3750f23f"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 13:45:00 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/alpine: Install Clang for select container\n\nThis adds Clang 19 to our build tests.\n\nChange-Id: I5e3648b759a5c9604621c0436036bc91f594960b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/367\n"
    },
    {
      "commit": "d038ab2abdec1db9f0dabf59987d7f7c3750f23f",
      "tree": "83a2afc9561bb294c01fceec7353515e7c1904ef",
      "parents": [
        "16a4a95894d5c4df76c9499b10d43bfd2a69a3e2"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 15:56:22 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/alpine: Allow to install additional packages\n\nChange-Id: I2639f611880dd66bd54c18e0934bae5f7b14d04e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/366\n"
    },
    {
      "commit": "16a4a95894d5c4df76c9499b10d43bfd2a69a3e2",
      "tree": "6ac2aba106d3eeeb085bb5d5b34c4a983dc334dd",
      "parents": [
        "806cfdbb34deec854c549c38a5928875a1753467"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 13:45:00 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/debian: Install Clang for select containers\n\nThis adds Clang 11 and 14 to our build tests.\n\nChange-Id: I8b3cc241732e2a60ca94bdccda01896cd7bec0c3\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/365\n"
    },
    {
      "commit": "806cfdbb34deec854c549c38a5928875a1753467",
      "tree": "a256ee16dabbf5c317061fa54b5a94e7e6e739c8",
      "parents": [
        "c5942ebbf2132cf1961de8c48fa72abed1a6b1e1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 13:24:10 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/debian: Allow to install additional packages\n\nChange-Id: I276b2e7da21f934c9e114567a40820f095a7162b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/364\n"
    },
    {
      "commit": "c5942ebbf2132cf1961de8c48fa72abed1a6b1e1",
      "tree": "2b9ff76294e968b13607cc7dc6b905f4d089b966",
      "parents": [
        "3c16b70214123126337de88e5fac4be071b73b2e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 13:17:58 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/debian: Use `source\u0027 container instead of remote repo\n\nOlder versions couldn\u0027t be built anymore because they lack modern TLS\nrequired to access sourcearcade.org.  Using local repositories avoids\nthe trouble.  For the affected, old containers,  this also means that\nall revisions to test will have to be available locally.\n\nChange-Id: I551f11590387c5c78ca97e9fa09d156f6049ad0b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/363\n"
    },
    {
      "commit": "3c16b70214123126337de88e5fac4be071b73b2e",
      "tree": "9f130921f1a000df32341ea87958e44fee5b982b",
      "parents": [
        "dea89845c31e86d838c8faedffd82a8c6357f95a"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 16 16:47:39 2025 +0000"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder/debian: Drop abandoned targets, add Trixie\n\nBuster is end of life. Bullseye ppc64 and mips also seem abandoned.\n\nChange-Id: Ie1c49319d41e3c9295eb5a176540502136269f48\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/362\n"
    },
    {
      "commit": "dea89845c31e86d838c8faedffd82a8c6357f95a",
      "tree": "b71dcbc93249922e34d270c0a4b84d402e2b5b2c",
      "parents": [
        "a26907dc97c35d6e8c40a66542570332e4bf844e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 13:13:31 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder: Prepare a `source\u0027 container from local repository\n\nClone the local repository into a `mani/source\u0027 container. This can be\ncopied during the build of our test containers,  to avoid cloning over\nnetwork.\n\nChange-Id: I28fea93f9f77aa4d41143046081f4c6fd743c12e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/361\n"
    },
    {
      "commit": "a26907dc97c35d6e8c40a66542570332e4bf844e",
      "tree": "a2b25123b609b8e7ed97f699b367836a37dd596b",
      "parents": [
        "73bef7225546bd0fd5b64e207c56a68b684037dc"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 16:02:41 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder: Add newest AlmaLinux, Fedora and Alpine versions\n\nChange-Id: Icd66f66e7515ab413f066bfaa2d83f00c39c2144\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/360\n"
    },
    {
      "commit": "73bef7225546bd0fd5b64e207c56a68b684037dc",
      "tree": "8082835f056ed483bd46999446ff3f02672e46f6",
      "parents": [
        "c37cf1e15d352c8f91d50ce806c6c474442ecdae"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 16:01:52 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder: Drop old, unsupported Fedora and Alpine versions\n\nChange-Id: I4f6e8df61118c80ae43cd1f918fcc5bc1f81e2d4\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/359\n"
    },
    {
      "commit": "c37cf1e15d352c8f91d50ce806c6c474442ecdae",
      "tree": "6ef078696107d07bbeb06c628f0afe4c27918395",
      "parents": [
        "f8785ae185e716d70a40be4fe483e2029d19011f"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 22:01:14 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder: Drop abandoned Dockerfile.centos\n\nChange-Id: I15af6157f49f4a7ce36f53a0d7c47c07474cbd52\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/358\n"
    },
    {
      "commit": "f8785ae185e716d70a40be4fe483e2029d19011f",
      "tree": "72c0b951a22d026b4d2876a5f5540def9c7f96e8",
      "parents": [
        "906f693766deaaf8dc028fa722e40e2636ea7acc"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 13:05:34 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "manibuilder: Pass explicit `--plattform\u0027 for official images\n\n`docker build` used to assume the only available platform for images\nfrom the per-architecture repositories (e.g. arm32v7/debian). The new\n`buildx` doesn\u0027t do that anymore. So we\u0027ll pass the platform explicitly.\n\nChange-Id: Ic0f72500d2560c293f0abca7c5f1c2fd3f0bb30e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/357\n"
    },
    {
      "commit": "906f693766deaaf8dc028fa722e40e2636ea7acc",
      "tree": "8469c0ff1a53591db58452b16679962bdc01ac19",
      "parents": [
        "9d09e0f18fc48ae0e02ca82c6dba75b5b3a169bb"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 01 16:39:22 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:50:57 2025 +0000"
      },
      "message": "test_build.sh: Re-run tests with `clang` if available\n\nIf ${CC} ends with `cc\u0027, doesn\u0027t look like Clang, and `clang` is\nexecutable, repeat the test run with Clang.\n\nChange-Id: Ib2afe759af9d2077bbacdd98a6a553668f6db5e5\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/356\n"
    },
    {
      "commit": "9d09e0f18fc48ae0e02ca82c6dba75b5b3a169bb",
      "tree": "0d093a00f516fae235d57f4573daf38b682c8791",
      "parents": [
        "e82a29bfba789d72c6893eb0109482ce4de5ca67"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 22:55:10 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:20:34 2025 +0000"
      },
      "message": "make/meson: Generate a `version.h\u0027\n\nUsing a header file allows us to  keep the version string out of the\ncompiler command line. This should heavily increase direct hits with\nccache. Specifying the compiler argument for a single source file is\nrather clumsy with Meson, hence the more pompous header file.\n\nChange-Id: If6c4e33e4944d2b264252dbcd2fd69ecf7bd8905\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/355\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "e82a29bfba789d72c6893eb0109482ce4de5ca67",
      "tree": "96c04143849157f43767f8e8cdd78c242089412f",
      "parents": [
        "dbf50334a199f6721c0c4e4cae8bedfe5d24db76"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 22:52:42 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 17 20:20:34 2025 +0000"
      },
      "message": "meson: Use correct version string for manual pages\n\nThe `version\u0027 variable has the prefix of the Git tag\n(e.g. `v\u0027 or `p\u0027) stripped.  So use the full version\nstring instead.\n\nChange-Id: I67fbc3c34d74cf0e1b69545a88636aabc78d8ea7\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/354\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "dbf50334a199f6721c0c4e4cae8bedfe5d24db76",
      "tree": "fccfbece9a33da0efd598cc2fa98e9ae33a478c5",
      "parents": [
        "e060018655f802896dc226832d25e223102889c8"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 02 14:02:51 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Dec 09 20:53:39 2025 +0000"
      },
      "message": "linux_mtd: Use sizeof() instead of strlen() on constant string\n\nNewer Clang warns about using strlen() to calculate an array length\n(results in a variable-length array w/o GNU extensions).\n\nChange-Id: I30bef896104b315082d2d74984f3e43557d24656\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/333\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "e060018655f802896dc226832d25e223102889c8",
      "tree": "ffb01d5b4cabd734e6676fb48b4e7b87f35a7828",
      "parents": [
        "ff9526b8039e69310d4af13d5d7665b4002d8450"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 01 12:29:28 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 03 16:16:09 2025 +0000"
      },
      "message": "flashchips: Explicitly zero-initialize in .qpi_read_params\n\nThe last number was left out on purpose for GD25LE255E, because the\nsetting is reserved. Clang is picky about this case, though, due to\n`-Wmissing-field-initializers\u0027.\n\nChange-Id: I0a6915d37a4413eecc33ac88d2e20ad6a327cd38\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/332\n"
    },
    {
      "commit": "ff9526b8039e69310d4af13d5d7665b4002d8450",
      "tree": "3dd6a2f3ed2804643072cfe8f2a0aca758c92104",
      "parents": [
        "5a72cfb13afacb69a991199d568a5b7e253c6d2a"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 27 21:52:02 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 03 16:16:09 2025 +0000"
      },
      "message": "dediprog: Use dual-i/o default only for SF600Plus-G2\n\nEven with protocol v3, problems have been witnessed with an SF600Plus.\nIt seems we have to test and whitelist programmers individually.\n\nTested with SF600Plus-G2: dual-i/o is still the default.\n\nChange-Id: I435ef44d4461c3ffda8b1e39673e69106a99a23d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/330\n"
    },
    {
      "commit": "5a72cfb13afacb69a991199d568a5b7e253c6d2a",
      "tree": "8a70766a62e2181fdaabadc15ae9011e72c5592e",
      "parents": [
        "284d55b9554f14086fdfa94fedac1313a7da3457"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Feb 26 23:47:14 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 03 16:16:09 2025 +0000"
      },
      "message": "flashchips: Fix block-protection bits for 4BA Puya chips\n\nLike many other 4BA chips with \u003e\u003d 32MiB flash space, these chips use\na fourth BP bit to encode the size of the protected area. The TB bit\ntakes the SEC bit\u0027s place, which is sacrificed.\n\nChange-Id: Iac2c817e8650d4d57ff94d41eba49f84cbb66d7d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/329\n"
    },
    {
      "commit": "284d55b9554f14086fdfa94fedac1313a7da3457",
      "tree": "108290ef32568b61cc112e5c9dd6f08926a01e6f",
      "parents": [
        "37e07a86a652467c14afaaff08af17da019f2166"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Feb 26 23:37:49 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 03 16:16:09 2025 +0000"
      },
      "message": "flashchips: Add WPS bit description for GD25Q128C\n\nThis seems to be the only GigaDevice chip in our database with\na WPS bit in a regular status register.\n\nChange-Id: If08aa4c4f90291e9b8b975565b5fa808773442bb\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/328\n"
    },
    {
      "commit": "37e07a86a652467c14afaaff08af17da019f2166",
      "tree": "8520d91487990da1223ffba9eb1f4714aee0dabb",
      "parents": [
        "3646b18f69a3461bf9353b0dd909fadfdc32f147"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Feb 26 23:26:59 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 03 16:16:09 2025 +0000"
      },
      "message": "flashchips: Add missing QE bit descriptions\n\nWinbond and XTX chips have QE bits. These were missed when adding\nquad-i/o support initially. Found by checking for irregularities\nin chips with quad-i/o support but no `.qe` entry.\n\nChange-Id: Id47e9ac9eb487140340349895f771adbe42c87fd\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/327\n"
    },
    {
      "commit": "3646b18f69a3461bf9353b0dd909fadfdc32f147",
      "tree": "6ad6b9cf08961d0b5690e2791f2a16f7b4e3643c",
      "parents": [
        "d4eb532cf1f6370f06761bb89786831587bec117"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 23:44:37 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 27 20:58:30 2025 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25LF128E 166MHz, 1.8V part\n\nThis one has dummy-cycles configuration bits  that control the\nquad-i/o fast read command. Otherwise it supports the standard\nset of QPI commands and all usual block-protection bits except\nWPS.\n\nDatasheet used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230627/DS-00632-GD25LF128E-Rev1.3.pdf\n\nChange-Id: Id43ca44f66002f3038460be2bbf595de31956a51\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/308\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "d4eb532cf1f6370f06761bb89786831587bec117",
      "tree": "6ed282807c1d1488963ddda99a4cc509e512ebc8",
      "parents": [
        "38d037fc5bf75068c608ef24af5dc9bd26456263"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 23:26:04 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 27 20:58:30 2025 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25LF80E..GD25LF64E 166MHz, 1.8V parts\n\nThese chips are supposed to have full QPI support and all known block-\nprotection features except WPS.  Only one quirk was found in the data-\nsheets: the fast-read quad-i/o command uses 10 dummy cycles instead of\nthe usual 6.\n\nDatasheets used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240914/DS-00678-GD25LF80E-Rev1.2.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230627/DS-00677-GD25LF16E-Rev1.2.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230627/DS-00676-GD25LF32E-Rev1.3.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240729/DS-00636-GD25LF64E-Rev1.4.pdf\n\nChange-Id: I2b57bfdd38f354867aa242d040b17e860c8734f4\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/307\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "38d037fc5bf75068c608ef24af5dc9bd26456263",
      "tree": "dd8ed6fb6169d4a79e7a9674d58010916497b8b1",
      "parents": [
        "1da029331d6dade08ed181f8b2c87d3cf02a0489"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 18:25:55 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 27 20:58:30 2025 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25LB512MF..GD55LB02GF 1.8V parts\n\nAgain, very similar to their 256Mbit counter parts.  There are non-\nvolatile dummy-cycle bits  that control DIO and QIO commands in the\nSPI mode, hence disable those. QPI works with a set-read-parameters\ncommand, so shouldn\u0027t be affected.\n\nDatasheets used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20231213/DS-01012-GD25LB512MF-Rev1.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-01017-GD25LR512MF-Rev1.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20231213/DS-01013-GD55LB01GF-Rev1.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240729/DS-01015-GD55LB02GF-Rev1.1-773.pdf\n\nChange-Id: I5d81bcec3e7c5e4419dceb0fbf2ff60c484decf6\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/306\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "1da029331d6dade08ed181f8b2c87d3cf02a0489",
      "tree": "7a28ee6f88faf70544015d991e1153e58822aa2b",
      "parents": [
        "6d728e6e148d8e34fccf413849f3eebf79a9965f"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 17:56:39 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 27 20:58:30 2025 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25LB512ME..GD55LB02GE 1.8V parts\n\nThe GD25LB512ME shares the ID with GD25LR512ME. All those E versions\nlook much like the 256Mbit GD25LB256E. Copy this and update the sizes.\n\nDatasheets used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230627/DS-00580-GD25LB512ME-Rev1.5.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-00621-GD25LR512ME-Rev1.3.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230926/DS-00572-GD55LB01GE-Rev1.4.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230926/DS-00637-GD55LB02GE-Rev1.4.pdf\n\nChange-Id: Ic3ba2a1a7507804f6de611e24606834eb26f19ec\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/305\n"
    },
    {
      "commit": "6d728e6e148d8e34fccf413849f3eebf79a9965f",
      "tree": "9479940aa2fe9c9fbdb92c4398b44f6eaaf26b20",
      "parents": [
        "493a4e05a9feae8ace45e25733d25094b024a217"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 13:07:52 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 27 20:58:30 2025 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25B512MF..GD55B02GF 3.3V parts\n\nThese F versions seem more regular. Except for a SEC bit, complete\nblock-protection support, and a complete 4BA/QPI command set. How-\never, they also have non-volatile dummy-cycle bits that affect DIO\nand QIO commands in SPI mode.\n\nDatasheets used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240412/DS-00975-GD25B512MF-Rev1.1.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-01005-GD25R512MF-Rev1.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240412/DS-00979-GD55B01GF-Rev1.1.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240729/DS-00980-GD55B02GF-Rev1.2.pdf\n\nChange-Id: Ia31d3969d5db5ae39dad2d6463456dc7d381ed73\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/300\n"
    },
    {
      "commit": "493a4e05a9feae8ace45e25733d25094b024a217",
      "tree": "d7ba157867be69488c212dcc7549ed1271272bf4",
      "parents": [
        "648dfdc9272f02aaca0217fcdab542a10f45476e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 27 15:15:26 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Feb 27 20:58:30 2025 +0000"
      },
      "message": "flashchips: Update and split GD25Q256D entry\n\nAll these chips support volatile status-register writes. While the\ncommands used by flashprog all seem the same,  newer versions with\nthe same ID differ in their status-register layout / features.  So\nwe add redundant entries.\n\nDatasheets used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00285-GD25Q256D-Rev2.1.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-00406-GD25R256D-Rev1.3.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00327-GD25B256D-Rev1.7.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00398-GD25Q257D-Rev2.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00446-GD25B257D-Rev1.3.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00526-GD25Q256E-Rev1.1.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-00750-GD25R256E-Rev1.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230627/DS-00658-GD25B256E-Rev1.1.pdf\n\nChange-Id: Iee905ab0d72324a0059505713428555308f90207\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/298\n"
    },
    {
      "commit": "648dfdc9272f02aaca0217fcdab542a10f45476e",
      "tree": "023250eb9cd99ffaa07ab8b19bf6ee5b2fd13038",
      "parents": [
        "cfd607d36b8009eb41a7ca8e2a3e96eb9243d37b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Dec 06 23:00:30 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 24 14:18:46 2025 +0000"
      },
      "message": "spi25: Fix cosmetic debug-print error due to unitialized buffer\n\nspi_prepare_address() expects `cmd_buf[0]` to be filled already,\nfor proper debug prints.\n\nChange-Id: I03b45be7e00d00d37b32553df0991a1b608aae35\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/322\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "cfd607d36b8009eb41a7ca8e2a3e96eb9243d37b",
      "tree": "a40041ba8bb70562f8fa832e2630171014d3b7d1",
      "parents": [
        "ec287e2f7645220852130f9d68c3969b83992640"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Dec 22 00:25:58 2018 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 24 10:59:09 2025 +0000"
      },
      "message": "layout: Show a warning if no region is included\n\nThis seems better than a plain success message for a (probably\naccidental) no-op run.\n\nChange-Id: I53b749ce42ecc6c267b6cbe71413d536ec3965c5\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/313\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "ec287e2f7645220852130f9d68c3969b83992640",
      "tree": "f62b768ee47c76d5678b42ccc757b4cde9fa2f99",
      "parents": [
        "39a4f7d5a0d89494a3ed92ffa07e7a69f755cbdc"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 04 22:43:40 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 24 10:56:47 2025 +0000"
      },
      "message": "ich_descriptors_tool: Change region name EC/BMC -\u003e EC_BMC\n\nThe region names are used to produce file names for extraction.\nThey better not contain any slash.\n\nChange-Id: Id45df466e7a15fac89b8afb390bb21ea6c573d58\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/312\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "39a4f7d5a0d89494a3ed92ffa07e7a69f755cbdc",
      "tree": "bff14ca76e24ec28e6cee0c7a4401c3e72404bed",
      "parents": [
        "404529d755d07f450babca258dcff5f85a8713d9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Dec 04 22:40:37 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 24 10:56:47 2025 +0000"
      },
      "message": "sb600spi: Request more `lspci` details\n\nWhen asking the use for `lspci` output, suggest to use `sudo` and\n`-xxx`. The standard registers dumped with `-x` are not very inte-\nresting, and `-xxx` requires root access.\n\nChange-Id: I7a5bc5eb425542d8109ad504cbf77d33e43459b1\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/311\nReviewed-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\n"
    },
    {
      "commit": "404529d755d07f450babca258dcff5f85a8713d9",
      "tree": "d357131655c6ae6e5f14317937b44a10caa8bfea",
      "parents": [
        "fbea0fe4bd35092aee567864653589445edbcdd6"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Thu Jan 30 23:14:14 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Feb 24 08:00:28 2025 +0000"
      },
      "message": "memory_bus.c: Add missing copyright notice\n\nThe logic that was moved into `memory_bus.c` was originally introduced\nby commit 4e32ec19 (Refine physical address mapping of flash chips).\nEverything else is just boiler plate.\n\nChange-Id: Ied2e9ba1f55aa79abe705d6bd5314938e670b1f2\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/319\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "fbea0fe4bd35092aee567864653589445edbcdd6",
      "tree": "651920682a8bbb4b91eb9967187c4fedf7416b02",
      "parents": [
        "c90d6c425094d39c1bc1114c64e2560acf073412"
      ],
      "author": {
        "name": "Felix Singer",
        "email": "felixsinger@posteo.net",
        "time": "Mon Feb 17 21:50:08 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 20:59:56 2025 +0000"
      },
      "message": "udev rules: Restore mode/group configuration\n\nuaccess grants seat sessions access to the devices, but there might be\nrobot-like setups which need access as well. So, restore the mode/group\nconfiguration and grant users in the `plugdev` group read/write\naccess. This does not conflict with uaccess.\n\nChange-Id: Icf3e2582d7c4313b53a946880d1330079b1e0074\nSigned-off-by: Felix Singer \u003cfelixsinger@posteo.net\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/320\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "c90d6c425094d39c1bc1114c64e2560acf073412",
      "tree": "b66c1e54ebd36007afebb90db1b7a8e0d406ff8a",
      "parents": [
        "ee8cf1c9c6218681f78193ba29c890bf9b7ba30a"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Jan 02 23:37:59 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 17:23:14 2025 +0000"
      },
      "message": "flashchips: Add some 25LC series EEPROMs\n\nChange-Id: Iff02282cc1b9e76ce681467fb4b228a7f078b06f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/316\nReviewed-by: ftr4 ftr4 \u003cftr4@sharklasers.com\u003e\n"
    },
    {
      "commit": "ee8cf1c9c6218681f78193ba29c890bf9b7ba30a",
      "tree": "63429fd591599bc1bd63e0007d0f648324f4dd80",
      "parents": [
        "4e6155afd4b0e1f5cf190cdd21fa83a656c4088a"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Jan 02 23:17:25 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 17:23:14 2025 +0000"
      },
      "message": "Provide no-op probe function, always returning 1\n\nChange-Id: Ic0567a0da29790dbde24c432f3f1d4d109156165\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/315\n"
    },
    {
      "commit": "4e6155afd4b0e1f5cf190cdd21fa83a656c4088a",
      "tree": "395a5592506087f34ec696887eb965ec335f8b5d",
      "parents": [
        "9512c9c16c73e46b6190c9c9fd9ea0555a4d7e24"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Jan 02 23:05:09 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 17:23:14 2025 +0000"
      },
      "message": "spi25: Add SPI25_EEPROM enum and handle \u003c 3-byte addresses\n\nChange-Id: I043f6ea987a07853b8c50e34b3cd63faf995ecbc\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/314\n"
    },
    {
      "commit": "9512c9c16c73e46b6190c9c9fd9ea0555a4d7e24",
      "tree": "64dd2e31837a0feb64034f3404d0d68e2fce9178",
      "parents": [
        "06fbccc61ea5cc8410cb795554dffcfdda111139"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.huber@secunet.com",
        "time": "Thu Jan 30 22:38:18 2025 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 17:01:45 2025 +0000"
      },
      "message": "Add missing copyright notices to recently created files\n\nAdd copyright notices for new CLI code (2023), the AMD SPI100\ndriver (2023), and new SPI support code for dual/quad i/o and\nQPI (2024). Initially, some code was moved from `flashprog.c`\ninto `spi25_prepare.c` which dates back to 2017 and 2018.\n\nChange-Id: I980382b8950e2aea6880f4b56df23d4eafc6bb3d\nSigned-off-by: Nico Huber \u003cnico.huber@secunet.com\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/318\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "06fbccc61ea5cc8410cb795554dffcfdda111139",
      "tree": "18bea04deb690c8cad0ff1a77ddadbe1147c5bae",
      "parents": [
        "bc001daac6232df01eb4c20e5b701553bcd22ca5"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 17:36:28 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25LB256E 1.8V part\n\nThis chip has WPS and DC bits in unsupported configuration registers.\nHence we can\u0027t support QPI and block protection for now.\n\nDatasheet used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230627/DS-00513-GD25LB256E-Rev2.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-00573-GD25LR256E-Rev1.6.pdf\n\nChange-Id: I0dab32efab33d34a4c29ca84a5e1e1fe0b408e07\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/304\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "bc001daac6232df01eb4c20e5b701553bcd22ca5",
      "tree": "d855b3746bce72cb0ff6de98506c687c660ec46b",
      "parents": [
        "7d0f556db8e793df25f54504c6ebfccbcf62f292"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 17:11:56 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add some GigaDevice GD25L*256 1.8V parts\n\nHere\u0027s a bunch of chips that all share the same ID. They differ however\nin their block-protection support (which is where we split them), their\nsupport for native 4BA commands, and their logic to configure dummy cy-\ncles in SPI mode.\n\nDatasheets used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00301-GD25LQ256D-Rev2.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00282-GD25LE256D-Rev1.7.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00314-GD25LB256D-Rev1.4.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240729/DS-00562-GD25LQ255E-Rev1.2.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-01085-GD25LQ256H-Rev1.1.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-01113-GD25LE256H-Rev1.1.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230926/DS-00978-GD25LB256F-Rev1.0.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00619-GD25LE255E-Rev1.2.pdf\n\nChange-Id: Id995c53f371c9b83dabe5fb6f881954a7e7f4f59\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/303\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "7d0f556db8e793df25f54504c6ebfccbcf62f292",
      "tree": "424f9ca6daba9a658f4a721139221f016a423e3f",
      "parents": [
        "7f8c12d63d214bfd2b3ba841a3e3633ab82d825d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 15:06:22 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Update GigaDevice 1.8V family up to GD25LQ128\n\nThese chips all are supposed to support  volatile status-register writes\nand feature the most usual block-protection bits. The 1.695V limit looks\ncertainly like a typo. All datasheets found start at 1.65V.\n\nDatasheets used:\nhttps://treetoptech.com/Resources/Datasheets/GD25LQ32C_Rev1.3.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00230-GD25LQ32D-Rev2.2.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240902/DS-00543-GD25LQ32E-Rev1.6.pdf\nhttps://www.mouser.com/datasheet/2/870/gd25lq64c_rev3_4_20190615-2486443.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240729/DS-00593-GD25LQ64E-Rev1.4.pdf\nhttps://www.tme.com/Document/3677f0b602f733a6800806f5bd7a79f9/gd25lq128c.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00291-GD25LQ128D-Rev1.9.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240729/DS-00533-GD25LQ128E-Rev1.2.pdf\n\nChange-Id: I581c3936fbae43f13b01ebf01bf94e68c3150efd\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/302\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "7f8c12d63d214bfd2b3ba841a3e3633ab82d825d",
      "tree": "3b0580d5fe3e86efd8381a99d638022aea639990",
      "parents": [
        "565471ce44b21aa39698b0cd876020b9dbacd690"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 14:24:14 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25LQ20, update family up to GD25LQ16\n\nThey all are supposed to support volatile status-register writes and\nfeature the most usual block-protection bits. The 1.695V limit looks\ncertainly like a typo. All datasheets found start at 1.65V.\n\nDatasheets used:\nhttps://device.report/m/0dd9581d418568153f88153cd3bd298f85f83fba817fc6b242405e98002f7c44.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00347-GD25LQ20C-Rev1.5.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20221129/DS-00785-GD25LQ20E-Rev1.2.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20221129/DS-00663-GD25LQ40E-Rev1.2.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00405-GD25LQ80C-Rev1.9.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00583-GD25LQ80E-Rev1.3.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20220714/DS-00289-GD25LQ16C-Rev2.1.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20240902/DS-00576-GD25LQ16E-Rev1.4.pdf\n\nChange-Id: I23b3b199d9c6fd7b42de468cbe8b3945774f15e8\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/301\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "565471ce44b21aa39698b0cd876020b9dbacd690",
      "tree": "aee9b5c6f67060e8b580fe44d231287794142ae6",
      "parents": [
        "6ee2f8958e20c30d52758d37a41f8f043345d5ff"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Nov 08 13:07:52 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add GigaDevice GD25B512ME..GD55B02GE 3.3V parts\n\nThese E versions have different, peculiar IDs (0x47 prefix) and\ndon\u0027t support dual-output/-io commands.  They have special non-\nvolatile dummy-cycle registers,  hence we don\u0027t support QPI and\nblock-protection for now.\n\nDatasheets used:\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230321/DS-00649-GD25B512ME-Rev1.6.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20241211/DS-00742-GD25R512ME-Rev1.2.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230321/DS-00650-GD55B01GE-Rev1.4.pdf\nhttps://www.gigadevice.com.cn/Public/Uploads/uploadfile/files/20230321/DS-00651-GD55B02GE-Rev1.4.pdf\n\nChange-Id: Iffbb5b53383373a5bf677742e2730deaf486883d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/299\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    }
  ],
  "next": "6ee2f8958e20c30d52758d37a41f8f043345d5ff"
}
