write_fifo(9)
π write_fifo(9) β the group chat version β¨
okay so bestie, you're looking at write_fifo, straight out of the write_fifo(9) Kernel API Manual section. buckle up π
πΈ NAME πΈ
write_fifo β transfer packets from a usb request into an IN endpoint π
β¨ SYNOPSIS β¨
int write_fifo (struct pxa_ep *ep , struct pxa27x_request *req );
π«Ά ARGUMENTS π«Ά
epβ the pxa physical endpoint, like, the actual hardware door you're pushing stuff through πͺreqβ the pxa usb request, aka the lil parcel of data that wants to go out π¦
π DESCRIPTION π
So what this icon does: it writes to an IN endpoint fifo, and it pushes as many packets as possible while it's at it π₯. Not one, not two β as many as it can, no cap.
irqs will use this to write the rest later, so don't stress about the leftovers, the interrupts got you π.
The caller guarantees at least one packet buffer is ready (or a zlp) before calling this β that's the deal, that's the contract, don't skip it bestie π.
It doesn't complete the request. That's the caller's job, not this function's. this function hands off and dips π .
returns1if the request fully transferred,0if it's a partial transfer β that's the vibe check right there β
π¦ SEE ALSO π¦
Kernel file ./drivers/usb/gadget/udc/pxa27x_udc.c is where the magic lives, and these are all the besties it runs with π―:
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)read_ep0_fifo(9)write_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)
and that's the whole page, bestie, you ate that π mwah π
this one comes to you from ./drivers/usb/gadget/udc, dated October 2026, filed under write_fifo(9) β iconic, no notes πβ¨
π¦ 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