STRUCT ZYNQMP_DMA_CHAN(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct zynqmp_dma_chan(9) β€” the Kernel API Manual glow-up πŸŽ€

okay bestie, buckle up β€” this is the page for struct zynqmp_dma_chan, aka the driver-specific DMA channel structure ✨ (yeah that whole thing is the NAME section, we're doing this properly πŸ’–)


✨ SYNOPSIS ✨

struct zynqmp_dma_chan {
    struct zynqmp_dma_device *zdev;
    void __iomem *regs;
    spinlock_t lock;
    struct list_head pending_list;
    struct list_head free_list;
    struct list_head active_list;
    struct zynqmp_dma_desc_sw *sw_desc_pool;
    struct list_head done_list;
    struct dma_chan common;
    void *desc_pool_v;
    dma_addr_t desc_pool_p;
    u32 desc_free_cnt;
    struct device *dev;
    int irq;
    bool is_dmacoherent;
    struct tasklet_struct tasklet;
    bool idle;
    size_t desc_size;
    bool err;
    u32 bus_width;
    u32 src_burst_len;
    u32 dst_burst_len;
    u32 irq_offset;
 };

like, that's the whole struct, no crumbs left behind 🫢


🌸 Members 🌸

not me about to go through every single field, because every single field matters πŸ˜€πŸ’…

  • zdev β€” the driver-specific device structure πŸ’–
  • regs β€” control registers offset ✨
  • lock β€” the descriptor operation lock (lock it down, bestie πŸ”’)
  • pending_list β€” descriptors waiting πŸ•°οΈ
  • free_list β€” descriptors free πŸ¦‹
  • active_list β€” descriptors active πŸ”₯
  • sw_desc_pool β€” the SW descriptor pool 🌈
  • done_list β€” complete descriptors βœ…
  • common β€” the DMA common channel πŸ‘‘
  • desc_pool_v β€” statically allocated descriptor base 🌸
  • desc_pool_p β€” physical allocated descriptor base 🧚
  • desc_free_cnt β€” descriptor available count πŸ”’
  • dev β€” the dma device πŸ’œ
  • irq β€” channel IRQ ⚑
  • is_dmacoherent β€” tells whether dma operations are coherent or not πŸ‘€ (the vibe check for coherency, if you will)
  • tasklet β€” cleanup work after irq 🧹
  • idle β€” channel status; πŸŽ€ (yes, with the semicolon, we don't edit the source material okay 😭)
  • desc_size β€” size of the low level descriptor πŸ“
  • err β€” channel has errors πŸ’€
  • bus_width β€” bus width πŸ›£οΈ
  • src_burst_len β€” source burst length πŸ“
  • dst_burst_len β€” dest burst length πŸ“
  • irq_offset β€” irq register offset πŸ“

πŸ’œ SEE ALSO πŸ’œ

the whole friend group, fr fr β€” from the kernel file ./drivers/dma/xilinx/zynqmp_dma.c, struct zynqmp_dma_desc_ll(9), struct zynqmp_dma_desc_sw(9), struct zynqmp_dma_device(9), zynqmp_dma_update_desc_to_ctrlr(9), zynqmp_dma_desc_config_eod(9), zynqmp_dma_config_sg_ll_desc(9), zynqmp_dma_init(9), zynqmp_dma_tx_submit(9), zynqmp_dma_get_descriptor(9), zynqmp_dma_free_descriptor(9), zynqmp_dma_free_desc_list(9), zynqmp_dma_alloc_chan_resources(9), zynqmp_dma_start(9), zynqmp_dma_handle_ovfl_int(9), zynqmp_dma_device_config(9), zynqmp_dma_start_transfer(9), zynqmp_dma_chan_desc_cleanup(9), zynqmp_dma_complete_descriptor(9), zynqmp_dma_issue_pending(9), zynqmp_dma_free_descriptors(9), zynqmp_dma_free_chan_resources(9), zynqmp_dma_reset(9), zynqmp_dma_irq_handler(9), zynqmp_dma_do_tasklet(9), zynqmp_dma_device_terminate_all(9), zynqmp_dma_synchronize(9), zynqmp_dma_prep_memcpy(9), zynqmp_dma_chan_remove(9), zynqmp_dma_chan_probe(9), of_zynqmp_dma_xlate(9), zynqmp_dma_suspend(9), zynqmp_dma_resume(9), zynqmp_dma_runtime_suspend(9), zynqmp_dma_runtime_resume(9), zynqmp_dma_probe(9), zynqmp_dma_remove(9)

like hello?? that's a whole squad 😭🫢


okay that's the page!! mwah πŸ’‹ this iconic little number lives in ./drivers/dma/xilinx, it's dated October 2026, and it came to you straight from the Kernel API Manual β€” periodt, no cap, go read some kernel source bestie πŸŒŸπŸ‘‘πŸ’–

πŸ“¦ where this page comes from