)]}'
{
  "commit": "a1b7f3521f66a19a2d4c9a6a373c5a7ab36e1473",
  "tree": "fd996296810ab45fe99d29d8dc254f6d496f3091",
  "parents": [
    "008a44fa1c33b8a77c90b4e9dba267ae23c01056"
  ],
  "author": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Mon Mar 25 18:32:11 2024 +0100"
  },
  "committer": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Mon Jul 22 10:08:47 2024 +0000"
  },
  "message": "dediprog: Implement multi-i/o reads\n\nThis implements i/o-mode switches and opcode handling for multi-i/o\nreads with protocol versions 2 and 3. The mode switching is done by\na simple command  that takes an enum just as our internal `io_mode`\nas argument.\n\nThe opcode handling differs between protocol versions. For protocol\nv2, we keep the current behavior for single-i/o operations and only\nset the matching opcode. Tests with an SF600Plus-G2 have shown that\nthe programmer automatically chooses the address length  and number\nof dummy cycles. It is unknown, however,  if it chooses these para-\nmeters based on the opcode or the configured i/o mode. For dual-out\nreads,  it seems to choose the wrong number of dummy cycles. Hence,\nwe mask the respective support bit for the v2 case.\n\nFor protocol v3,  a new `read mode\u0027 was discovered in traces of the\nDediprog Windows application.  It allows to explicitly specify  the\nopcode, the address length, and the number of dummy cycles. We call\nthis READ_MODE_CONFIGURABLE. As this is the only way to make use of\nthe additional command bytes of the v3 protocol, we can assume that\nthis mode always works with v3.\n\nFor partial reads, i.e. not multiples of 512B blocks,  that have to\ngo through dediprog_spi_send_command(),  we temporarily disable the\nchosen `.spi_fast_read` function. This is necessary, because multi-\nio is not supported on this path.\n\nWe enable dual i/o by default for protocol v3 devices. This should\nwork out of the box with many compatible flash chips. The command-\nline logic is a little convoluted this way,  but can be refactored\nonce protocol v2 devices are tested.\n\nChange-Id: Ib07b1b61eccc19c7ead9f64c980b37feabfa70a8\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/114\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b8cc2317f3030e0b4ce712c1cf191617b4d6c160",
      "old_mode": 33188,
      "old_path": "dediprog.c",
      "new_id": "43d8b844ad06d571b7f903134c0c941545a140a6",
      "new_mode": 33188,
      "new_path": "dediprog.c"
    },
    {
      "type": "modify",
      "old_id": "70e21af517ab4aec1e63381b8f429e4bd788d716",
      "old_mode": 33188,
      "old_path": "flashprog.8.tmpl",
      "new_id": "c8f35d7c266d7c2f38cefce4c80c8ac43fa598ac",
      "new_mode": 33188,
      "new_path": "flashprog.8.tmpl"
    },
    {
      "type": "modify",
      "old_id": "b0daeeeb2079d018d77835623480e0545cb0cb68",
      "old_mode": 33188,
      "old_path": "include/spi_command.h",
      "new_id": "3af0cd0169c9eae5a5b16b1fac211908516a83f1",
      "new_mode": 33188,
      "new_path": "include/spi_command.h"
    },
    {
      "type": "modify",
      "old_id": "edcaf486ccd075257bc51648c51fd360eccadd88",
      "old_mode": 33188,
      "old_path": "spi25.c",
      "new_id": "34f30dff2234af03df1d0ac1d39c61dc32a6b21a",
      "new_mode": 33188,
      "new_path": "spi25.c"
    }
  ]
}
