)]}'
{
  "commit": "044c9dc9290565ab7b9866bb26a8d077d9c3a5d7",
  "tree": "b0d6ab8fc2df6d8ff7a91a3d197e213a7ca2a320",
  "parents": [
    "fc7c13c882067b3ad7f2f5d3846d64164b8c8c87"
  ],
  "author": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Fri Dec 29 23:26:57 2023 +0100"
  },
  "committer": {
    "name": "Nico Huber",
    "email": "nico.h@gmx.de",
    "time": "Mon Jul 22 10:08:47 2024 +0000"
  },
  "message": "Add FT4222H support\n\nThe FT4222H features a very different engine compared to what we are\nused to from other FTDI USB/serial chips. It doesn\u0027t do UART (at least\nnot officially), doesn\u0027t have the MPSSE engine, but has a quad-SPI\nmaster, and SPI/I2C slave support.\n\nA few similarities exist, though, so this could probably make use of\nlibftdi in the future.\n\nThere are two config-mode straps that select one of four modes:\n0. 1 data interface + 1 GPIO interface\n1. 3 data interfaces + 1 GPIO interface\n2. 4 data interfaces\n3. 1 data interface\n\nWith multiple data interfaces, GPIO pins are muxed as additional CS\nlines. The advantage of mode 0 and 3 is that apparently a bigger buffer\nis available for the data interface. Only in these modes, it gets to\nits full speed (52.8MBps according to the datasheet[1]). The CS line is\nautomatically selected based on the USB interface used. No test using\nmultiple interfaces at once were performed, though.\n\nAll the USB commands and transfer protocols were derived from traces\ngathered with the proprietary LibFT4222. The results are summarized\nin the flashprog wiki[2].\n\n[1] https://www.ftdichip.com/old2020/Support/Documents/DataSheets/ICs/DS_FT4222H.pdf\n[2] https://flashprog.org/wiki/FT4222H\n\nChange-Id: I9ee1287e13113ccf8b5ea2be4a25866413a94844\nSigned-off-by: Nico Huber \u003cnico.h@gmx.de\u003e\nReviewed-on: https://review.sourcearcade.org/c/flashprog/+/50\nReviewed-by: Arthur Heymans \u003carthur@aheymans.xyz\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6da34587cc0ffa06f53a2683dd05687bc50be5cd",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "6d993e7bdd10c156a26284152f9fed3eb7cfabc8",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "0f1ca90a5f1beabd8639e1c8173bece30dd47ddf",
      "old_mode": 33188,
      "old_path": "flashprog.8.tmpl",
      "new_id": "70e21af517ab4aec1e63381b8f429e4bd788d716",
      "new_mode": 33188,
      "new_path": "flashprog.8.tmpl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "46fa6981cd08d51be9a5ce83230f4ce42d7d0af5",
      "new_mode": 33188,
      "new_path": "ft4222_spi.c"
    },
    {
      "type": "modify",
      "old_id": "27b9cf1e8ba4bb61be5cbb61019b8acf3ee8b9e0",
      "old_mode": 33188,
      "old_path": "helpers.c",
      "new_id": "5f2b02df8e2d8da8ef5cd471b2bc2a2aadc28968",
      "new_mode": 33188,
      "new_path": "helpers.c"
    },
    {
      "type": "modify",
      "old_id": "0f724ec2b2c8fdc7c6037b7f1aea8f665470651e",
      "old_mode": 33188,
      "old_path": "include/programmer.h",
      "new_id": "cc219be6347ec61e6d2f1399bff46bfe3f0a1aac",
      "new_mode": 33188,
      "new_path": "include/programmer.h"
    },
    {
      "type": "modify",
      "old_id": "d8be1d59baa38a2f80fcb1cd5f7fb0c68374d139",
      "old_mode": 33188,
      "old_path": "programmer_table.c",
      "new_id": "c4dd999c42266ea95227b55700e41a392af08be6",
      "new_mode": 33188,
      "new_path": "programmer_table.c"
    }
  ]
}
