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

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

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/qcom/iris/iris_core.h
Extension
.h
Size
4811 bytes
Lines
132
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 icc_info {
	const char		*name;
	u32			bw_min_kbps;
	u32			bw_max_kbps;
};

#define IRIS_FW_VERSION_LENGTH		128
#define IFACEQ_CORE_PKT_SIZE		(1024 * 4)

enum domain_type {
	ENCODER	= BIT(0),
	DECODER	= BIT(1),
};

struct qcom_ubwc_cfg_data;

/**
 * struct iris_core - holds core parameters valid for all instances
 *
 * @dev: reference to device structure
 * @reg_base: IO memory base address
 * @irq: iris irq
 * @v4l2_dev: a holder for v4l2 device structure
 * @vdev_dec: iris video device structure for decoder
 * @vdev_enc: iris video device structure for encoder
 * @iris_v4l2_file_ops: iris v4l2 file ops
 * @iris_v4l2_ioctl_ops_dec: iris v4l2 ioctl ops for decoder
 * @iris_v4l2_ioctl_ops_enc: iris v4l2 ioctl ops for encoder
 * @iris_vb2_ops: iris vb2 ops
 * @icc_tbl: table of iris interconnects
 * @icc_count: count of iris interconnects
 * @pmdomain_tbl: table of iris power domains
 * @opp_pmdomain_tbl: table of opp power domains
 * @clock_tbl: table of iris clocks
 * @clk_count: count of iris clocks
 * @resets: table of iris reset clocks
 * @controller_resets: table of controller reset clocks
 * @iris_platform_data: a structure for platform data
 * @iris_firmware_data: a pointer to the firmware (or HFI) specific data
 * @iris_firmware_desc: a pointer to the firmware-specific descriptive data
 * @ubwc_cfg: UBWC configuration for the platform
 * @state: current state of core
 * @iface_q_table_daddr: device address for interface queue table memory
 * @sfr_daddr: device address for SFR (Sub System Failure Reason) register memory
 * @iface_q_table_vaddr: virtual address for interface queue table memory
 * @sfr_vaddr: virtual address for SFR (Sub System Failure Reason) register memory
 * @command_queue: shared interface queue to send commands to firmware
 * @message_queue: shared interface queue to receive responses from firmware
 * @debug_queue: shared interface queue to receive debug info from firmware
 * @lock: a lock for this strucure
 * @response_packet: a pointer to response packet from fw to driver
 * @header_id: id of packet header
 * @packet_id: id of packet
 * @power: a structure for clock and bw information
 * @hfi_sys_ops: iris HFI system ops
 * @core_init_done: structure of signal completion for system response
 * @intr_status: interrupt status
 * @sys_error_handler: a delayed work for handling system fatal error
 * @instances: a list_head of all instances
 * @inst_fw_caps_dec: an array of supported instance capabilities by decoder
 * @inst_fw_caps_enc: an array of supported instance capabilities by encoder
 */

struct iris_core {
	struct device				*dev;
	void __iomem				*reg_base;
	int					irq;
	struct v4l2_device			v4l2_dev;
	struct video_device			*vdev_dec;
	struct video_device			*vdev_enc;
	const struct v4l2_file_operations	*iris_v4l2_file_ops;
	const struct v4l2_ioctl_ops		*iris_v4l2_ioctl_ops_dec;
	const struct v4l2_ioctl_ops		*iris_v4l2_ioctl_ops_enc;
	const struct vb2_ops			*iris_vb2_ops;
	struct icc_bulk_data			*icc_tbl;
	u32					icc_count;
	struct dev_pm_domain_list		*pmdomain_tbl;
	struct dev_pm_domain_list		*opp_pmdomain_tbl;
	struct clk_bulk_data			*clock_tbl;
	u32					clk_count;
	struct reset_control_bulk_data		*resets;
	struct reset_control_bulk_data		*controller_resets;
	const struct iris_platform_data		*iris_platform_data;
	const struct iris_firmware_data		*iris_firmware_data;
	const struct iris_firmware_desc		*iris_firmware_desc;
	const struct qcom_ubwc_cfg_data		*ubwc_cfg;
	enum iris_core_state			state;
	dma_addr_t				iface_q_table_daddr;
	dma_addr_t				sfr_daddr;
	void					*iface_q_table_vaddr;

Annotation

Implementation Notes