STRUCT XILINX_DPDMA_HW_DESC(9)
π struct xilinx_dpdma_hw_desc β DPDMA hardware descriptor
okay so this is a page from the Kernel API Manual, and it's all about struct xilinx_dpdma_hw_desc β the DPDMA hardware descriptor. it's giving β¨hardwareβ¨ so you know it's the real low-level stuff, bestie. no cap.
π¦ SYNOPSIS
struct xilinx_dpdma_hw_desc {
u32 control;
u32 desc_id;
u32 xfer_size;
u32 hsize_stride;
u32 timestamp_lsb;
u32 timestamp_msb;
u32 addr_ext;
u32 next_desc;
u32 src_addr;
u32 addr_ext_23;
u32 addr_ext_45;
u32 src_addr2;
u32 src_addr3;
u32 src_addr4;
u32 src_addr5;
u32 crc;
};
like, that's the whole struct, laid out exactly how the hardware wants it π
πΈ Members β the whole cast, one by one π
controlβ the control configuration field. it's literally the little switchboard that tells the descriptor how to behave πdesc_idβ the descriptor ID. every descriptor's own little name tag, iykyk β¨xfer_sizeβ transfer size. how much is actually moving, periodt π«Άhsize_strideβ horizontal size and stride, packaged together like a bestie duo πtimestamp_lsbβ the LSB of the time stamp. the low-key half of the timestamp π¦timestamp_msbβ the MSB of the time stamp. the highkey other half βaddr_extβ the upper 16 bit of a 48 bit address (specificallynext_descandsrc_addr). that's the top bits, holding the address together π₯next_descβ next descriptor 32 bit address. literally the "and then?" pointer π§src_addrβ payload source address (1st page, 32 LSB) πaddr_ext_23β payload source address (2nd and 3rd pages, 16 LSBs) πaddr_ext_45β payload source address (4th and 5th pages, 16 LSBs) πsrc_addr2β payload source address (2nd page, 32 LSB) πsrc_addr3β payload source address (3rd page, 32 LSB) πsrc_addr4β payload source address (4th page, 32 LSB) πΈsrc_addr5β payload source address (5th page, 32 LSB) π¦crcβ descriptor CRC. the vibe check that makes sure nothing got corrupted π
ngl, five source address fields and a pile of address-extension fields sounds like a lot, but it's just how the hardware describes multi-page payloads β every single one of them earns its spot in the struct π«Ά
π§ SEE ALSO
the kernel file lives at ./drivers/dma/xilinx/xilinx_dpdma.c, and here's the full squad of related stuff, fr fr:
struct xilinx_dpdma_sw_desc(9)struct xilinx_dpdma_tx_desc(9)struct xilinx_dpdma_chan(9)struct xilinx_dpdma_device(9)xilinx_dpdma_sw_desc_set_dma_addrs(9)xilinx_dpdma_chan_alloc_sw_desc(9)xilinx_dpdma_chan_free_sw_desc(9)xilinx_dpdma_chan_dump_tx_desc(9)xilinx_dpdma_chan_alloc_tx_desc(9)xilinx_dpdma_chan_free_tx_desc(9)xilinx_dpdma_chan_prep_cyclic(9)xilinx_dpdma_chan_prep_interleaved_dma(9)xilinx_dpdma_chan_enable(9)xilinx_dpdma_chan_disable(9)xilinx_dpdma_chan_pause(9)xilinx_dpdma_chan_unpause(9)xilinx_dpdma_chan_queue_transfer(9)xilinx_dpdma_chan_ostand(9)xilinx_dpdma_chan_notify_no_ostand(9)xilinx_dpdma_chan_wait_no_ostand(9)xilinx_dpdma_chan_poll_no_ostand(9)xilinx_dpdma_chan_stop(9)xilinx_dpdma_chan_done_irq(9)xilinx_dpdma_chan_vsync_irq(9)xilinx_dpdma_chan_err(9)xilinx_dpdma_chan_handle_err(9)xilinx_dpdma_alloc_chan_resources(9)xilinx_dpdma_free_chan_resources(9)xilinx_dpdma_terminate_all(9)xilinx_dpdma_synchronize(9)xilinx_dpdma_err(9)xilinx_dpdma_handle_err_irq(9)xilinx_dpdma_enable_irq(9)xilinx_dpdma_disable_irq(9)xilinx_dpdma_chan_err_task(9)
lowkey the *_ostand ones sound like they're about to drop a mixtape, but they're genuinely part of the DPDMA API. go read them, bestie π«Ά
and that's the page!! sign-off time: this one's from ./drivers/dma/xilinx, in the Kernel API Manual, dated October 2026 β mwah, slay, go read your structs π
β¨π
π¦ 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