STRUCT DWC3_EP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay bestie, welcome to the struct dwc3_ep(9) page from the Kernel API Manual ✨ This is the device side endpoint representation β€” literally the struct vibe for a DWC3 endpoint, no cap 🫢


✨ SYNOPSIS ✨

Here's the whole struct, copied exactly because we do not mess with code, periodt:

       struct dwc3_ep {
           struct usb_ep           endpoint;
           struct delayed_work     nostream_work;
           struct list_head        cancelled_list;
           struct list_head        pending_list;
           struct list_head        started_list;
           struct dwc3_trb         *trb_pool;
           dma_addr_t trb_pool_dma;
           struct dwc3             *dwc;
           u32 saved_state;
           unsigned int            flags;
         #define DWC3_EP_ENABLED                 BIT(0);
         #define DWC3_EP_STALL                   BIT(1);
         #define DWC3_EP_WEDGE                   BIT(2);
         #define DWC3_EP_TRANSFER_STARTED        BIT(3);
         #define DWC3_EP_END_TRANSFER_PENDING    BIT(4);
         #define DWC3_EP_PENDING_REQUEST         BIT(5);
         #define DWC3_EP_DELAY_START             BIT(6);
         #define DWC3_EP_WAIT_TRANSFER_COMPLETE  BIT(7);
         #define DWC3_EP_IGNORE_NEXT_NOSTREAM    BIT(8);
         #define DWC3_EP_FORCE_RESTART_STREAM    BIT(9);
         #define DWC3_EP_STREAM_PRIMED           BIT(10);
         #define DWC3_EP_PENDING_CLEAR_STALL     BIT(11);
         #define DWC3_EP_TXFIFO_RESIZED          BIT(12);
         #define DWC3_EP_DELAY_STOP             BIT(13);
         #define DWC3_EP_RESOURCE_ALLOCATED      BIT(14);
         #define DWC3_EP0_DIR_IN                 BIT(31);
           u8 trb_enqueue;
           u8 trb_dequeue;
           u8 number;
           u8 type;
           u8 resource_index;
           u32 frame_number;
           u32 interval;
           char name[20];
           unsigned direction:1;
           unsigned stream_capable:1;
           u8 combo_num;
           int start_cmd_status;
        };

πŸŽ€ Members πŸŽ€

  • endpoint β€” usb endpoint πŸ’…
  • nostream_work β€” work for handling bulk NoStream
  • cancelled_list β€” list of cancelled requests for this endpoint
  • pending_list β€” list of pending requests for this endpoint
  • started_list β€” list of started requests on this endpoint
  • trb_pool β€” array of transaction buffers
  • trb_pool_dma β€” dma address of trb_pool
  • dwc β€” pointer to DWC controller
  • saved_state β€” ep state saved during hibernation
  • flags β€” endpoint flags (wedged, stalled, ...)
  • trb_enqueue β€” enqueue 'pointer' into TRB array πŸ¦‹
  • trb_dequeue β€” dequeue 'pointer' into TRB array πŸ¦‹
  • number β€” endpoint number (1 - 15)
  • type β€” set to bmAttributes & USB_ENDPOINT_XFERTYPE_MASK ⭐
  • resource_index β€” Resource transfer index
  • frame_number β€” set to the frame number we want this transfer to start (ISOC) 🌸
  • interval β€” the interval on which the ISOC transfer is started 🌸
  • name β€” a human readable name e.g. ep1out-bulk πŸŽ€
  • direction β€” true for TX, false for RX
  • stream_capable β€” true when streams are enabled
  • combo_num β€” the test combination BIT[15:14] of the frame number to test isochronous START TRANSFER command failure workaround 😭
  • start_cmd_status β€” the status of testing START TRANSFER command with combo_num = 'b00 πŸ’€

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./drivers/usb/dwc3/core.h is the plug, and these are the adjacent icons you might wanna peek at, iykyk:

  • struct dwc3_event_buffer(9)
  • struct dwc3_trb(9)
  • struct dwc3_hwparams(9)
  • struct dwc3_request(9)
  • struct dwc3_glue_ops(9)
  • struct dwc3(9)
  • struct dwc3_event_depevt(9)
  • struct dwc3_event_devt(9)
  • struct dwc3_event_gevt(9)
  • union dwc3_event(9)
  • struct dwc3_gadget_ep_cmd_params(9)
  • dwc3_mdwidth(9)

and that's the whole page, bestie 🫢 this struct dwc3_ep(9) manual comes from ./drivers/usb/dwc3, dated October 2026 β€” slay, bye πŸ’…βœ¨

πŸ“¦ where this page comes from