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.
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/pm_domain.hmedia/v4l2-device.hiris_hfi_common.hiris_hfi_queue.hiris_platform_common.hiris_resources.hiris_state.h
Detected Declarations
struct icc_infostruct qcom_ubwc_cfg_datastruct iris_coreenum domain_type
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
- Immediate include surface: `linux/types.h`, `linux/pm_domain.h`, `media/v4l2-device.h`, `iris_hfi_common.h`, `iris_hfi_queue.h`, `iris_platform_common.h`, `iris_resources.h`, `iris_state.h`.
- Detected declarations: `struct icc_info`, `struct qcom_ubwc_cfg_data`, `struct iris_core`, `enum domain_type`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
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.