drivers/dma/amd/ae4dma/ae4dma.h

Source file repositories/reference/linux-study-clean/drivers/dma/amd/ae4dma/ae4dma.h

File Facts

System
Linux kernel
Corpus path
drivers/dma/amd/ae4dma/ae4dma.h
Extension
.h
Size
1983 bytes
Lines
103
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.

Dependency Surface

Detected Declarations

Annotated Snippet

struct ae4_msix {
	int msix_count;
	struct msix_entry msix_entry[MAX_AE4_HW_QUEUES];
};

struct ae4_cmd_queue {
	struct ae4_device *ae4;
	struct pt_cmd_queue cmd_q;
	struct list_head cmd;
	/* protect command operations */
	struct mutex cmd_lock;
	struct delayed_work p_work;
	struct workqueue_struct *pws;
	struct completion cmp;
	wait_queue_head_t q_w;
	atomic64_t intr_cnt;
	atomic64_t done_cnt;
	u64 q_cmd_count;
	u32 dridx;
	u32 tail_wi;
	u32 id;
};

union dwou {
	u32 dw0;
	struct dword0 {
	u8	byte0;
	u8	byte1;
	u16	timestamp;
	} dws;
};

struct dword1 {
	u8	status;
	u8	err_code;
	u16	desc_id;
};

struct ae4dma_desc {
	union dwou dwouv;
	struct dword1 dw1;
	u32 length;
	u32 rsvd;
	u32 src_hi;
	u32 src_lo;
	u32 dst_hi;
	u32 dst_lo;
};

struct ae4_device {
	struct pt_device pt;
	struct ae4_msix *ae4_msix;
	struct ae4_cmd_queue ae4cmd_q[MAX_AE4_HW_QUEUES];
	unsigned int ae4_irq[MAX_AE4_HW_QUEUES];
	unsigned int cmd_q_count;
};

int ae4_core_init(struct ae4_device *ae4);
void ae4_destroy_work(struct ae4_device *ae4);
void ae4_check_status_error(struct ae4_cmd_queue *ae4cmd_q, int idx);
#endif

Annotation

Implementation Notes