STRUCT IRIS_CORE(9)
π struct iris_core(9) π
okay so first things first: this is a page from the Kernel API Manual, and it's all about the struct that runs the whole show. bestie, this is the main character of the iris driver β <pink>struct iris_core</pink> β and it holds all the core parameters that are valid for all instances. every single one. no cap. π
β¨ SYNOPSIS β¨
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;
void *sfr_vaddr;
struct iris_iface_q_info command_queue;
struct iris_iface_q_info message_queue;
struct iris_iface_q_info debug_queue;
struct mutex lock;
u8 *response_packet;
u32 header_id;
u32 packet_id;
struct iris_core_power power;
const struct iris_hfi_sys_ops *hfi_sys_ops;
struct completion core_init_done;
u32 intr_status;
struct delayed_work sys_error_handler;
struct list_head instances;
struct platform_inst_fw_cap inst_fw_caps_dec[INST_FW_CAP_MAX];
struct platform_inst_fw_cap inst_fw_caps_enc[INST_FW_CAP_MAX];
};
look at her. absolutely iconic. π
πΈ Members πΈ
okay so every field gets its own lil moment, because they all matter. going in order, no skipping, we don't do that here π«Ά
devβ reference to device structurereg_baseβ IO memory base addressirqβ iris irqv4l2_devβ a holder for v4l2 device structurevdev_decβ iris video device structure for decodervdev_encβ iris video device structure for encoderiris_v4l2_file_opsβ iris v4l2 file opsiris_v4l2_ioctl_ops_decβ iris v4l2 ioctl ops for decoderiris_v4l2_ioctl_ops_encβ iris v4l2 ioctl ops for encoderiris_vb2_opsβ iris vb2 opsicc_tblβ table of iris interconnectsicc_countβ count of iris interconnectspmdomain_tblβ table of iris power domainsopp_pmdomain_tblβ table of opp power domainsclock_tblβ table of iris clocksclk_countβ count of iris clocksresetsβ table of iris reset clockscontroller_resetsβ table of controller reset clocksiris_platform_dataβ a structure for platform datairis_firmware_dataβ a pointer to the firmware (or HFI) specific datairis_firmware_descβ a pointer to the firmware-specific descriptive dataubwc_cfgβ UBWC configuration for the platformstateβ current state of coreiface_q_table_daddrβ device address for interface queue table memorysfr_daddrβ device address for SFR (Sub System Failure Reason) register memoryiface_q_table_vaddrβ virtual address for interface queue table memorysfr_vaddrβ virtual address for SFR (Sub System Failure Reason) register memorycommand_queueβ shared interface queue to send commands to firmwaremessage_queueβ shared interface queue to receive responses from firmwaredebug_queueβ shared interface queue to receive debug info from firmwarelockβ a lock for this strucureresponse_packetβ a pointer to response packet from fw to driverheader_idβ id of packet headerpacket_idβ id of packetpowerβ a structure for clock and bw informationhfi_sys_opsβ iris HFI system opscore_init_doneβ structure of signal completion for system responseintr_statusβ interrupt statussys_error_handlerβ a delayed work for handling system fatal errorinstancesβ a list_head of all instancesinst_fw_caps_decβ an array of supported instance capabilities by decoderinst_fw_caps_encβ an array of supported instance capabilities by encoder
ngl the way this struct is basically a whole group chat of pointers, counts, queues and one very important <hotpink>lock</hotpink>? it's giving "one shared brain for every instance" and honestly, slay. π
π¦ SEE ALSO π¦
- Kernel file
./drivers/media/platform/qcom/iris/iris_core.h
and that's the whole page, bestie!! π₯° go read the header file and you'll see her living her truth in the wild. this page is from ./drivers/media/platform/qcom/..., dated October 2026 β so like, mark your calendar, periodt. πβπ
π¦ 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