STRUCT XILINX_DMA_CHAN(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct xilinx_dma_chan(9) πŸ’…

okay bestie, welcome to the Kernel API Manual ✨ this one's all about struct xilinx_dma_chan and honestly? it's kind of a whole vibe. strap in πŸŽ€


🌸 NAME 🌸

struct xilinx_dma_chan β€” the driver-specific DMA channel structure. like, the channel's personality, its whole little world πŸ’–


✨ SYNOPSIS ✨

struct xilinx_dma_chan {
    struct xilinx_dma_device *xdev;
    u32 ctrl_offset;
    u32 desc_offset;
    spinlock_t lock;
    struct list_head pending_list;
    struct list_head active_list;
    struct list_head done_list;
    struct list_head free_seg_list;
    struct dma_chan common;
    struct dma_pool *desc_pool;
    struct device *dev;
    int irq;
    int id;
    enum dma_transfer_direction direction;
    int num_frms;
    bool has_sg;
    bool cyclic;
    bool genlock;
    bool err;
    bool idle;
    bool terminating;
    struct tasklet_struct tasklet;
    struct xilinx_vdma_config config;
    bool flush_on_fsync;
    u32 desc_pendingcount;
    bool ext_addr;
    u32 desc_submitcount;
    struct xilinx_axidma_tx_segment *seg_v;
    struct xilinx_aximcdma_tx_segment *seg_mv;
    dma_addr_t seg_p;
    struct xilinx_axidma_tx_segment *cyclic_seg_v;
    dma_addr_t cyclic_seg_p;
    void (*start_transfer)(struct xilinx_dma_chan *chan);
    int (*stop_transfer)(struct xilinx_dma_chan *chan);
    u16 tdest;
    bool has_vflip;
    u8 irq_delay;
 };

πŸ¦‹ Members πŸ¦‹

  • xdev β€” the driver-specific device structure. the parent, the origin story πŸ‘‘
  • ctrl_offset β€” control registers offset πŸ“
  • desc_offset β€” TX descriptor registers offset πŸ“
  • lock β€” descriptor operation lock. no cap, everybody needs one πŸ”’
  • pending_list β€” descriptors that are waiting. they're in the queue, bestie ⏳
  • active_list β€” descriptors that are ready to submit πŸ”₯
  • done_list β€” complete descriptors. ate and left no crumbs βœ…
  • free_seg_list β€” free descriptors, just chilling πŸ“
  • common β€” the DMA common channel 🀝
  • desc_pool β€” the descriptors pool 🏊
  • dev β€” the dma device
  • irq β€” the channel IRQ ⚑
  • id β€” the channel ID 🏷️
  • direction β€” transfer direction 🧭
  • num_frms β€” number of frames 🎞️
  • has_sg β€” does it support scatter transfers πŸŒͺ️
  • cyclic β€” check for cyclic transfers. it goes around and around, main character energy πŸ”„
  • genlock β€” support genlock mode πŸ”—
  • err β€” the channel has errors 😭
  • idle β€” check for channel idle 😴
  • terminating β€” check for channel being synchronized by user πŸ™ˆ
  • tasklet β€” cleanup work after irq 🧹
  • config β€” device configuration info βš™οΈ
  • flush_on_fsync β€” flush on Frame sync 🚿
  • desc_pendingcount β€” descriptor pending count πŸ”’
  • ext_addr β€” indicates 64 bit addressing is supported by dma channel πŸ’…
  • desc_submitcount β€” descriptor h/w submitted count πŸ”’
  • seg_v β€” statically allocated segments base 🧱
  • seg_mv β€” statically allocated segments base for MCDMA 🧱
  • seg_p β€” physical allocated segments base 🧱
  • cyclic_seg_v β€” statically allocated segment base for cyclic transfers πŸ”
  • cyclic_seg_p β€” physical allocated segments base for cyclic dma πŸ”
  • start_transfer β€” differentiate b/w DMA IP's transfer. yes bestie, differentiate b/w, that's literally what the page says πŸ’«
  • stop_transfer β€” differentiate b/w DMA IP's quiesce πŸ›‘
  • tdest β€” TDEST value for mcdma 🎯
  • has_vflip β€” S2MM vertical flip πŸ™ƒ
  • irq_delay β€” interrupt delay timeout ⏰

πŸ’œ SEE ALSO πŸ’œ

the kernel file ./drivers/dma/xilinx/xilinx_dma.c struct, plus this entire friend group of structs and functions β€” go say hi, iykyk 🫢


and that's the whole page, bestie 🫢 sourced fresh from ./drivers/dma/xilinx and dated October 2026 β€” go forth and slay your DMA channels βœ¨πŸ’…πŸŽ€

πŸ“¦ where this page comes from