STRUCT MMP_PDMA_OPS(9)
πΈ struct mmp_pdma_ops(9) πΈ
okay so bestie, welcome to the Kernel API Manual β¨ β this is the page for struct mmp_pdma_ops, and it's basically the ops table for the MMP PDMA controller. it's giving "here's all the function pointers and config bits you need" energy, and honestly? iconic of it. π
π NAME π
struct mmp_pdma_ops β the Operations for the MMP PDMA controller π«Ά
β¨ SYNOPSIS β¨
struct mmp_pdma_ops {
void (*write_next_addr)(struct mmp_pdma_phy *phy, dma_addr_t addr);
u64 (*read_src_addr)(struct mmp_pdma_phy *phy);
u64 (*read_dst_addr)(struct mmp_pdma_phy *phy);
void (*set_desc_next_addr)(struct mmp_pdma_desc_hw *desc, dma_addr_t
addr);
void (*set_desc_src_addr)(struct mmp_pdma_desc_hw *desc, dma_addr_t
addr);
void (*set_desc_dst_addr)(struct mmp_pdma_desc_hw *desc, dma_addr_t
addr);
u64 (*get_desc_src_addr)(const struct mmp_pdma_desc_hw *desc);
u64 (*get_desc_dst_addr)(const struct mmp_pdma_desc_hw *desc);
u32 run_bits;
u32 dma_width;
u32 drcmr_ext_base;
};
like, look at all those function pointers. so organized. we love a struct that knows what it wants π
π Members π
okay so here's the whole cast, member by member, no cap:
write_next_addrβ the function that programs the address of the next descriptor intoDDADR/DDADRHπ₯read_src_addrβ the function that reads the source address fromDSADR/DSADRHread_dst_addrβ the function that reads the destination address fromDTADR/DTADRHset_desc_next_addrβ the function that sets the next descriptor address in the descriptorset_desc_src_addrβ the function that sets the source address in the descriptorset_desc_dst_addrβ the function that sets the destination address in the descriptorget_desc_src_addrβ the function that gets the source address from the descriptorget_desc_dst_addrβ the function that gets the destination address from the descriptorrun_bitsβ the control bits in theDCSRregister for channel start/stop πdma_widthβ the DMA addressing width in bits (32or64). this one determines the DMA mask capability of the controller hardware β important, bestie, don't sleep on it πdrcmr_ext_baseβ the baseDRCMRaddress for extended requests π¦
π« Description π«
so the page groups things into three little vibes:
Hardware Register Operations (read/write hardware registers):
Descriptor Memory Operations (manipulate descriptor structs in memory):
Controller Configuration:
like yes, those are the three lanes this struct runs in. π§
π SEE ALSO π
- Kernel file
./drivers/dma/mmp_pdma.c
and that's the whole page, bestie, you ate it π if you ever need to find it again it lives in ./drivers/dma, dated October 2026, and honestly the version is right there with it β fr fr, go read the source, it's literally one file down. π
π¦ 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