pch_vbus_gpio_irq(9)
π
pch_vbus_gpio_irq β Kernel API Manual β¨
okay so bestie, buckle up π this is a page straight out of the Kernel API Manual, and it's about one tiny little function that handles an interrupt when VBUS changes its whole vibe. it's giving "small function, big responsibility," and honestly? iconic. π«Ά
πΈ NAME
pch_vbus_gpio_irq β the IRQ handler for the GPIO interrupt that fires when VBUS changes, no cap π
β¨ SYNOPSIS
irqreturn_t pch_vbus_gpio_irq (int irq , void *data );
π¦ ARGUMENTS
irqβ the interrupt request number. yes, it's just... the number of the interrupt request. that's the whole thing πdataβ a reference to the device structure. iykyk β it's your ticket back to the device that owns all this π«Ά
π§ DESCRIPTION
so here's the tea β β the return codes are the whole personality of this section, and there are exactly two of them:
0β Success β¨ you did it, queen π-EINVALβ the GPIO port is invalid, or it can't be initialized π that's a hard no, bestie, the port is not giving what it needs to give π
lowkey important: those are the return codes listed here, full stop. don't go inventing extra ones, that would be not slay π
π SEE ALSO
the whole extended friend group π first, the kernel file and the structs:
./drivers/usb/gadget/udc/pch_udc.c, and the kernel file./drivers/usb/gadget/udc(yes it's listed over there at the bottom too, we'll get to it π)struct pch_udc_data_dma_desc(9),struct pch_udc_stp_dma_desc(9),struct pch_udc_cfg_data(9),struct pch_udc_ep(9),struct pch_vbus_gpio_data(9)struct pch_udc_dev(9),struct pch_udc_request(9)
then the full squad of functions, in order, and yes we're listing every single one because we don't do half-finished group chats here π :
pch_udc_csr_busy(9),pch_udc_write_csr(9),pch_udc_read_csr(9),pch_udc_rmt_wakeup(9),pch_udc_get_frame(9)pch_udc_clear_selfpowered(9),pch_udc_set_selfpowered(9),pch_udc_set_disconnect(9),pch_udc_clear_disconnect(9),pch_udc_reconnect(9)pch_udc_vbus_session(9),pch_udc_ep_set_stall(9),pch_udc_ep_clear_stall(9),pch_udc_ep_set_trfr_type(9),pch_udc_ep_set_bufsz(9)pch_udc_ep_set_maxpkt(9),pch_udc_ep_set_subptr(9),pch_udc_ep_set_ddptr(9),pch_udc_ep_set_pd(9),pch_udc_ep_set_rrdy(9)pch_udc_ep_clear_rrdy(9),pch_udc_set_dma(9),pch_udc_clear_dma(9),pch_udc_set_csr_done(9),pch_udc_disable_interrupts(9)pch_udc_enable_interrupts(9),pch_udc_disable_ep_interrupts(9),pch_udc_enable_ep_interrupts(9),pch_udc_read_device_interrupts(9),pch_udc_write_device_interrupts(9)pch_udc_read_ep_interrupts(9),pch_udc_write_ep_interrupts(9),pch_udc_read_device_status(9),pch_udc_read_ep_control(9),pch_udc_clear_ep_control(9)pch_udc_read_ep_status(9),pch_udc_clear_ep_status(9),pch_udc_ep_set_nak(9),pch_udc_ep_clear_nak(9),pch_udc_ep_fifo_flush(9)pch_udc_ep_enable(9),pch_udc_ep_disable(9),pch_udc_wait_ep_stall(9),pch_udc_init(9),pch_udc_exit(9)pch_udc_pcd_get_frame(9),pch_udc_pcd_wakeup(9),pch_udc_pcd_selfpowered(9),pch_udc_pcd_pullup(9),pch_udc_pcd_vbus_session(9)pch_udc_pcd_vbus_draw(9),pch_vbus_gpio_get_value(9),pch_vbus_gpio_work_fall(9),pch_vbus_gpio_work_rise(9),pch_vbus_gpio_init(9)pch_vbus_gpio_free(9),complete_req(9),empty_req_queue(9),pch_udc_free_dma_chain(9),pch_udc_create_dma_chain(9)prepare_dma(9),process_zlp(9),pch_udc_start_rxrequest(9),pch_udc_pcd_ep_enable(9),pch_udc_pcd_ep_disable(9)pch_udc_alloc_request(9),pch_udc_free_request(9),pch_udc_pcd_queue(9),pch_udc_pcd_dequeue(9),pch_udc_pcd_set_halt(9)pch_udc_pcd_set_wedge(9),pch_udc_pcd_fifo_flush(9),pch_udc_init_setup_buff(9),pch_udc_start_next_txrequest(9),pch_udc_complete_transfer(9)pch_udc_complete_receiver(9),pch_udc_svc_data_in(9),pch_udc_svc_data_out(9),pch_udc_svc_control_in(9),pch_udc_svc_control_out(9)pch_udc_postsvc_epinters(9),pch_udc_read_all_epstatus(9),pch_udc_activate_control_ep(9),pch_udc_svc_ur_interrupt(9),pch_udc_svc_enum_interrupt(9)pch_udc_svc_intf_interrupt(9),pch_udc_svc_cfg_interrupt(9),pch_udc_dev_isr(9),pch_udc_isr(9),pch_udc_setup_ep0(9)pch_udc_pcd_reinit(9),pch_udc_pcd_init(9),init_dma_pools(9)
fr fr that's the whole list β 100% of it, not one dropped π go read them if you want the full lore, they're all linked from that pch_udc.c universe π
πΈ that's a wrap, bestie! this page lives under ./drivers/usb/gadget/udc, and the version of the manual we're reading is dated October 2026 β so like, future-legend behavior honestly πβ¨ mwah, go read some kernel source ππ¦
π¦ 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