drivers/dma/fsl-edma-common.h
Source file repositories/reference/linux-study-clean/drivers/dma/fsl-edma-common.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/dma/fsl-edma-common.h- Extension
.h- Size
- 15391 bytes
- Lines
- 514
- Domain
- Driver Families
- Bucket
- drivers/dma
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/dma-direction.hlinux/platform_device.hvirt-dma.hfsl-edma-trace.h
Detected Declarations
struct fsl_edma_hw_tcdstruct fsl_edma_hw_tcd64struct fsl_edma3_ch_regstruct edma_regsstruct fsl_edma_sw_tcdstruct fsl_edma_chanstruct fsl_edma_descstruct fsl_edma_drvdatastruct fsl_edma_engineenum fsl_edma_pm_statefunction fsl_edma_drvflagsfunction edma_readqfunction edma_readlfunction edma_readwfunction edma_writebfunction edma_writewfunction edma_writelfunction edma_writeqfunction fsl_edma_err_chan_handler
Annotated Snippet
struct fsl_edma_hw_tcd {
__le32 saddr;
__le16 soff;
__le16 attr;
__le32 nbytes;
__le32 slast;
__le32 daddr;
__le16 doff;
__le16 citer;
__le32 dlast_sga;
__le16 csr;
__le16 biter;
};
struct fsl_edma_hw_tcd64 {
__le64 saddr;
__le16 soff;
__le16 attr;
__le32 nbytes;
__le64 slast;
__le64 daddr;
__le64 dlast_sga;
__le16 doff;
__le16 citer;
__le16 csr;
__le16 biter;
} __packed;
struct fsl_edma3_ch_reg {
__le32 ch_csr;
__le32 ch_es;
__le32 ch_int;
__le32 ch_sbr;
__le32 ch_pri;
__le32 ch_mux;
__le32 ch_mattr; /* edma4, reserved for edma3 */
__le32 ch_reserved;
union {
struct fsl_edma_hw_tcd tcd;
struct fsl_edma_hw_tcd64 tcd64;
};
} __packed;
/*
* These are iomem pointers, for both v32 and v64.
*/
struct edma_regs {
void __iomem *cr;
void __iomem *es;
void __iomem *erqh;
void __iomem *erql; /* aka erq on v32 */
void __iomem *eeih;
void __iomem *eeil; /* aka eei on v32 */
void __iomem *seei;
void __iomem *ceei;
void __iomem *serq;
void __iomem *cerq;
void __iomem *cint;
void __iomem *cerr;
void __iomem *ssrt;
void __iomem *cdne;
void __iomem *inth;
void __iomem *intl;
void __iomem *errh;
void __iomem *errl;
};
struct fsl_edma_sw_tcd {
dma_addr_t ptcd;
void *vtcd;
};
struct fsl_edma_chan {
struct virt_dma_chan vchan;
enum dma_status status;
enum fsl_edma_pm_state pm_state;
struct fsl_edma_engine *edma;
struct fsl_edma_desc *edesc;
struct dma_slave_config cfg;
u32 attr;
bool is_sw;
struct dma_pool *tcd_pool;
dma_addr_t dma_dev_addr;
u32 dma_dev_size;
enum dma_data_direction dma_dir;
char chan_name[32];
char errirq_name[36];
void __iomem *tcd;
void __iomem *mux_addr;
u32 real_count;
Annotation
- Immediate include surface: `linux/dma-direction.h`, `linux/platform_device.h`, `virt-dma.h`, `fsl-edma-trace.h`.
- Detected declarations: `struct fsl_edma_hw_tcd`, `struct fsl_edma_hw_tcd64`, `struct fsl_edma3_ch_reg`, `struct edma_regs`, `struct fsl_edma_sw_tcd`, `struct fsl_edma_chan`, `struct fsl_edma_desc`, `struct fsl_edma_drvdata`, `struct fsl_edma_engine`, `enum fsl_edma_pm_state`.
- Atlas domain: Driver Families / drivers/dma.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.