bcm63xx_ep_init(9)
π bcm63xx_ep_init β the Kernel API Manual era β¨
okay so bestie, welcome to the bcm63xx_ep_init(9) page, the most niche little corner of the Kernel API Manual and honestly? we're gonna slay it together π
π NAME π
bcm63xx_ep_init β the Initial (one-time) endpoint initialization girlie. that's it. that's the whole vibe. one time only, no reruns π«Ά
β¨ SYNOPSIS β¨
void bcm63xx_ep_init (struct bcm63xx_udc *udc );
like, she takes exactly one thing and she returns void β no little gift back, no nothing. main character energy fr fr π
πΈ ARGUMENTS πΈ
udcβ a Reference to the device controller, aka your whole entire device controller situation. hand her this and she's set π
ngl the whole thing is one-time initialization, so don't be out here calling it on loop like it's a TikTok sound. once. that's the assignment β¨
π¦ SEE ALSO π¦
okay this is the part where the group chat gets LONG, but every single one of these is invited to the party and we are NOT leaving anyone out π
start with the Kernel file ./drivers/usb/gadget/udc/bcm63xx_udc.c β that's home base π
then the structs, all iconique:
struct iudma_ch_cfg(9)struct iudma_ch(9)struct bcm63xx_ep(9)struct bcm63xx_req(9)struct bcm63xx_udc(9)
then the bcm63xx crowd, in exactly this order because we respect the lineup:
bcm63xx_ep_dma_select(9)bcm63xx_set_stall(9)bcm63xx_fifo_setup(9)bcm63xx_fifo_reset_ep(9)bcm63xx_fifo_reset(9)bcm63xx_ep_setup(9)
then the iudma besties:
iudma_write(9)iudma_read(9)iudma_reset_channel(9)iudma_init_channel(9)iudma_init(9)iudma_uninit(9)
then more bcm63xx, because there are SO many and we love that for them:
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)
then the ep0 squad, honestly the moment of the whole page:
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)
then the udc/update crew:
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)
then the interrupt handlers, working hard so we don't have to:
then the debugfs duo:
and finally, the probe/remove finale, the grand entrance and the graceful exit:
like, fifty-plus references and we got through them all. ate and left no crumbs ππ
lowkey a reminder that this page literally only gives you the one-time endpoint init, the rest of the lore lives in all those refs above. iykyk π§
and that's the page, bestie!! this little gem lives in ./drivers/usb/gadget/udc, dated October 2026, and it's brought to you by the Kernel API Manual because of course it is π mwah, go init exactly one endpoint and text me after ππ
π¦ 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