bcm63xx_ep0_do_idle(9)
π bcm63xx_ep0_do_idle(9) π
okay hi bestie, welcome to the Kernel API Manual section for bcm63xx_ep0_do_idle β yes it's a mouthful, yes we're gonna get through it together, and yes it's giving "tiny function, huge job" energy π
β¨ NAME β¨
bcm63xx_ep0_do_idle β the little function that checks if there's anything outstanding to do when ep0 is just sitting there being idle π¦
πΈ SYNOPSIS πΈ
int bcm63xx_ep0_do_idle (struct bcm63xx_udc *udc );
like... that's it. that's the whole signature. slay π
π ARGUMENTS π
udcβ a reference to the device controller. that's your whole vibe check source right there π
π₯ DESCRIPTION π₯
so picture this: we're in state EP0_IDLE. in that state, the RX descriptor is either pending, or it's already been filled with a SETUP packet from the host. literally one or the other, no in-between, main character energy β¨
what this function does is handle the whole menu of events:
- new
SETUPpackets π - control IRQ events β and yes, those can generate fake
SETUPpackets, not me saying that, that's just the truth π - reset/shutdown events π
and then it tells you how it went:
- returns
0if work was done β - returns
-EAGAINif there's nothing to do π
periodt. no cap. that's the whole contract π«Ά
π¦ SEE ALSO π¦
okay bestie this list is LONG, like genuinely iconic levels of long, so grab a snack π β every single one of these is in the kernel file ./drivers/usb/gadget/udc/bcm63xx_udc.c:
struct iudma_ch_cfg(9)struct iudma_ch(9)struct bcm63xx_ep(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_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)
iykyk ππ
π sign-off π
that's the whole page bestie!! this one lives over in ./drivers/usb/gadget/udc, dated October 2026, and honestly? she ate π
β¨ go read the source, drink some water, and remember: -EAGAIN just means "nothing to do," not "nothing to be." π«ΆπΈπ
π¦ 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