write_ep0_fifo(9)
β¨ write_ep0_fifo β Kernel API Manual β¨
okay so bestie, welcome to the write_ep0_fifo page π
this one lives in the Kernel API Manual, and it's all about shoving a request at the control endpoint. very ep0-in core, very main character π
πΈ NAME πΈ
write_ep0_fifo β send a request to the control endpoint (ep0 in) π
β¨ SYNOPSIS β¨
int write_ep0_fifo (struct pxa_ep *ep , struct pxa27x_request *req );
π¦ ARGUMENTS π¦
epβ the control endpoint. that's the one.reqβ the request. the thing we're sending.
π CONTEXT π
interrupt handler β¨ no cap, that's where this runs.
π₯ DESCRIPTION π₯
so what it does: it sends a request (or honestly just a part of the request, we're not gonna pretend it's always the whole thing) to the control endpoint β that's ep0 in π
and lowkey the important bit: if the request doesn't fit, the remaining part gets sent from irq later. the way that works is it just picks up where it left off π«Ά
ngl the request only counts as fully written if one of these two things is true:
- the last write transferred all remaining bytes, but the fifo was not fully filled β¨
- the last write was a 0 length write π (yes really, that's a legit finish)
and the return vibes:
- returns
1if the request is fully written π - returns
0if the request was only partially sent π
π SEE ALSO π
okay this list is long long, buckle up bestie π’ the kernel file is ./drivers/usb/gadget/udc/pxa27x_udc.c and it's giving "everyone in the group chat is tagged" energy:
is_match_usb_pxa(9), find_pxa_ep(9), update_pxa_ep_matches(9), pio_irq_enable(9), pio_irq_disable(9), udc_set_mask_UDCCR(9), udc_clear_mask_UDCCR(9), ep_write_UDCCSR(9), ep_count_bytes_remain(9), ep_is_empty(9), ep_is_full(9), epout_has_pkt(9), set_ep0state(9), ep0_idle(9), inc_ep_stats_reqs(9), inc_ep_stats_bytes(9), pxa_ep_setup(9), pxa_eps_setup(9), pxa_ep_alloc_request(9), pxa_ep_free_request(9), ep_add_request(9), ep_del_request(9), req_done(9), ep_end_out_req(9), ep0_end_out_req(9), ep_end_in_req(9), ep0_end_in_req(9), nuke(9), read_packet(9), write_packet(9), read_fifo(9), write_fifo(9), read_ep0_fifo(9), pxa_ep_queue(9), pxa_ep_dequeue(9), pxa_ep_set_halt(9), pxa_ep_fifo_status(9), pxa_ep_fifo_flush(9), pxa_ep_enable(9), pxa_ep_disable(9), dplus_pullup(9), pxa_udc_get_frame(9), pxa_udc_wakeup(9), should_enable_udc(9), should_disable_udc(9), pxa_udc_pullup(9), pxa_udc_vbus_session(9), pxa_udc_vbus_draw(9), pxa_udc_phy_event(9), udc_disable(9), udc_init_data(9), udc_enable(9), pxa27x_udc_start(9), stop_activity(9), pxa27x_udc_stop(9), handle_ep0_ctrl_req(9), handle_ep0(9), handle_ep(9), pxa27x_change_configuration(9), pxa27x_change_interface(9), irq_udc_suspend(9), irq_udc_resume(9), irq_udc_reconfig(9), irq_udc_reset(9), pxa_udc_irq(9), pxa_udc_probe(9), pxa_udc_remove(9), pxa_udc_suspend(9), pxa_udc_resume(9)
okay and the lil sign-off π this page is from ./drivers/usb/gadget/udc, dated October 2026, and the source/version tag on it is write_ep0_fifo(9) β slay, go read some kernel code 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