)]}'
{
  "log": [
    {
      "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": "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": "1f693db7ecb074c42172a3914ed63f4e08de7560",
      "tree": "a76bbbbd7bed2281f677bef1b2e3ce957e63ecb1",
      "parents": [
        "85c2cf81ffae0d1ef65d25652dd5422162d38187"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:28:33 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add new `config\u0027 CLI for status/config registers\n\nAdd a new CLI mode to query and update status and configuration\nregisters of SPI NOR chips.  Programmer initialization and chip\ninitialization works the same as with the classic CLI (`-p\u0027 and\n`-c\u0027 options). There are two commands `get\u0027 and `set\u0027 where the\nformer is implied if no command is given. For a start, only the\n`quad-enable\u0027 bit can be accessed  (for chips that advertise it\nin the database).\n\nThe `--temporary\u0027 option  allows to use a volatile write status\nregister command if the flash chip supports it. So changes made\nwith this option will not be written to flash and are lost when\nthe chip is reset.\n\nFor instance, the quad-enable bit can then be queried like this\n\n  $ flashprog config get -p ch341a_spi quad-enable\n\nor written with\n\n  $ flashprog config set -p ch341a_spi quad-enable 1\n\nor\n\n  $ flashprog config set -p ch341a_spi --temporary quad-enable 1\n\nChange-Id: I6b9d26c67e6ad65be5df367d2db7942bb98f27ac\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/195\n"
    },
    {
      "commit": "85c2cf81ffae0d1ef65d25652dd5422162d38187",
      "tree": "0227041853e65605f3464240ac48c435a724edbd",
      "parents": [
        "24c0977a70cf5e135434dad466024505f8965f66"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 02 13:47:06 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Implement \"command\" option parser\n\nAdd a new helper getopt_command() that works like a POSIX-compliant\n(i.e. no `argv` permutating) getopt_long(),  except that it doesn\u0027t\nsearch for options with a `--\u0027 prefix but those without.\n\nChange-Id: I18b63ee4e5b523e2f4cfcd0c8764ea9353927236\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/268\n"
    },
    {
      "commit": "24c0977a70cf5e135434dad466024505f8965f66",
      "tree": "c219d3dbad6ebdc697bcfa3923772a497e7bb62e",
      "parents": [
        "b82aadcbbf173fcaf6c93c7d8cc664bf33b0dd21"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Nov 02 13:46:21 2024 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add print function for generic CLI options\n\nChange-Id: I3d5d73c6184dd65c9eacbb2f69c6e1a565d41ab0\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/267\n"
    },
    {
      "commit": "b82aadcbbf173fcaf6c93c7d8cc664bf33b0dd21",
      "tree": "f2038c52d252f78ee97adaf56d614b10eb92884f",
      "parents": [
        "a705043179ab641794f497c2ebf6a60d7f3d9b3e"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:27:30 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Move some declarations into `cli.h`\n\nThis will help to keep new CLIs clean from internal headers.\n\nChange-Id: I3e5515ae5645fcdce56c13df1ff23de829bbbdb9\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72989\n"
    },
    {
      "commit": "a705043179ab641794f497c2ebf6a60d7f3d9b3e",
      "tree": "1ade082eb16bd84ba9685fe4a1c7275b47e2561d",
      "parents": [
        "d39c7d6ca6d7adacc07b98e4d0e3efe476d649e6"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 18:01:26 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Add a new CLI wrapper\n\nThis new CLI wrapper introduces a command mode,  like we are used from\nGit for instance. The first argument specifies the command mode, which\nis `prog` for the classic flashprog CLI.  As an alternative to a first\nargument,  it can be called as `flashprog-cmd`, `flashcmd`, or `fcmd`,\nvia symbolic links for instance. Splitting CLI functions will allow us\nto add more CLI features, that can be developed independently from the\nclassic CLI.\n\nFor instance, flashprog could then be called like this:\n\n  $ flashprog -p ch341a_spi\n  $ fprog -p ch341a_spi\n\nFor the future \"config\" CLI, more aliases are possible, e.g.:\n\n  $ flashprog config -p ch341a_spi\n  $ flashprog-config -p ch341a_spi\n  $ flashcfg -p ch341a_spi\n  $ fconfig -p ch341a_spi\n\nChange-Id: I98cb110b47ebce52daf2e0972fc4565ef9d40242\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72988\n"
    },
    {
      "commit": "d39c7d6ca6d7adacc07b98e4d0e3efe476d649e6",
      "tree": "f8b3a36e914800b81b1b314e781b20e95e768736",
      "parents": [
        "df6ce9ff64e5e005ddd51353e519ec87388e47d9"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:53:08 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract basic CLI init into cli_common\n\nMove the first initialization steps (log callback setting,\nversion/banner printing, and libflashprog init) into a new\nfunction cli_init(). This will be shared by other CLIs.\n\nChange-Id: I9f19006aac18ffcdc05159957d58a2668c41e2b1\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72987\n"
    },
    {
      "commit": "df6ce9ff64e5e005ddd51353e519ec87388e47d9",
      "tree": "a1baf7268de195c3c4f21de183b3dc9c870ba034",
      "parents": [
        "0da839bac81da604cc7102c4dabf97efb6bda57c"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 16:16:04 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract log argument parsing into cli_common\n\nMove log argument parsing into `cli_common.c` as it\u0027s also useful for\nother CLIs. Also add a NULL-check for the strdup() return value.\n\nChange-Id: I9b1c9ae2e490edd3560b11b84fddd79e4d396e1d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72986\n"
    },
    {
      "commit": "0da839bac81da604cc7102c4dabf97efb6bda57c",
      "tree": "bce2cb7a129f42b86402ae2e4fd4523704238ff6",
      "parents": [
        "d91822a91d179e0b27629341a3d1a436110b8028"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 01:40:07 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract layout argument processing\n\nMove the processing of layout arguments (i.e. actual reading\nof layout files / data from flash) into a shared function,\ncli_process_layout_args().\n\nThis changes the sequence in `cli_classic.c` slightly: A layout\nfile is now read and parsed after the programmer init / chip\nprobing.\n\nChange-Id: Ibb6574a27bcabc923a53ec355afd384da0665e4c\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72985\n"
    },
    {
      "commit": "d91822a91d179e0b27629341a3d1a436110b8028",
      "tree": "cc466b329f29b6ca819b9b059c67419fc0c087d1",
      "parents": [
        "e7899a9c40624eab4cd68595fbcaed91c0ace29a"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:43:54 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract layout argument parsing into cli_common\n\nMove the parsing logic for layout sources into the new function\ncli_parse_layout_args(). This way it can be shared with other CLIs.\n\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\n\nChange-Id: Idcbb136d31477cdb0aebec4af0c4cbc873f26011\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72984\nTested-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-by: Nico Huber \u003cnico.h@gmx.de\u003e\n"
    },
    {
      "commit": "e7899a9c40624eab4cd68595fbcaed91c0ace29a",
      "tree": "6a330fcc1fb75b8c9112994c16698ba758d41c54",
      "parents": [
        "34e783ad1d2fded9fecef4c623d95ad96ee6dada"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:39:47 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Move all long-option keys into cli.h\n\nGather all long-option key values in `cli.h` so we can have a single\nenum that counts the numbers up and thus provides unique values.\n\nChange-Id: Id9fb27b442308ee7a7d59282f6db1f8f18ef20f2\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72983\n"
    },
    {
      "commit": "34e783ad1d2fded9fecef4c623d95ad96ee6dada",
      "tree": "bf713cf732a504a0aa2018b46e9f44699bb5c51a",
      "parents": [
        "e68b08b386631f5a44dfa30bf437e0b4dfdd3350"
      ],
      "author": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sat Feb 11 00:30:27 2023 +0100"
      },
      "committer": {
        "name": "Nico Huber",
        "email": "nico.h@gmx.de",
        "time": "Sun Nov 03 17:54:48 2024 +0000"
      },
      "message": "cli: Extract flash argument parsing into cli_common\n\nMove the parsing logic for `-c` and `-p` into the new function\ncli_parse_flash_args(). This way it can be shared with other CLIs.\n\nWe start a new header file `cli.h` for common CLI functions.\n\nChange-Id: If3f5eff0a2f56a1235038b19b3c1d6586536fd5d\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/72982\n"
    }
  ]
}
