)]}'
{
  "log": [
    {
      "commit": "45290d0f2dbb9f5ed79be2d4c38954a5e3d3672a",
      "tree": "fff6bd33c2b1dd565e971c5da67b5132b4d5099e",
      "parents": [
        "5421b1b9a1bf0a7c5c41fb15aba1b23f543c5190"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 14 20:15:55 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "Draw struct flashchip into struct flashprog_flashctx\n\nWe used to have a reference to a dynamically allocated  struct flashchip\ninside the flash context. But now that we only ever allocate both in one\ngo, we can let go of the reference and make it a single structure.\n\nChange-Id: I857acb1def6d133a5cbc28fc7a99b7b1a22b55e0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/494\n"
    },
    {
      "commit": "517d937e1d1320626993561dc4272ebea91df37d",
      "tree": "2b7e4808045b1a128012b3f1258780a3b016919f",
      "parents": [
        "3311f1cdb8a68f6eeee108dc085b00f725e520f4"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 14 21:48:36 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "Run .prepare_access only once per flash context\n\nThere\u0027s only a single path now to create a flash context,  after\nprobing, and only when we want to access the flash chip next. So\nthere\u0027s no need to defer this preparation step anymore.\n\nAll preparation will be done in a single step. Hence we drop the\nPREPARE_POST_PROBE and PREPARE_FULL steps and the enum.\n\nChange-Id: I7cd4058dd0b52ad0e4be45e494c4533f689893d9\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/492\n"
    },
    {
      "commit": "3311f1cdb8a68f6eeee108dc085b00f725e520f4",
      "tree": "7b77b0389fee7246d4c42a7e52980debcd57abb9",
      "parents": [
        "50bf19f54f3fd93b5af43a3c5c641a71cd57b4c1"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 14 12:22:18 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "Migrate flashprog_bus_probe() into libflashprog/chip.c\n\nAlso move the cleanup of `found_id` structures into a new\nflashprog_bus_probe_cleanup(). We clean up locally, right\nafter matching the IDs against chip entries. This way, we\nsave us the state tracking in `registered_master`.\n\nChange-Id: Idcd837bd16c743a245a14a6c8f2a7dfca5fe5b42\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/491\n"
    },
    {
      "commit": "50bf19f54f3fd93b5af43a3c5c641a71cd57b4c1",
      "tree": "b8f1f80b4964164c456ab83e80c3d2f68b367d3a",
      "parents": [
        "4ccc89b22d6e567d3dced87633373fa060167275"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 14 12:14:18 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "Replace flashprog_chip_match() w/ simpler flashprog_bus_match_chip()\n\nWe drop all the prints that were kept for comparison with the old probe\nsequence. Now that we actually don\u0027t run a probe function per chip from\nthe database, the output would be quite confusing.\n\nThe remaining dropped boilerplate is not needed anymore, as all callers\nalready take care of flashprog_bus_probe() special cases like ID_NONE.\n\nChange-Id: Icf0f37df4b5cf26fe7e2535cbaa15040631bdd1c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/490\n"
    },
    {
      "commit": "9ec805d8944de596e8f4e9752a148f0a6685f8f9",
      "tree": "b4e9b50b0ab22c1294ff1c849e63fe85ff6e34fa",
      "parents": [
        "bb8ab37dfc6ba8b85872b95dd3f3ec72b1e0cd6b"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 14 12:05:02 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "Drop now unused probe_flash()\n\nEverything in probe_flash() is now handled in the libflashprog APIs.\n\nChange-Id: I221317e1d107e2c38a4a9e40cc89472b61247fc0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/488\n"
    },
    {
      "commit": "bb8ab37dfc6ba8b85872b95dd3f3ec72b1e0cd6b",
      "tree": "e52920862710a50e5366d9ff480f20d570145fc2",
      "parents": [
        "47412a97a9f0ea98f655215f10896c0c3ef997d5"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 14 11:46:02 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "sfdp: Move hints about SFDP detection into spi_prepare_sfdp()\n\nNow that the preparation is only run when we are actually going to use\nthe SFDP definition, we can do the logging there, unconditionally.\n\nChange-Id: I9abb22178799c2d2f1098f0d578ac3231983fb19\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/487\n"
    },
    {
      "commit": "47412a97a9f0ea98f655215f10896c0c3ef997d5",
      "tree": "bb62df39d70d1f85043cdd90b6019a93f6a0641a",
      "parents": [
        "da16bd4fdbf93808fd5c1a115cb68260d265d174"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Mar 10 23:48:25 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "cli_classic: Use libflashprog\u0027s probing and enumeration APIs\n\nNow that the probing API is more powerful and handles multiple chip\nmatches just like the CLI, we can save a few lines and have cleaner\ncode. What is left is the forced chip probing (for forced reads),\nwhich isn\u0027t and probably shouldn\u0027t be supported by the API.\n\nChange-Id: I3227fff8e44ff41b61c2b5f500130b01543f4b58\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/486\n"
    },
    {
      "commit": "d4926fe5421f468f781b55ad86543ce504ae51d3",
      "tree": "21519041a72bea4a811db8f011b62cfe5f554615",
      "parents": [
        "d9301140e2c7a796b5092279cec1bbb7abebfc09"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 08 21:37:52 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "libflashprog: Introduce new probing API flashprog_flash_probe_chip()\n\nThis new probing API acts about the same as the old one, except that\nit accepts a `struct flashprog_chip *` handle instead of a chip name.\nUnder the hood, however, it uses our new bus probing directly.\n\nWe introduce a new function, flashprog_flash_prepare_context(), that\ncreates a flash context from a probed chip, and the bus it was found\non. This will be the single place that creates flash contexts in the\nfuture.\n\nChange-Id: I1a344aedf573d92f8f297e6eed8daadb511ebc10\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/484\n"
    },
    {
      "commit": "d9301140e2c7a796b5092279cec1bbb7abebfc09",
      "tree": "39f3b21a1f0898a80d8ddea9dcb3a0f7c899bb7e",
      "parents": [
        "f96666338ff82c93808a1f366df6467998c1b5a8"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 08 21:19:27 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "libflashprog: Add new API to probe all buses for chips\n\nThe new flashprog_chips_probe() will supersede our existing logic to\nprobe for an unspecified chip. It returns an enumeration of detected\nchips. It\u0027s up to the caller to handle multiple chip matches.\n\nChange-Id: I21ec201b92289995430130d72823fe4ca8b03bb6\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/483\n"
    },
    {
      "commit": "0d2b45ee8afc1f41670f08a6b3cf666805598543",
      "tree": "32e89b901580fe8efd218ed252c197872f27b6bc",
      "parents": [
        "48d4a0437ecc25d7c23df16fa1eda0d8f4ae5156"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 23 22:42:46 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "libflashprog: Allow to query bus types, voltage, and test status\n\nThis is mostly an export of the long stable internal structures. We do\nsome renames, though,  and provide the voltage range as floating point\nnumbers. While we are at it, also rename:\n* flashprog_test_status.wp      \u003d\u003e .block_protection,\n* BUS_PROG                      \u003d\u003e BUS_OPAQUE,\n* BUS_NONSPI                    \u003d\u003e BUS_PRESPI.\nThe last one is a pseudonym for the older, memory-mapped buses, and\ndoesn\u0027t include BUS_OPAQUE.\n\nAlso try to name the captured test state consistently, either `tested`\nor `status`.\n\nChange-Id: Ibefb923fa5f566daa804651aa1a9bfe5602ca364\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/482\n"
    },
    {
      "commit": "48d4a0437ecc25d7c23df16fa1eda0d8f4ae5156",
      "tree": "c457f37c2e9bea3b26798bf6b9d66241f4a1587d",
      "parents": [
        "484ef6184ec0da775deb9748c8a29f262b3f0eb7"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 08 16:07:28 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "libflashprog: Start a new API for chip enumeration\n\nFor now, allow to query all chips, their vendor, name and size.\n\nThere\u0027s a tricky optimization coming up: We don\u0027t want to allocate\nadditional memory when enumerating the chip database. But, we also\nwant to use the same API interface to access information about de-\ntected chips, which requires dynamic memory.  So we have to handle\nthese distinct cases explicitly.  Where `struct flashprog_chips *`\nis used, we set it to the special value `FLASHCHIPS_DB`  to denote\nthe flash database. For `struct flashprog_chip *` pointers, we add\nchip_from_db(), which tells us whether the given pointer is within\nthe database range.\n\nChange-Id: I7ecc12e1b74ca11f2be1b3472d6e470da44bfef1\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/481\n"
    },
    {
      "commit": "484ef6184ec0da775deb9748c8a29f262b3f0eb7",
      "tree": "133e987fc64b35eb54a088a03faa8c979cf0da0b",
      "parents": [
        "518350c327ada3269384af7f092e4563471f9200"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 08 21:02:52 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 18 10:21:45 2026 +0000"
      },
      "message": "Export bus probing functions\n\nRename and export\n* probe_bus() as flashprog_bus_probe(), and\n* chip_on_bus() as flashprog_chip_match().\n\nChange-Id: I4189ffe02908ea6e517b8c79370399ac1dbba3c9\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/480\n"
    },
    {
      "commit": "518350c327ada3269384af7f092e4563471f9200",
      "tree": "9f418a807e6e1ef390a8201cab5dee894a9c63ab",
      "parents": [
        "dd4744ef418b64b93b8eeda906545f6341c101d0"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 21 19:45:34 2026 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "gfxmatrox: Introduce new programmer driver for Matrox Millenium cards\n\nSupports a 64KiB parallel flash. ROM BAR configuration is tricky: The\nregister is only accessible when a special `biosen` bit is set. An OS\nmight not know this and is then unable to assign an address. We\u0027ll of-\nfer to re-purpose the MMIO BAR address, but one has to be sure that no\ngraphics driver is running.\n\nDatasheet used:\nhttps://www.vintage3d.org/doc/matrox/2164spec.pdf\n\nChange-Id: Ief6c05c8fbf752814d436ac3b47e87de0c977047\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/532\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "dd4744ef418b64b93b8eeda906545f6341c101d0",
      "tree": "2820d54a20bb4ae10adc5b74fed3449f23ad10f4",
      "parents": [
        "47cea9a2446c1078226f5a387f5afbf6ab6743c2"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 15:47:25 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "nicamd: Introduce new programmer driver for AMD NICs\n\nOn a PCnet32 FAST card with a nice PLCC32 socket, only 18 of the 20 ad-\ndress lines were connected. It\u0027s not easy to detect this, but we\u0027ll do\nour best: Check the ROM contents for repeating patterns, and allow the\nuser to override the guessed size. We use the ROM BAR here, though not\nfor the actual flash reading / writing. According to the datasheet the\nROM BAR interface always reads four bytes, and doesn\u0027t seem to support\nwrites.\n\nOtherwise tested successfully with the first 256KiB of an SST39VF040.\n\nDatasheet used:\nhttps://www.amd.com/content/dam/amd/en/documents/archived-tech-docs/datasheets/20550.pdf\n\nChange-Id: I3bddfcd1e242d28790a0916197ebd8b8bba5a70a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/530\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "47cea9a2446c1078226f5a387f5afbf6ab6743c2",
      "tree": "0a763f3d16e36192d918117ea7af01876656ecc3",
      "parents": [
        "239dc807ca45f7f91efeeca86cfe1451963a940e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Jun 30 21:42:23 2026 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "scsilsi: Introduce new programmer driver for LSI SCSI adapters\n\nSupports up to 1MiB parallel flash, but needs external address buffers\nand is usually set up for less.\n\nDatasheet used:\nhttps://theretroweb.com/chip/documentation/lsi53c875-data-sheet-4-1-66a3b3913650d154581810.pdf\n\nChange-Id: I23291ae7c98ddd5cab48f96aa5e6a69788796d9b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/529\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "239dc807ca45f7f91efeeca86cfe1451963a940e",
      "tree": "2b64413f95b11d9ff0b3582be8b433da465cebbb",
      "parents": [
        "450058cd5b36769e70d59eed622e6c41f6ff1ad2"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Jun 24 23:04:58 2026 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "programmer/physmap: Introduce generic mmio_chip_read/write functions\n\nExport these functions from the `internal` programmer. They can be used\nused for other memory-mapping programmers as well. For instance PCI ex-\nansion ROMs that can be programmed through their ROM BAR mapping.\n\nChange-Id: Ibd9b93914e16d586c0144a81fe70b30a2abffd94\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/528\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "a19cd392f287dfd12e9d27ce384c8903e1cde9c6",
      "tree": "d4dd20b75b5d30cb14636d2093d29438ae775802",
      "parents": [
        "cf09b3ca38bcc5f306863f21fd811e440cc0d93f"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Jul 04 15:25:27 2026 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "helpers: Export size-detection logic from amd_rom3read\n\nExport our logic to detect the size of a memory-mapped chip by looking\nfor repetitive reads.  This can be useful for other cases as well, for\ninstance when we don\u0027t know for sure how many address lines are connec-\nted to a parallel flash chip.\n\nChange-Id: Iccbe3aa882959baf496a04340dbfc7f552e4ef71\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/555\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "dafaf50388d748836829355c2a0e1a64ae29b749",
      "tree": "8911477ee153cd73407e1b8225facd7bf34cb92d",
      "parents": [
        "a3ffc8e9cb3f7ce779fdfb73ec6b1bc32f3d1a58"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 22 19:18:43 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "flashchips: Add AT49F511 parallel flash chip\n\nSimple 5V only, parallel flash. 512kbit density tested. No datasheet\nfound, but seems to be very similar to AT49F512. Additionally tested\nand confirmed working was the JEDEC erase sector command (though, it\ndoes the same as erasing the whole chip, so it\u0027s one 64KiB sector).\n\nDatasheet used:\nhttps://media.digikey.com/pdf/Data%20Sheets/Atmel%20PDFs/AT49F512.pdf\n\nChange-Id: Ia7cdcb2c0f6801cd7479262ab9df3742b877cca0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/525\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "1e9e91aa8ae20458eada3d664460314892581d7a",
      "tree": "004bea47e29207d9b8d0a62df436c396394ef450",
      "parents": [
        "ccc7650d992bbf34f471768fe752cf61b6a6cc39"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Jun 30 21:39:01 2026 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "flashchips: Add Catalyst CAT28F010\n\nSimple 5V, 12V Vpp, 1Mbit parallel flash. Fully tested on an LSI\nSCSI adapter.\n\nDatasheet used:\nhttps://www.onsemi.com/download/data-sheet/pdf/cat28f010-d.pdf\n\nChange-Id: Ic7d587031eb399cd9265fa91bbe598c270bcaf72\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/523\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "ccc7650d992bbf34f471768fe752cf61b6a6cc39",
      "tree": "606919bb4b24712309d0f40902393ba5a82d536c",
      "parents": [
        "e7598392d57cb1fb1bcee287e901fb32ab59a4ab"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Jun 24 21:56:31 2026 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "flashchips: Add STM M28F256\n\nVery simple 5V, 12V Vpp, 256kbit parallel flash.\n\nDatasheet used:\nhttps://www.mouser.com/catalog/specsheets/STMicroelectronics_M28F256.pdf\n\nChange-Id: I95a59d0b36a9a99e102788bd9c850bf12192efba\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/522\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "e7598392d57cb1fb1bcee287e901fb32ab59a4ab",
      "tree": "0de79a657647ca81adb9e00ad1739fa37430d6dc",
      "parents": [
        "317dd91d66f7bcd568096ae1646048fda3d4a981"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Jun 23 22:29:15 2026 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 17 18:07:04 2026 +0000"
      },
      "message": "Add M28F parallel flash driver\n\nAdd just enough code to erase \u0026 write STMicro M28F chips. Similar\nchip series that should be compatible include CAT28F and TK28F.\n\nProbing should be fully compatible to the already supported Intel\n28F series (82802AB probing).\n\nDatasheets used:\nhttps://www.mouser.com/catalog/specsheets/STMicroelectronics_M28F256.pdf\nhttps://tekmos.com/docmandocuments/products/flash-memory/100-tk28f010\nhttps://www.onsemi.com/download/data-sheet/pdf/cat28f010-d.pdf\n\nChange-Id: Iab4860558a8ddc48b529bb3d8392d48473191769\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/521\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "edf174f0c456ab5d6da1d8bff7e6b9ad719ee532",
      "tree": "f091dd3f382d18102fde06f436a5e6e797b1df75",
      "parents": [
        "c3eaa9525d474faee3109bfc280c7b6cd2fc579d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 07 23:32:30 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "flashchips: Remove .probe\n\nThere\u0027s only probe_buses() left. We can even bypass it\nby calling chip_on_bus() directly.\n\nChange-Id: I3bca7ad6f264f3b1a4ad887a941605525e432291\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/451\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "c3eaa9525d474faee3109bfc280c7b6cd2fc579d",
      "tree": "91edc5ed877ebd22d0dff3fd587b765d605f0f99",
      "parents": [
        "91f5152f499cb66540e69d78d3ee4b781ea31c57"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 07 23:22:54 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "opaque: Use bus probing\n\nChange-Id: I94f6f99144f28259efa358ed4d9fe82bd51c30b7\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/450\n"
    },
    {
      "commit": "91f5152f499cb66540e69d78d3ee4b781ea31c57",
      "tree": "26c3f7dfbffbdb889958dbce611ffc426589c3d8",
      "parents": [
        "05790290bfb9999fcde9fc7833882b95c828a40e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 07 22:57:56 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "opaque: Move probing into PREPARE_POST_PROBE hook\n\nTo get rid of the flash context in probing, we have to split the\ndetection of chip parameters out into a preparation step. Below\nthe opaque-master API, things could actually stay as they are,\nwe rename `.probe` to `.prepare` though for completeness.\n\nChange-Id: Ic8418e6c5bdc49f5133cdb21efed0bf6dc2f820e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/449\n"
    },
    {
      "commit": "05790290bfb9999fcde9fc7833882b95c828a40e",
      "tree": "17a5ae722ca47b10d936568023d88023e1f8d884",
      "parents": [
        "f1411ba8b9a7b7961c59c293e79be1a2feeede95"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 09 17:24:08 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "opaque: Move last bits from chipdrivers.h into chipdrivers/opaque.h\n\nThere are only things related to opaque programmers left.\n\nChange-Id: Iffb702336ccbf9e8b67a2f57e25a5a06ba91b6a9\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/448\n"
    },
    {
      "commit": "f1411ba8b9a7b7961c59c293e79be1a2feeede95",
      "tree": "7fb4fbc87b9a4264b4c7cecc39a026d4fd9449bb",
      "parents": [
        "3a3533716c10bd9aa5fd7960a916292503bcf3fa"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 08 15:37:37 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "Join PREPARE_PROBE/_POST_PROBE steps\n\nNow that all the probing procedures handle flash mapping by them-\nselves, there\u0027s nothing to be prepared before probing anymore. We\nwill, however, map the flash after probing for later register ac-\ncess (e.g. printlock()).\n\nChange-Id: I23833aaba9402858ab14b8835b747b0c27b2278b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/447\n"
    },
    {
      "commit": "3a3533716c10bd9aa5fd7960a916292503bcf3fa",
      "tree": "2a13a6b1657ae1f703f76d5c5e1b93acfb922a9a",
      "parents": [
        "b72fa1aec4e8729a43302c9057705894740b6eaa"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 08 15:06:51 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "jedec: Use common probing for EN29LV640B\n\nTurns out this is just common probing with respective feature bits\nand `.probe_timing`.\n\nChange-Id: I5bbf23198966c4520e2c344d198cba4e4dcbc49b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/446\n"
    },
    {
      "commit": "2e94746997b3c46df3b925a4511f34c5f5b81437",
      "tree": "86f865121240490c8de65884016592be38b6d312",
      "parents": [
        "2cadbe3481ec133b91b33f985f54ed0828559e15"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 07 17:04:59 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "Use bus probing for standard JEDEC and JEDEC_29GL\n\nTo keep things close to as they were, we still run the probing many\ntimes, with a huge amount of different chip parameters and sizes.\n\nThis brings us down to 35 probing runs for 159 chips.  And there is\nstill room for improvement:  It\u0027s likely that chips respond already\nwhen longer delays are used. Also, many chips actually ignore addi-\ntional address bits when decoding commands (i.e. bits above a 0x555\npattern are simply ignored and we actually don\u0027t need the masking).\nMany (if not all) parallel flash chips also don\u0027t care about higher\naddress bits when reading the identification, so we might only have\nto probe for them with a single chip size.\n\nFor now, we keep the set of probing parameters close to what we did\nbefore. For power-of-two chip sizes from 64KiB to 1MiB, we run with\nthe most common parameters. 7 more parameter sets are used for more\nunusual cases. And the 29GL parts are probed for the three sizes we\nhave in our database: 4MiB, 8MiB, 16MiB.\n\nA note on the 29GL probing: All the chips have status UNTESTED, and\nmost if not all are x16 parts that need the addresses shifted (what\nwe don\u0027t do ATM). Overall it looks like standard jedec probing with\na short reset sequence. However, continuations of the device ID are\nalways 2 bytes long, at a different offset (0x0E) and prefixed with\n0x7E.\n\nChange-Id: If6ece7edc2291cae4824e5bcc2f83fd8aaef296e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/444\n"
    },
    {
      "commit": "2cadbe3481ec133b91b33f985f54ed0828559e15",
      "tree": "e8b65ba8ebbb69732c24658d580621d6fb5550f4",
      "parents": [
        "3a2a4d5af905b0cc0fae1010cc7bae51e324c96f"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Thu Mar 05 18:34:57 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "Use bus probing for W29EE011\n\nThis peculiar probing function is only used for a single chip in our\ndatabase. Hence, we run it only for its 128KiB chip size. Because it\ncan cause trouble with other chips, it gets a lower priority, and is\nonly called if no higher-priority probing function returned any data.\n\nChange-Id: I90fb5aaea73e610a53b183383ebfe76a748ddffd\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/443\n"
    },
    {
      "commit": "3a2a4d5af905b0cc0fae1010cc7bae51e324c96f",
      "tree": "28578c9a46d361e4eedc3cf69c9d92c416445daf",
      "parents": [
        "dae9022046be147c87c32d56678053b2f85cdb1a"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Mar 01 12:15:23 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "Use bus probing for 82802AB\n\nWe probe for chip sizes from 256KiB to 2MiB, with and without shifted\naddresses (for x16 chips).  That makes 8 probing calls that currently\ncover 28 chips in our database.\n\nChange-Id: I3dd753efb3152a8a103ca88b941802b815a8180a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/442\n"
    },
    {
      "commit": "dae9022046be147c87c32d56678053b2f85cdb1a",
      "tree": "2b4551057e1e770283b71b180b29738a49215bc1",
      "parents": [
        "2ae63016844097ae1046c861e88b4d8bfb0ff43e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Mar 09 20:36:56 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "probing: Pass full struct flashchip into probes\n\nIn case we want to probe for a particular chip, we can filter the\nactual probing sequences by its properties.\n\nWe\u0027ll use `struct flashchip` internally and `struct flashprog_chip`\nwill be used only close to the libflashprog API.  This way, we can\nseparate the two later again if necessary.\n\nChange-Id: Id8b13d28fcaefee62746c9391fe86b4b3b09a428\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/441\n"
    },
    {
      "commit": "2ae63016844097ae1046c861e88b4d8bfb0ff43e",
      "tree": "522d3b5599e7ea9142f08ac3cc29c931498f7a2d",
      "parents": [
        "3d6bd5a35f94d06837e2ec6533eb3179a44bda11"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Mar 04 21:06:45 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "memory_bus: Add infrastructure for per-bus probing\n\nAll the probing functions for the traditional memory-mapped chips,\nparallel, LPC and FWH, are parameterized by additional chip proper-\nties like the chip size and feature bits like FEATURE_ADDR_SHIFTED.\nHence, we match against an extended `id_info\u0027 with chip size and\nfeature bits. For a match, all the feature bits assumed during\nprobing, need to be set for a given chip as well.\n\nChange-Id: Id5c3d8933cd6aeaf87a090b6f0798d2a5746ee17\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/440\n"
    },
    {
      "commit": "3d6bd5a35f94d06837e2ec6533eb3179a44bda11",
      "tree": "8edeec950ead06368fa6342e88300e7e626ee88b",
      "parents": [
        "10337f785ebd621b544d7f5929bb1050eb975431"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 21 15:47:21 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "memory_bus: Export functions to ad-hoc map flash\n\nWe want to avoid `struct flashctx` during probing, hence need functions\nthat work without it.\n\nChange-Id: I65aa6bc8c563816ad69db11cc4065f5412aa463c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/439\n"
    },
    {
      "commit": "10337f785ebd621b544d7f5929bb1050eb975431",
      "tree": "2efbd04d3f00fa7a71a46cd68e61ee5a142a4d1c",
      "parents": [
        "dd6e07ab3ab12346ab68f9e93f725d651a90964d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Mar 04 19:57:27 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "memory_bus: Move related declarations into new `chipdrivers/memory_bus.h`\n\nChange-Id: I2bef65de77860d049ec3d9938ae777c5f929c258\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/438\n"
    },
    {
      "commit": "dd6e07ab3ab12346ab68f9e93f725d651a90964d",
      "tree": "384798d6614b860a9cff68e3ed5fe0665f15dcad",
      "parents": [
        "47aa85c8fdf82b4e3b92dbcdfa3e4490c6782b69"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 21 17:55:26 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "memory_bus: Pass master instead of flash to .chip_read/write\n\nThere is / should be no need to know flash-chip details in a programmer\ndriver. They should only pass data around and leave the chip details to\neach chip driver.\n\nThis will allow us to probe for chips before knowing the details and as\na bonus gets rid of many `flash.h` dependencies.\n\nChange-Id: Iae78fbbd95567134da890613114999cb14c3a011\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/437\n"
    },
    {
      "commit": "47aa85c8fdf82b4e3b92dbcdfa3e4490c6782b69",
      "tree": "965bb18274b8fb44beb583b34a8a9098b4a87ad2",
      "parents": [
        "84914db6304ccd0f6f41ba7b4f6c0a83ef66e5d0"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 21 14:57:20 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "memory_bus: Turn flashbase into a par_master member `rom_base`\n\nGet rid of the global `flashbase`. Treat overrides for the `rom_base`\nsimilar to `max_rom_decode`: Gather the information in `internal_data`\nand then pass it to register_par_master().\n\nChange-Id: Ib9ed7234a849fe3550200fd602226d0036da15f0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/436\n"
    },
    {
      "commit": "84914db6304ccd0f6f41ba7b4f6c0a83ef66e5d0",
      "tree": "3aa266ba80786f3927d253e1d8ef9334c3b7c632",
      "parents": [
        "4374ba1e696c9f0d18ee86188f0a389634fd2c94"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Mar 07 17:11:28 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "Make FEATURE_LONG_RESET a proper feature bit\n\nThis will make it possible to see at runtime if a chip\nactually supports both reset methods.\n\nChange-Id: Id5fb5af743215435dfc289105bdfcc5fd739eabb\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/435\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "be42cf24728907ace7db5c572b097288485dca5c",
      "tree": "deeeaebe268b862f7fa21e2d044bafb6499f406f",
      "parents": [
        "006d08d64ba33d5400dc87e458727df615c381ef"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 21 17:40:44 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "Make flash-size limiting of atapromise a general --force feature\n\nTo allow accessing at least part of flash chips behind this size-limited\ncontroller,  the `atapromise\u0027 driver used a local function that adjusted\na chip description.  As flashprog would have bailed out earlier already,\nthis was only ever usable with the `--force\u0027 flag.\n\nThe same adjustment can be used with other programmers. Making it a glo-\nbal feature also gets rid of a driver peculiarity and removes the depen-\ndency on `flashctx` in the `atapromise\u0027 driver.\n\nThe logic enforces a complete chip erase if any erase is necessary. So,\nwhile this should make part of the chip fully read/writable, content of\nthe inaccessible area will be lost on write.\n\nChange-Id: I6bce8ff7781f683b001f76154621f22bd03687bc\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/431\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "006d08d64ba33d5400dc87e458727df615c381ef",
      "tree": "c76c5840f8757bbf7368c1f8e60aeb75fcb4db2a",
      "parents": [
        "81deae9ff171410104a1c1840290cc4e48b2b2fc"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Mar 10 22:33:22 2026 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Jun 28 09:29:37 2026 +0000"
      },
      "message": "programmer: Move .max_rom_decode into struct master_common\n\nThis is useful information from a chipdriver perspective. It also saves\nus the open-coded tracking of the \"registered master\" in `cli_classic.c`\nright away.\n\nChange-Id: I532e9b1802184520852fe0b45650239ea252a60d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/430\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    },
    {
      "commit": "c230c69c7d4c8403859c4735241158624eade964",
      "tree": "59154a1fc4d6d3a1295bf176d43ed4a425c43c96",
      "parents": [
        "06e0264aa076bb9359274692850bf9010a1fe5c7"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Oct 26 01:16:23 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add remaining Puya PY25Q..H 3.3V parts\n\nThe remaining chips use 32-bit addresses (4BA). They seem to support\nthe maximum of fast-read commands, also in QPI/4BA mode.\n\nDatasheets used:\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25Q256HB_Datasheet_V1.3.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25R256HB_Datasheet_V1.0.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25F256HB_Datasheet_V1.2.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25Q512HB_Datasheet_V1.2.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25F512HB_Datasheet_V1.2.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25Q01GHB_Datasheet_V1.2.pdf\n\nChange-Id: I2ace2734d9dcf0920fb12f607d57fc419db8563e\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/296\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "06e0264aa076bb9359274692850bf9010a1fe5c7",
      "tree": "c72b5d6086fe5de5c64730bdcc144521c7099d58",
      "parents": [
        "fe21b43203c08f597c1295dba556323e63b3f209"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Oct 26 00:46:11 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Puya PY25Q..H family up to PY25Q128H\n\nThese are all the 3.3V parts of the family  with only 24-bit\naddresses (3BA). First two (PY25Q40HB, PY25Q80HB) don\u0027t have\na configuration register and no WPS bit.  From PY25Q64HA on,\nthe voltage range starts from 2.7V (instead of the 2.3V they\nhad before). There are versions with fixed quad-enable bits.\nAlas, they use different IDs,  so we need duplicate database\nentries again.\n\nDatasheets used:\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25Q80HB_Datasheet_V1.7.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25Q16HB_Datasheet_V1.6.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25Q32HB_Datasheet_V1.7.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25Q64HA_Datasheet_V1.9.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25F64HA_Datasheet_V1.1.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25Q128HA_Datasheet_V2.0.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25R128HA_Datasheet_V1.0.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/PY25F128HA_Datasheet_V1.2.pdf\n\nChange-Id: I9f97e686604cf722af36c799dc0c5c1e7e942a26\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/295\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "fe21b43203c08f597c1295dba556323e63b3f209",
      "tree": "05161bf0efd4ca85f8483a92d8d014e457332c67",
      "parents": [
        "1c5d8296f9997e6b773352688fce59c24c1aafd5"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Oct 25 23:51:05 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add remaining P25Q..H family 3.3V chips\n\nThey all support QPI, and WPS for individual sector protection.\nHowever,  the original P25Q32H and P25Q64H have a different de-\nfault setting for the dummy cycles in QPI mode. Hence, we need\nduplicate database entries once more.\n\nDatasheets used:\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q32H_Datasheet_V1.4.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q32SH_Datasheet_V1.9.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q64H_Datasheet_V1.4.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q64SH_Datasheet_V1.5.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q128H_Datasheet_V1.6.pdf\n\nChange-Id: I700747a6bc1762f113846aa62f55681fa2c8cfbb\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/294\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "b0cae5e30ef780f73b89b8c4ff43c651a3612698",
      "tree": "6321ef6d3dbe4140a4094bb63f26fe66dd26d6b3",
      "parents": [
        "b09136b0971913cf7f984355c1005f65575aba44"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Oct 25 23:03:40 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Puya P25Q06H, P25Q11H, P25Q21H 3.3V parts\n\nThese look like an update to  the original quad-i/o chips. They\nhave a configuration register that is read/written like a third\nstatus register. Otherwise, they seem very much compatible, but\nhave different IDs.\n\nDatasheet used:\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q21H_11H_06H_Datasheet_V2.1.pdf\n\nChange-Id: I984c574bcfd7275a2234c1db13935c01d12fab72\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/292\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "b09136b0971913cf7f984355c1005f65575aba44",
      "tree": "c11416105bf9ff3bb8a8a8b2a1ade79f9e63278c",
      "parents": [
        "ed8b82c17e285de43437325fe7c402186719da8c"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Oct 25 22:52:30 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Puya P25Q05..16H 3.3V parts\n\nAll quad-i/o chips with block-protection similar to Winbond. One\nspecialty is a page-erase operation.  At the upper end (P25Q08H,\nP25Q16H), they have a configuration register that is read like a\nthird status register however written like a second (31h, accor-\nding to the datasheets).\n\nDatasheets used:\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q40H_20H_10H_05H_Datasheet_V2.0.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q80H_Datasheet_V1.7.pdf\nhttps://www.puyasemi.com/download_path/%E6%95%B0%E6%8D%AE%E6%89%8B%E5%86%8C/Flash/P25Q16H_Datasheet_V2.1.pdf\n\nChange-Id: I8ca43d19603cd11fd9cf06d2afc930b1096548d3\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/291\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "ed8b82c17e285de43437325fe7c402186719da8c",
      "tree": "e252a99cb8978e5fc27eda846dc8c92de9058024",
      "parents": [
        "4a351349eb0e2156adc06cb628f4db64d7857d40"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Oct 22 00:12:03 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Fudan FM25Q128 3.3V part\n\nThis chip has non-volatile DC bits that control the number of dummy\ncycles for all fast-read commands in all modes. As we don\u0027t check\nsuch bits, we don\u0027t enable any fast reads for now. Otherwise it\nlooks well featured. Block protection seems to follow Winbonds\nscheme, however without SEC and SRL bits.\n\nDatasheet used:\nhttp://eng.fmsh.com/nvm/FM25Q128_ds_eng.pdf\n\nChange-Id: I9cda2fdbc13c20eda999555d09c9a847d0192536\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/290\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "7f7bffa8b4c71d0cf652d94c1386284cdd5a012a",
      "tree": "01c190da882dd96fd5563396a8dba41039ae8ba8",
      "parents": [
        "c591518dca2c097d907787858d177707158bc10e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Oct 21 23:57:11 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Fudan FM25Q64, update FM25Q08..Q32\n\nFor all bits that matter to us,  these chips seem to have the same\nstatus-register layout. The FM25Q64 differs in a few bits that are\nout-of-scope, and additionally supports a WRSR2.\n\nDatasheets used:\nhttp://eng.fmsh.com/nvm/FM25Q08_ds_eng.pdf\nhttp://eng.fmsh.com/nvm/FM25Q16_ds_eng.pdf\nhttp://eng.fmsh.com/nvm/FM25Q32_ds_eng.pdf\nhttp://eng.fmsh.com/nvm/FM25Q64_ds_eng.pdf\n\nChange-Id: I820ed60366d19ab4d87f8c02b4018ffb5591ca5f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/288\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "c591518dca2c097d907787858d177707158bc10e",
      "tree": "0bdc1e5ece5d1fc5935c50f845a82a928723ea71",
      "parents": [
        "fea6e16e177fc7a9fd5acd75f812272bcadab163"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Oct 21 23:40:10 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Fudan FM25Q02/Q04 3.3V parts\n\nThese smallest two in the series seem to have the same status-\nregister layout. They look almost feature-complete, with only\na SEC-bit missing.\n\nDatasheets used:\nhttp://eng.fmsh.com/nvm/FM25Q02_ds_eng.pdf\nhttp://eng.fmsh.com/nvm/FM25Q04_ds_eng.pdf\n\nChange-Id: Ic267ddd2b33b63e72ad923f2bbe0af29aaa6bf93\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/287\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "fea6e16e177fc7a9fd5acd75f812272bcadab163",
      "tree": "1a00a179b4076d6b6e885f47547b439c5c87b64d",
      "parents": [
        "56d727e3829923c01b21d4f8d2a281acbb2c83bf"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 20 23:11:57 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Winbond W25Q16JV_M (DTR version)\n\nFully featured 3.3V version of Winbond\u0027s 16Mbit chip.\n\nDatasheet used:\nhttps://www.winbond.com/resource-files/w25q16jv_dtr%20reve%2002092018%20plus.pdf\n\nChange-Id: I3150b4690c73c1118b6819b83b9dfab55ddf3c8f\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/286\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "c64a80362eabce9bbdc44c79b9d2fbd1e77389c2",
      "tree": "14a32474129ea9057efa2c3c471b6267edad21ca",
      "parents": [
        "46e42096032e85265b0740b47c86f4975cf365ef"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 20 19:14:19 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add XTX Tech. XT25F..B 3.3V family\n\nThese are old versions of the 3.3V family, that don\u0027t seem to be\nmanufactured anymore.  Except for the smallest 16Mbit chip, they\nhave QPI support which newer versions lack. The block-protection\nseems to follow Winbond\u0027s model.\n\nDatasheets used:\nhttps://xonstorage.blob.core.windows.net/pdf/xtx_xt25f16bsoigu_xonjuly20_20_link.pdf\nhttps://www.lcsc.com/datasheet/lcsc_datasheet_2410121518_XTX-XT25F32BSOIGU-S_C558851.pdf\nhttps://www.lcsc.com/datasheet/lcsc_datasheet_2411220126_XTX-XT25F64BSSIGU_C3202692.pdf\nhttps://www.lcsc.com/datasheet/lcsc_datasheet_2410121527_XTX-XT25F128BSSIGU_C558845.pdf\n\nChange-Id: Ifc5607674fabf1466155d821e7d5e88886d3b21b\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/284\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "46e42096032e85265b0740b47c86f4975cf365ef",
      "tree": "c4d77e4da37ec5b45fc3aafdff84c5c5a76c8095",
      "parents": [
        "6bc88e72d97a140cf657571a2f4a4f3e1c643954"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 20 18:21:43 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add XTX Tech. XT25F02E/04D/08B 3.3V parts\n\nThese are old chips with rather limited capabilities. Their\nblock-protection ranges are rather special, hence not added\nat the moment.\n\nDatasheets used:\nhttps://en.xtxtech.com/download/?AId\u003d118\nhttps://en.xtxtech.com/download/?AId\u003d136\nhttps://en.xtxtech.com/download/?AId\u003d51\n\nChange-Id: I28ec5087be63b394b0f387ca01e2391823680272\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/283\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "6bc88e72d97a140cf657571a2f4a4f3e1c643954",
      "tree": "58bb0483d5951b1648707ff651a318ffe27b7623",
      "parents": [
        "3cddff471a7c5ada2770bd5c3e928e85fe2d037d"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 20 16:32:08 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Boya/BoHong BY25Q32/64/128 3.3V variants\n\nAdd all remaining 3BA, 3.3V parts of the BY25Q family. Once more,\ndatasheets look very similar.  The whole family supports volatile\nstatus-register writes, three status registers, and all the usual\ndual- and quad-i/o instructions.  Also, they use the common, Win-\nbond-like block protection bits.\n\nDatasheets used:\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q32BS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q32CS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q32ES.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q64AS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q64ES.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q128AS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q128ES.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q128FS.pdf\n\nChange-Id: Iff9c0459d215669025bc2af8b619fcf17c56f528\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/282\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "3cddff471a7c5ada2770bd5c3e928e85fe2d037d",
      "tree": "2a2b5b44965fbbf695ee172d9bd0ac032b841fb5",
      "parents": [
        "34e3de6f9e89801eb34927bc372a084e934042f2"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 20 15:18:53 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Complete Boya/BoHong BY25D family\n\nExcept for the sizes, the datasheets look the same. All chips support\ndual-output fast reads.  There is some overlap with the BY25Q family,\nbut given the small sizes (2MiB max.), it doesn\u0027t seem worthwhile to\nadd additional entries for these chips.\n\nThe block protection of the BY25Ds is rather peculiar, hence not con-\nfigured:  It looks like hardcoded CMP\u003d1, SEC\u003d1 with 8KiB sectors and\nno 32KiB limit.\n\nDatasheets used:\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25D05AS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25D10AS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25D20AS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25D40AS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25D40ES.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25D80AS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25D16AS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q80BS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q80ES.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q16BS.pdf\nhttp://en.boyamicro.com/download/SPI_NOR_Flash/BY25Q16ES.pdf\n\nChange-Id: Ie3f8578c152fcedd3ccb60873018d92e1dc80876\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/281\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "34e3de6f9e89801eb34927bc372a084e934042f2",
      "tree": "11a9b565564d0290c0cacd20f18e89313ceceaf9",
      "parents": [
        "f050370395afb0f4658458697984075dce551123"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Oct 20 13:00:12 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add Zetta Device ZD25LQ64/128 1.8V parts\n\nDatasheets for both look very much the same. Block protection and\nQPI implementations seem to follow Winbond.\n\nDatasheets used:\nhttp://www.zettadevice.com/upload/file/pdf/DS_Zetta_25LQ64_RevA_20180801.pdf\nhttp://www.zettadevice.com/upload/file/20150821/DS_Zetta_25LQ128_RevA_20180815.pdf\n\nChange-Id: Iea8c4076105910b4e0975b02a92f287ded745eae\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/280\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "d4e41d353604cb19938305590efbc81642152422",
      "tree": "50d1ec87c227b58de5c56723bfb86b6c09b1e305",
      "parents": [
        "04c1cf789b0468de5fd1368469d90b6fc75b3c46"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Oct 18 14:59:54 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Feb 23 12:05:52 2025 +0000"
      },
      "message": "flashchips: Add SST26VF080A\n\nSimple 8Mbit SPI flash, with one caveat though: SFDP reports 0xd8 as\nboth 32KiB and 64KiB eraser.  The datasheet[1] lists this too in the\nSFDP table,  however otherwise consistently states that erase blocks\nare uniform, and lists 0x52 as the 32KiB eraser.  For now, we\u0027ll try\nthe latter.\n\n[1] https://ww1.microchip.com/downloads/aemDocuments/documents/MPD/ProductDocuments/DataSheets/SST26VF080A-2.5V-3.0V-8-Mbit-Serial-Quad-IO-%28SQI%29-Flash-Memory-20006203C.pdf\n\nChange-Id: I7d66ff23ef9ded7365e9c75a1aff0a68678a4ba0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/263\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n"
    },
    {
      "commit": "6ce26a72f721461d3de48c12cd1dc09a96b5519c",
      "tree": "7ca4f4b528dd04b73af42d05b721d4c30c00ca7a",
      "parents": [
        "612519b2c54a008744891540407f2c8ff251083d"
      ],
      "author": {
        "name": "Alexandru M Stan",
        "email": "ams@frame.work",
        "time": "Fri Oct 11 22:47:24 2024 -0700"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 14:00:40 2024 +0000"
      },
      "message": "flashchips: add Winbond W25R512NW / W74M51NW\n\nI used W25Q256JW as a template and just increased every erase size\ncalculation.\n\nDatasheet can be found by form contact only via\nhttps://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/?__locale\u003den_TW\u0026partNo\u003dW25R512NW\n\nI tested it by running:\ndd if\u003d/dev/urandom of\u003d/tmp/random.bin bs\u003d1M count\u003d64\nsudo /tmp/flashrom/build/flashrom -p ft2232_spi:type\u003d2232H -w /tmp/random.bin --progress\nsudo /tmp/flashrom/build/flashrom -p ft2232_spi:type\u003d2232H -v /tmp/random.bin\nAnd I saw \"Verifying flash... VERIFIED.\"\n\nChange-Id: Ibf670e4014a22e4636789768b759cb51f75cd046\nSigned-off-by: Alexandru M Stan \u003cams@frame.work\u003e\nOriginal-Reviewed-on: https://review.coreboot.org/c/flashrom/+/84752\nOriginal-Reviewed-by: Anastasia Klimchuk \u003caklm@chromium.org\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/272\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "612519b2c54a008744891540407f2c8ff251083d",
      "tree": "f264bf5339ab332436dfd9acaa86d76b7492c1cf",
      "parents": [
        "d5a61efe4e73675570eba7d537b4ec7e476946cb"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Nov 06 23:37:11 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Add Intel Arrow Lake support\n\nARL looks much like a desktop version of Meteor Lake. Hardware registers\nseem to be the same, and the descriptor mostly differs in strap settings\n(as far as we are concerned).\n\nOdd enough, the old (pre 500 series) format for processor straps is used\nagain. For the descriptor detection, we shuffle the old default for Ibex\nPeak around, and make Arrow Lake the default for everything with over 80\nPCH traps.\n\nTested `ich_descriptors_tool\u0027 output for a GIGABYTE Z890M GAMING X BIOS.\n\nDocuments used:\n  * Intel® Core™ Ultra 200S Series Processors Datasheet, Volumes 1 and 2\n  * Arrow Lake-S and Arrow Lake-HX Client Platform\n    SPI Programming Guide\n\nChange-Id: Ibaaeb896273eed3806561ba8c01d89770d27ff18\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/270\n"
    },
    {
      "commit": "d5a61efe4e73675570eba7d537b4ec7e476946cb",
      "tree": "615c8bc476cf847c2d0bea4f7f1f154eede67e5a",
      "parents": [
        "5e0d9b04a07f5646038020e1a45dd04c0b14e8f3"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Wed Nov 06 23:55:44 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Add Intel Lunar Lake support\n\nHardware looks much the same as Meteor Lake. The descriptor, however,\nknows 7 masters and regions are named a bit differently. Hence, add a\nnew enum entry for Lunar Lake.\n\nTested `ich_descriptors_tool\u0027 output for an MSI Prestige 13 A2VMG BIOS.\n\nDocuments used:\n  * Intel® Core™ Ultra 200V Series Processors Datasheet, Volumes 1 and 2\n  * Lunar Lake Client Platform\n    SPI Programming Guide\n\nChange-Id: Ia377872cba56a3db6d853b7ce1bd495e5a03a868\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/271\n"
    },
    {
      "commit": "5e0d9b04a07f5646038020e1a45dd04c0b14e8f3",
      "tree": "70386babe868ba7282cbbb0d8bc53880286025e8",
      "parents": [
        "0ef2eb8f041ad6918dd41f4837d39be8811889c9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 19 21:44:52 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Add Intel Meteor Lake SoC\n\nHardware looks the same as C740 series / Emmitsburg. The descriptor\nis somewhere between the latter and latest desktop platforms.\n\nOutput of `ich_descriptors_tool\u0027 with an image from Google/Rex looks\nreasonable.\n\nTested probing and reading on a Lenovo L16 ThinkPad.\n\nDocuments used:\n  * Intel® Core™ Ultra Processor Datasheet, Volumes 1 and 2\n  * Meteor Lake/Arrow Lake-U / H Client Platform\n    SPI Programming Guide\n\nChange-Id: I7f1d162622a141fadcad715b064f92b1ccf7c72a\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/189\n"
    },
    {
      "commit": "0ef2eb8f041ad6918dd41f4837d39be8811889c9",
      "tree": "978d212a6cc5031e589162c49a36e4353e91c937",
      "parents": [
        "42daab10a7704bfbe4a0af1a07748b8858649301"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Fri Jul 19 21:38:17 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Add Intel Snow Ridge SoC\n\nHardware looks the same as C740 series / Emmitsburg. The descriptor,\nhowever, has very different frequency settings and different regions\nand masters.\n\nThe output of `ich_descriptors_tool\u0027 tested with an image from Intel\nlooks reasonable.\n\nChange-Id: I9f9dc4414af63cbe48d22ef2955df28e297d7e4c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/188\n"
    },
    {
      "commit": "42daab10a7704bfbe4a0af1a07748b8858649301",
      "tree": "9a9aa5465db9f58aa9d0c55f9807a2f694a98e05",
      "parents": [
        "af26008fbabdd780bc6966acca4ad2481520b304"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Tue Jul 16 00:27:27 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ichspi: Properly add Emmitsburg PCH\n\nThe Emmitsburg or C740 series PCH is actually ahead of all the other,\ncurrently supported chipsets. Finally, Intel added new registers that\ncarry the read and write access permissions for all 16 regions.\n\nThe old FRAP register seems to be still around, so we print both new\nand old registers. For the detailed report we use the new registers,\nthough.\n\nWe also adapt the descriptor detection slightly: We check for `NM \u003d\u003d 6`\njust like we did for Lewisburg. This way we won\u0027t treat a huge range of\nISL (ICH/PCH strap length) values as Emmitsburg, which should result in\nless false positives.\n\nThe output of `ich_descriptors_tool\u0027 tested on some Supermicro firmware\nlooks reasonable.  Also tested read/erase/write in `swseq\u0027 and  `hwseq\u0027\nmodes with 7 series PCH, reading with ADL-P. All logs still report FRAP\nsettings correctly.\n\nChange-Id: Ibf5ebe2e2edfe5e5ae26bf1136648bf6354b0aa9\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/187\n"
    },
    {
      "commit": "b3cc2c6d3b39cc3c97d4130257b805a152a79b4c",
      "tree": "a8175496af3d776dcd5b528a045bc8853d5f3455",
      "parents": [
        "8e4151ddb5b4533aa004594e5009ad92159b0651"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Mon Jul 15 00:45:17 2024 +0200"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 10 13:58:05 2024 +0000"
      },
      "message": "ich_descriptors: Unify pretty printing of PCH100+ masters\n\nThe newer platforms mostly differ in names and numbers of masters and\nregions.  Make that obvious, and write a generic printing loop. Hope-\nfully this will make future additions easier.\n\nChange-Id: I3e616064743e9558f799159ef8b702f2bbd8ec89\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/182\nReviewed-by: Angel Pons \u003cth3fanbus@gmail.com\u003e\n"
    },
    {
      "commit": "8f7122cd1183a4224b14131483d549df497b22a6",
      "tree": "29a124ddc5e06cab3eb3f4f71d4b21b2f642c04d",
      "parents": [
        "eed122d401a9da5fb438e73e8c7d905092481110"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:28:33 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add new write-protect CLI\n\nAdd a new write-protect CLI that is based on the classic-CLI feature\nin flashrom/master. The syntax is slighty different: With the new\nCLI wrapper, we can either call it as `flashprog write-protect` or\n`flashprog wp`. To keep the CLI code clean, we allow only one write-\nprotection operation per call.\n\nFor instance, the write-protection status can then be queried like\nthis:\n\n  $ flashprog wp status -p ch341a_spi\n\nChange-Id: I32818b58c9db939719913fc63063c41a27876554\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72991\n"
    },
    {
      "commit": "eed122d401a9da5fb438e73e8c7d905092481110",
      "tree": "6c6f292ec515f21aab5b78db29b197004b2b918b",
      "parents": [
        "1f693db7ecb074c42172a3914ed63f4e08de7560"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 02:05:07 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "layout: Implement flashprog_layout_get_region_range()\n\nSimilar to the function found in flashrom/master, implement a\nlibflashprog API to query the range of a layout region.\n\nChange-Id: Idb3b1a4d24a34847102d66ee0e2cb4d93ae99eac\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72990\n"
    },
    {
      "commit": "1f693db7ecb074c42172a3914ed63f4e08de7560",
      "tree": "a76bbbbd7bed2281f677bef1b2e3ce957e63ecb1",
      "parents": [
        "85c2cf81ffae0d1ef65d25652dd5422162d38187"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:28:33 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add new `config\u0027 CLI for status/config registers\n\nAdd a new CLI mode to query and update status and configuration\nregisters of SPI NOR chips.  Programmer initialization and chip\ninitialization works the same as with the classic CLI (`-p\u0027 and\n`-c\u0027 options). There are two commands `get\u0027 and `set\u0027 where the\nformer is implied if no command is given. For a start, only the\n`quad-enable\u0027 bit can be accessed  (for chips that advertise it\nin the database).\n\nThe `--temporary\u0027 option  allows to use a volatile write status\nregister command if the flash chip supports it. So changes made\nwith this option will not be written to flash and are lost when\nthe chip is reset.\n\nFor instance, the quad-enable bit can then be queried like this\n\n  $ flashprog config get -p ch341a_spi quad-enable\n\nor written with\n\n  $ flashprog config set -p ch341a_spi quad-enable 1\n\nor\n\n  $ flashprog config set -p ch341a_spi --temporary quad-enable 1\n\nChange-Id: I6b9d26c67e6ad65be5df367d2db7942bb98f27ac\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/195\n"
    }
  ],
  "next": "85c2cf81ffae0d1ef65d25652dd5422162d38187"
}
