drivers/media/platform/qcom/iris/iris_hfi_queue.h

Source file repositories/reference/linux-study-clean/drivers/media/platform/qcom/iris/iris_hfi_queue.h

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/qcom/iris/iris_hfi_queue.h
Extension
.h
Size
6402 bytes
Lines
183
Domain
Driver Families
Bucket
drivers/media
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 iris_hfi_queue_header {
	u32 status;
	u32 start_addr;
	u16 queue_type;
	u16 header_type;
	u32 q_size;
	u32 pkt_size;
	u32 pkt_drop_cnt;
	u32 rx_wm;
	u32 tx_wm;
	u32 rx_req;
	u32 tx_req;
	u32 rx_irq_status;
	u32 tx_irq_status;
	u32 read_idx;
	u32 write_idx;
};

/**
 * struct iris_hfi_queue_table_header
 *
 * @version: Queue table version number
 * @size: Queue table size from version to last parametr in qhdr entry
 * @qhdr0_offset: Offset to the start of first qhdr
 * @qhdr_size: Queue header size in bytes
 * @num_q: Total number of queues in Queue table
 * @num_active_q: Total number of active queues
 * @device_addr: Device address of the queue
 * @name: Queue name in characters
 * @q_hdr: Array of queue headers
 */
struct iris_hfi_queue_table_header {
	u32 version;
	u32 size;
	u32 qhdr0_offset;
	u32 qhdr_size;
	u32 num_q;
	u32 num_active_q;
	void *device_addr;
	char name[256]; /* NUL-terminated array of characters */
	struct iris_hfi_queue_header q_hdr[IFACEQ_NUMQ];
};

struct iris_iface_q_info {
	struct iris_hfi_queue_header *qhdr;
	dma_addr_t	device_addr;
	void		*kernel_vaddr;
};

int iris_hfi_queues_init(struct iris_core *core);
void iris_hfi_queues_deinit(struct iris_core *core);

int iris_hfi_queue_cmd_write_locked(struct iris_core *core, void *pkt, u32 pkt_size);
int iris_hfi_queue_cmd_write(struct iris_core *core, void *pkt, u32 pkt_size);
int iris_hfi_queue_msg_read(struct iris_core *core, void *pkt);
int iris_hfi_queue_dbg_read(struct iris_core *core, void *pkt);

#endif

Annotation

Implementation Notes