Files
RedBear-OS/drivers/usb
Red Bear OS c89af69d08 USB: P6-C isochronous transfer support — remove ENOSYS, add Trb::isoch()
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).
2026-07-07 14:55:03 +03:00
..