dwc2_gadget_..._ep_disabled(9)
π dwc2_gadget_..._ep_disabled(9) β kernel API manual, but make it make sense
okay so bestie, you're reading the page for dwc2_gadget_handle_out_token_ep_disabled β which is a whole mouthful, i know β from the Kernel API Manual, section 9. yes the title up there is the abbreviated version dwc2_gadget_..._ep_disabled(9), that's just how these pages vibe. stay with me, it's actually slay in here π₯
β¨ NAME β¨
dwc2_gadget_handle_out_token_ep_disabled β handles DXEPINT_OUTTKNEPDIS. that's it, that's the whole job. main character energy tbh π
π¦ SYNOPSIS π¦
void dwc2_gadget_handle_out_token_ep_disabled (struct dwc2_hsotg_ep *ep
);
void, no return value, we're just out here handling things. π
πΈ ARGUMENTS πΈ
epβ the endpoint on which the interrupt is asserted. like, the specific EP that's throwing the interrupt at you. that's your girl, go handle her π«Ά
π DESCRIPTION π
okay so this function is the starting point for an ISOC-OUT transfer, and the synchronization is done with the first out token received from host while the corresponding EP is disabled. periodt. β
here's the tea though: the device does not know the initial frame in which the out token will come. like, genuinely no clue. so for this, the HW generates OUTTKNEPDIS β that means an out token is received while the EP is disabled. that's literally what the interrupt name is telling you, iykyk. π
and upon getting this interrupt, SW starts the calculation for the next transfer frame. so: interrupt hits β software does its little math β next frame gets figured out. that's the whole flow, no cap. π
π SEE ALSO π
Kernel file ./drivers/usb/dwc2/gadget.c using all of these besties:
using_dma(9)dwc2_gadget_incr_frame_num(9)dwc2_gadget_dec_frame_num_by_one(9)dwc2_hsotg_en_gsint(9)dwc2_hsotg_disable_gsint(9)dwc2_hsotg_ctrl_epint(9)dwc2_hsotg_tx_fifo_count(9)dwc2_hsotg_tx_fifo_total_depth(9)dwc2_gadget_wkup_alert_handler(9)dwc2_hsotg_tx_fifo_average_depth(9)dwc2_hsotg_init_fifo(9)dwc2_hsotg_ep_alloc_request(9)is_ep_periodic(9)dwc2_hsotg_unmap_dma(9)dwc2_hsotg_write_fifo(9)get_ep_limit(9)dwc2_hsotg_read_frameno(9)dwc2_gadget_get_chain_limit(9)dwc2_hsotg_start_req(9)dwc2_hsotg_map_dma(9)dwc2_gadget_target_frame_elapsed(9)dwc2_hsotg_complete_oursetup(9)ep_from_windex(9)dwc2_hsotg_set_test_mode(9)dwc2_hsotg_send_reply(9)dwc2_hsotg_process_req_status(9)get_ep_head(9)dwc2_gadget_start_next_request(9)dwc2_hsotg_process_req_feature(9)dwc2_hsotg_stall_ep0(9)dwc2_hsotg_process_control(9)dwc2_hsotg_complete_setup(9)dwc2_hsotg_enqueue_setup(9)dwc2_hsotg_complete_request(9)dwc2_hsotg_rx_data(9)dwc2_hsotg_ep0_zlp(9)dwc2_hsotg_handle_outdone(9)dwc2_hsotg_handle_rx(9)dwc2_hsotg_ep0_mps(9)dwc2_hsotg_set_ep_maxpacket(9)dwc2_hsotg_txfifo_flush(9)dwc2_hsotg_trytx(9)dwc2_hsotg_complete_in(9)dwc2_gadget_read_ep_interrupts(9)dwc2_gadget_handle_ep_disabled(9)dwc2_gadget_handle_nak(9)dwc2_hsotg_epint(9)dwc2_hsotg_irq_enumdone(9)kill_all_requests(9)dwc2_hsotg_disconnect(9)dwc2_hsotg_irq_fifoempty(9)dwc2_hsotg_core_init_disconnected(9)dwc2_gadget_handle_incomplete_isoc_in(9)dwc2_gadget_handle_incomplete_isoc_out(9)dwc2_hsotg_irq(9)dwc2_hsotg_ep_enable(9)dwc2_hsotg_ep_disable(9)on_list(9)dwc2_hsotg_ep_dequeue(9)dwc2_gadget_ep_set_wedge(9)dwc2_hsotg_ep_sethalt(9)dwc2_hsotg_ep_sethalt_lock(9)dwc2_hsotg_init(9)dwc2_hsotg_udc_start(9)dwc2_hsotg_udc_stop(9)dwc2_hsotg_gadget_getframe(9)dwc2_hsotg_set_selfpowered(9)dwc2_hsotg_pullup(9)dwc2_hsotg_vbus_draw(9)dwc2_hsotg_initep(9)dwc2_hsotg_hw_cfg(9)dwc2_hsotg_dump(9)dwc2_gadget_init(9)dwc2_hsotg_remove(9)dwc2_backup_device_registers(9)dwc2_restore_device_registers(9)dwc2_gadget_init_lpm(9)dwc2_gadget_program_ref_clk(9)dwc2_gadget_enter_hibernation(9)dwc2_gadget_exit_hibernation(9)dwc2_gadget_enter_partial_power_down(9)dwc2_gadget_enter_clock_gating(9)
like, that's a lot of friends. click through, they all link somewhere in that same gadget file. π§
reminder babe: this page is from./drivers/usb/dwc2, dated October 2026, and the manpage section is9(kernel API, not a command you run in your shell, don't try it at home π).
okay that's the whole page!! go read the source, stan dwc2_hsotg_epint, and remember: OUTTKNEPDIS is not a typo, it's just the HW being dramatic. mwah ππβ¨
π¦ 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