STRUCT BCM63XX_EP(9)
π struct bcm63xx_ep(9) β the Kernel API Manual, bestie edition π
okay so picture this: you're deep in the Kernel API Manual, poking at the USB gadget stack, and you meet struct bcm63xx_ep β literally the internal (driver) state of a single endpoint. one endpoint. that's it. that's the whole vibe. it's giving "main character energy" but make it a struct π
β¨ SYNOPSIS β¨
struct bcm63xx_ep {
unsigned int ep_num;
struct iudma_ch *iudma;
struct usb_ep ep;
struct bcm63xx_udc *udc;
struct list_head queue;
unsigned halted:1;
};
like, look at her. six fields. no cap, every single one matters. π«Ά
πΈ Members πΈ (the cast of characters)
ep_numβ the USB endpoint number. her little name tag π·οΈiudmaβ a pointer to the IUDMA channel state. yes, pointer. don't lose it πepβ the USB gadget layer's representation of the EP. the glow-up version of the endpoint πudcβ a reference to the device controller. the parent, the icon, the whole reason she exists πqueueβ a linked list of outstanding requests for this EP. the group chat of pending work fr fr πhaltedβ a1if the EP is stalled;0otherwise. binary queen, obsessed β¨
π¦ SEE ALSO π¦
Kernel file ./drivers/usb/gadget/udc/bcm63xx_udc.c
and the whole extended friend group, no one left out (iykyk) π:
struct iudma_ch_cfg(9),struct iudma_ch(9),struct bcm63xx_req(9),struct bcm63xx_udc(9)bcm63xx_ep_dma_select(9),bcm63xx_set_stall(9),bcm63xx_fifo_setup(9),bcm63xx_fifo_reset_ep(9),bcm63xx_fifo_reset(9)bcm63xx_ep_init(9),bcm63xx_ep_setup(9)iudma_write(9),iudma_read(9),iudma_reset_channel(9),iudma_init_channel(9),iudma_init(9),iudma_uninit(9)bcm63xx_set_ctrl_irqs(9),bcm63xx_select_phy_mode(9),bcm63xx_select_pullup(9),bcm63xx_uninit_udc_hw(9),bcm63xx_init_udc_hw(9)bcm63xx_ep_enable(9),bcm63xx_ep_disable(9)bcm63xx_udc_alloc_request(9),bcm63xx_udc_free_request(9),bcm63xx_udc_queue(9),bcm63xx_udc_dequeue(9),bcm63xx_udc_set_halt(9),bcm63xx_udc_set_wedge(9)bcm63xx_ep0_setup_callback(9),bcm63xx_ep0_spoof_set_cfg(9),bcm63xx_ep0_spoof_set_iface(9),bcm63xx_ep0_map_write(9),bcm63xx_ep0_complete(9),bcm63xx_ep0_nuke_reply(9),bcm63xx_ep0_read_complete(9),bcm63xx_ep0_internal_request(9),bcm63xx_ep0_do_setup(9),bcm63xx_ep0_do_idle(9),bcm63xx_ep0_one_round(9),bcm63xx_ep0_process(9)bcm63xx_udc_get_frame(9),bcm63xx_udc_pullup(9),bcm63xx_udc_start(9),bcm63xx_udc_stop(9)bcm63xx_update_cfg_iface(9),bcm63xx_update_link_speed(9),bcm63xx_update_wedge(9)bcm63xx_udc_ctrl_isr(9),bcm63xx_udc_data_isr(9)bcm63xx_udc_init_debugfs(9),bcm63xx_udc_cleanup_debugfs(9)bcm63xx_udc_probe(9),bcm63xx_udc_remove(9)
like yeah that's a long list but every single one is linked from here, so you literally cannot get lost. π§ read them in order or just vibe-check the ones you need.
and that's the page, bestie!! π this one lives at ./drivers/usb/gadget/udc, dated October 2026, and it's struct bcm63xx_ep(9) all the way down. slay, go read the source, periodt π
π₯βπ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms