c89af69d08
Cross-referenced with Linux 7.1 drivers/usb/host/xhci-ring.c xhci_queue_isoc_tx() (lines 4055-4317). trb.rs: - Trb::isoch() — constructs Isoch Transfer TRBs (type=6). Parameters: buffer, len, cycle, td_size, interrupter, isp, chain, ioc, tlbpc (Transfer Last Burst Packet Count, bits 16-19), sia_frame_id (Schedule In Advance / Frame ID, bits 20-31). TLBPC=1 default (one packet per burst), SIA=0 default (controller decides scheduling). ISP set for IN endpoints. scheme.rs: - Removed ENOSYS gate on isoch endpoints (~line 1704). - transfer() branches on is_isoch: uses trb.isoch() for isoch endpoints, trb.normal() for bulk/interrupt. - bytes_transferred: for isoch, uses buffer length directly (event.transfer_length() carries Frame ID, not remaining bytes per xHCI spec §4.15.2 Transfer Event TRB). - Error recovery: isoch codes (IsochBuffer, RingUnderrun, RingOverrun, MissedService) fall through to no-retry in maybe_recover_transfer_error — correct, isoch never retries. This unblocks USB Audio Class (P6-C) and the redbear-usbaudiod real driver (last remaining P1-D stub).