bcm63xx_update_link_speed(9)
π bcm63xx_update_link_speed(9)
okay so this is a page from the Kernel API Manual, and we're talking about bcm63xx_update_link_speed, which is genuinely such a niche little function but likeβ¦ it ate. let's get into it bestie π«Ά
β¨ NAME β¨
bcm63xx_update_link_speed β check to see if the link speed has changed. that's it, that's the whole job, and honestly? iconic for it π
πΈ SYNOPSIS πΈ
int bcm63xx_update_link_speed (struct bcm63xx_udc *udc );
yep, that's the whole signature. she's short, she's sweet, she takes exactly one pointer. periodt β¨
π ARGUMENTS π
udcβ a reference to the device controller. like, the whole device controller. that's the vibe. π¦
π DESCRIPTION π
so the way this works: the link speed update coincides with a SETUP IRQ. yk, one of those interrupts. π₯
and here's the lil payoff β it returns 1 if the speed has actually changed, so that the caller can go ahead and update the endpoint settings. it's giving "hey bestie, something moved, go fix your endpoints" ππ
no cap, just 1 means changed. the caller does the rest. it's a team effort fr fr.
π SEE ALSO π
okay this list is long long, but every single one of these is part of the family so we're listing them all, no skipping, we don't do that here π«Ά
the kernel file is ./drivers/usb/gadget/udc/bcm63xx_udc.c, and the structs up first:
struct iudma_ch_cfg(9)struct iudma_ch(9)struct bcm63xx_ep(9)struct bcm63xx_req(9)struct bcm63xx_udc(9)
then the functions, in order, all of them, let's go β
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_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)
and that's the whole gang. iykyk π
and that's the page!! this one lives over in ./drivers/usb/gadget/udc, dated October 2026 β mwah, tysm for reading, ily, go update those endpoint settings bestie π§ππ
π¦ 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