)]}'
{
  "commit": "5ba9a84bd446d1b3f41a7ce895648ac088349fe6",
  "tree": "55cb0e138330b10ed795ff1d2b468e6f47d22d2a",
  "parents": [
    "8d135c96bca1fe537ebf7c98561c4e0db3d846d1"
  ],
  "author": {
    "name": "HiFiPhile",
    "email": "admin@hifiphile.com",
    "time": "Sun Oct 11 17:22:17 2026 +0200"
  },
  "committer": {
    "name": "HiFiPhile",
    "email": "admin@hifiphile.com",
    "time": "Sun Oct 11 17:22:17 2026 +0200"
  },
  "message": "ehci: add ChipIdea isochronous transfers\n\nOpt in with CFG_TUH_CHIPIDEA_ISO_ENABLE (about 2.2 KiB without hub\nsupport); the audio_host example enables it and now builds for LPC43 and\ni.MX RT. Supported: HS endpoints with up to three transactions per\nmicroframe, FS endpoints on a native FS port, and FS endpoints behind a HS\nhub through split transactions.\n\n- One outstanding transfer and one iTD/siTD per endpoint, sharing the QH\n  and qTD pools. Completion unlinks the TD before USBH gets the buffer back,\n  so the class callback can submit the next interval.\n- No SOF interrupt (ChipIdea raises one every 125 us, even on a FS port):\n  completions drive the scheduler; frame-list rollover arms TDs beyond the\n  8-frame ring, retires slots that passed unvisited and keeps the extended\n  microframe counter current. FRINDEX is rechecked just before linking, so a\n  delayed submission moves to a later slot of its phase. A TD is published\n  for the next microframe (ChipIdea caches no descriptors).\n- Missed slots, cancellation and close retire a TD only when the controller\n  cannot be on it (iso_td_idle), without stopping the periodic schedule.\n  Schedule waits are bounded; bulk/interrupt abort keeps the transfer when\n  the schedule does not stop.\n- FS behind a HS hub reserves best-effort MTT windows per hub port; split\n  code is compiled out without CFG_TUH_HUB.\n- EHCI descriptors and the frame list move to CFG_TUH_UNCACHED_MEM_SECTION\n  with barriers instead of descriptor cache maintenance.\n- Endpoint lookup by address, idempotent ISO reopen, named iTD/siTD masks.\n\nHost-driver fixtures run under CTest and pre-commit: generic EHCI, ISO\ndisabled/enabled, cached payloads and no hub. The deferred USBH abort and\nendpoint-lifetime work is recorded in docs/superpowers/followup.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fdff4f84eab380bfe5003734e3d3840745ddddaf",
      "old_mode": 33188,
      "old_path": ".pre-commit-config.yaml",
      "new_id": "60ede14a0484a4513051bdf57886fc94cdf99d0c",
      "new_mode": 33188,
      "new_path": ".pre-commit-config.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "66c523c35b97965aedff0eeca40f39b6ecff1aac",
      "new_mode": 33188,
      "new_path": "docs/superpowers/followup/pr3991-usbh-abort-lifetime.md"
    },
    {
      "type": "modify",
      "old_id": "becebd3bdd344e3ec419f8ef3d9a8dac039dd1d1",
      "old_mode": 33188,
      "old_path": "examples/host/audio_host/only.txt",
      "new_id": "81051089cd3c68bb97ee6433a014414a48965b86",
      "new_mode": 33188,
      "new_path": "examples/host/audio_host/only.txt"
    },
    {
      "type": "modify",
      "old_id": "ca3ec0e4b8356901c0569922b08778ce2cd9ce21",
      "old_mode": 33188,
      "old_path": "examples/host/audio_host/src/tusb_config.h",
      "new_id": "595f8ebe815437d8264ced6668210e6f6024c08d",
      "new_mode": 33188,
      "new_path": "examples/host/audio_host/src/tusb_config.h"
    },
    {
      "type": "modify",
      "old_id": "0d38c9dd830aefac569b8dea70fecd3cd6e38ad9",
      "old_mode": 33188,
      "old_path": "src/portable/ehci/ehci.c",
      "new_id": "ba545991f1d89b2f46e7013c2e13503bce560be6",
      "new_mode": 33188,
      "new_path": "src/portable/ehci/ehci.c"
    },
    {
      "type": "modify",
      "old_id": "9d86ed04f7e0ba1f202c53451ae57d6d7de3789f",
      "old_mode": 33188,
      "old_path": "src/portable/ehci/ehci.h",
      "new_id": "a2e23cc0b76d6a20959526696cda8722757c4d20",
      "new_mode": 33188,
      "new_path": "src/portable/ehci/ehci.h"
    },
    {
      "type": "modify",
      "old_id": "659eb9f1b9ce73794993923959c0c1dd9f182f6b",
      "old_mode": 33188,
      "old_path": "src/tusb_option.h",
      "new_id": "6242a44615824be910763ad1072326057c81d839",
      "new_mode": 33188,
      "new_path": "src/tusb_option.h"
    },
    {
      "type": "modify",
      "old_id": "ff945d8b9e1bc84681e2fa401cdc8478cb31c7d5",
      "old_mode": 33188,
      "old_path": "test/unit-test/CMakeLists.txt",
      "new_id": "74bbf9d36db3e4822cf8c232f1f7efeed9be7846",
      "new_mode": 33188,
      "new_path": "test/unit-test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "99343259d95502feff3ead77b377b7ee4d4c82db",
      "new_mode": 33188,
      "new_path": "test/unit-test/host/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "664991c5604a7089b4deaca1fd7ada4e3c6465f0",
      "new_mode": 33188,
      "new_path": "test/unit-test/host/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4a7f7506f1a46ad151f993bda8fc80c2e3519c45",
      "new_mode": 33188,
      "new_path": "test/unit-test/host/ehci/cache_stubs.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "83a4f4384c29e084279eecf54385144b6dc17411",
      "new_mode": 33188,
      "new_path": "test/unit-test/host/ehci/test_iso.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "48cfd25da4bc7f203db11d0be18b867d0cc18414",
      "new_mode": 33188,
      "new_path": "test/unit-test/host/ehci/tusb_config.h"
    }
  ]
}
