STRUCT NBPF_CHANNEL(9)
π struct nbpf_channel(9) β like, the whole kernel API manual, bestie
okay so this is the struct nbpf_channel(9) page from the Kernel API Manual (yes, section 9, we love a kernel-space moment β¨). it's all about one DMAC channel β a single channel of the DMA controller, broken down field by field so you know exactly what's vibing in there π
β¨ NAME β¨
struct nbpf_channel β literally just one DMAC channel, that's the whole gig π«
π¦ SYNOPSIS π¦
struct nbpf_channel {
struct dma_chan dma_chan;
struct tasklet_struct tasklet;
void __iomem *base;
struct nbpf_device *nbpf;
char name[16];
int irq;
dma_addr_t slave_src_addr;
size_t slave_src_width;
size_t slave_src_burst;
dma_addr_t slave_dst_addr;
size_t slave_dst_width;
size_t slave_dst_burst;
unsigned int terminal;
u32 dmarq_cfg;
unsigned long flags;
spinlock_t lock;
struct list_head free_links;
struct list_head free;
struct list_head queued;
struct list_head active;
struct list_head done;
struct list_head desc_page;
struct nbpf_desc *running;
bool paused;
};
like, that's the whole struct, no cap π
πΈ Members πΈ
okay now the main character energy part β every single member, one by one, let's go π«Ά
dma_chanβ the standard dmaengine channel object, the vanilla one everybody gets π¦taskletβ this channel's own little tasklet, it's the one that runs the callbacks β‘baseβ the register address base, where the registers live πnbpfβ the DMAC itself, hi bestie πnameβ the IRQ name π·οΈirqβ the IRQ number π’slave_src_addrβ source address for slave DMA π€slave_src_widthβ source slave data size, in bytes πslave_src_burstβ maximum source slave burst size, in bytes π₯slave_dst_addrβ destination address for slave DMA π₯slave_dst_widthβ destination slave data size, in bytes πslave_dst_burstβ maximum destination slave burst size, in bytes πterminalβ the DMA terminal, assigned to this channel π―dmarq_cfgβ DMA request line configuration: high / low, edge / level, forNBPF_CHAN_CFGποΈflagsβ configuration flags, straight from DT π©lockβ protects the descriptor lists π (do not skip this one, fr fr)free_linksβ list of free link descriptors βοΈfreeβ list of free descriptors πqueuedβ list of queued descriptors πactiveβ list of descriptors scheduled for processing πββοΈdoneβ list of completed descriptors, waiting on post-processing βdesc_pageβ list of additionally allocated descriptor pages, if there are any πrunningβ the linked descriptor of the running transaction π₯pausedβ are translations on this channel paused? π€ (abool, so it's a yes/no vibe)
π SEE ALSO π
- Kernel file
./drivers/dma/nbpfaxi.candstruct nbpf_desc(9)β go read those too, iykyk π
heads up bestie: lock is there to protect the descriptor lists β that's the whole reason it exists, so don't be out here touching those lists without it π
and that's a wrap on the struct nbpf_channel(9) page π β brought to you by the ./drivers/dma directory, dated October 2026, slaying in the Kernel API Manual forever πππ¦
π¦ 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