cdns3_ep0_run_transfer(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… cdns3_ep0_run_transfer β€” like, the whole vibe

okay so bestie, welcome to the Kernel API Manual entry for cdns3_ep0_run_transfer ✨ this one is short and sweet but she is important β€” she's the one who actually pushes a transfer through on the default endpoint hardware. no cap. πŸŽ€


✨ NAME ✨

cdns3_ep0_run_transfer β€” Do transfer on default endpoint hardware πŸ¦‹

like literally the whole job: you got data, she runs it on ep0. iconic behaviour honestly πŸ’…


πŸ”₯ SYNOPSIS πŸ”₯

void cdns3_ep0_run_transfer (struct cdns3_device *priv_dev , dma_addr_t
dma_addr , unsigned int length , int erdy , int zlp );

note the void β€” she returns nothing, she just does the thing and leaves. main character energy fr fr πŸ‘‘


🌸 ARGUMENTS 🌸

okay so every single one of these matters, don't skip any πŸ’–

  • priv_dev β€” the extended gadget object. yes bestie, the whole device, handed to you. 🫢
  • dma_addr β€” the physical address where the data is (or will be) stored. physical, not virtual, don't get it twisted 😭
  • length β€” the data length. how much stuff we're moving, simple as. ✨
  • erdy β€” set this bad boy to 1 when an ERDY packet should be sent β€” that's your exit from the flow control state. it's giving "we're so back" πŸšͺπŸ’¨
  • zlp β€” add a zero length packet. short and mysterious but she's doing her job πŸ’€
side note bestie: erdy and zlp are ints, length is an unsigned int, dma_addr is a dma_addr_t, and priv_dev is a struct cdns3_device *. keep the types right or the compiler will absolutely humble you πŸ™ˆ

🌈 SEE ALSO 🌈

the whole friend group lives in ./drivers/usb/cdns3/cdns3-ep0.c β€” go say hi to all of them πŸ’œ


πŸ’€ fr fr though: this page in the kernel docs ships out of ./drivers/usb/cdns3 and it's dated October 2026. so like, future vibes only. obsessed. πŸ§šβ€β™€οΈπŸ’–

and that's the whole page bestie β€” go run that transfer, slay, periodt. 🌸🫢✨

πŸ“¦ where this page comes from