drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
Source file repositories/reference/linux-study-clean/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c- Extension
.c- Size
- 41833 bytes
- Lines
- 1407
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bitfield.hiris_hfi_gen2.hiris_hfi_gen2_packet.h
Detected Declarations
function Copyrightfunction iris_hfi_gen2_sys_image_versionfunction iris_hfi_gen2_sys_interframe_powercollapsefunction iris_hfi_gen2_sys_pc_prepfunction iris_hfi_gen2_get_portfunction iris_hfi_gen2_get_port_from_buf_typefunction iris_hfi_gen2_session_set_propertyfunction iris_hfi_gen2_set_raw_resolutionfunction iris_hfi_get_aligned_resolutionfunction iris_hfi_gen2_set_bitstream_resolutionfunction iris_hfi_gen2_set_crop_offsetsfunction iris_hfi_gen2_set_bit_depthfunction iris_hfi_gen2_set_coded_framesfunction iris_hfi_gen2_set_min_output_countfunction iris_hfi_gen2_set_picture_order_countfunction iris_hfi_gen2_set_colorspacefunction iris_hfi_gen2_set_profilefunction iris_hfi_gen2_set_levelfunction iris_hfi_gen2_set_opb_enablefunction iris_hfi_gen2_set_colorformatfunction iris_hfi_gen2_set_linear_stride_scanlinefunction iris_hfi_gen2_set_ubwc_stride_scanlinefunction iris_hfi_gen2_set_tierfunction iris_hfi_gen2_set_frame_ratefunction iris_hfi_gen2_set_film_grainfunction iris_hfi_gen2_set_super_blockfunction iris_hfi_gen2_session_set_config_paramsfunction iris_hfi_gen2_session_set_codecfunction iris_hfi_gen2_session_set_default_headerfunction iris_hfi_gen2_session_openfunction iris_hfi_gen2_session_closefunction iris_hfi_gen2_session_subscribe_modefunction iris_hfi_gen2_subscribe_change_paramfunction iris_hfi_gen2_subscribe_propertyfunction iris_hfi_gen2_session_startfunction iris_hfi_gen2_session_stopfunction iris_hfi_gen2_session_pausefunction iris_hfi_gen2_session_resume_drcfunction iris_hfi_gen2_session_resume_drainfunction iris_hfi_gen2_session_drainfunction iris_hfi_gen2_buf_type_from_driverfunction iris_hfi_gen2_set_num_comvfunction iris_hfi_gen2_get_bufferfunction iris_hfi_gen2_session_queue_bufferfunction iris_hfi_gen2_session_release_bufferfunction iris_hfi_gen2_sys_ops_init
Annotated Snippet
switch (plane) {
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
return HFI_PORT_BITSTREAM;
case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
return HFI_PORT_RAW;
default:
return HFI_PORT_NONE;
}
} else {
switch (plane) {
case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
return HFI_PORT_RAW;
case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
return HFI_PORT_BITSTREAM;
default:
return HFI_PORT_NONE;
}
}
}
static u32 iris_hfi_gen2_get_port_from_buf_type(struct iris_inst *inst,
enum iris_buffer_type buffer_type)
{
if (inst->domain == DECODER) {
switch (buffer_type) {
case BUF_INPUT:
case BUF_BIN:
case BUF_COMV:
case BUF_NON_COMV:
case BUF_LINE:
case BUF_PARTIAL:
return HFI_PORT_BITSTREAM;
case BUF_OUTPUT:
case BUF_DPB:
return HFI_PORT_RAW;
case BUF_PERSIST:
default:
return HFI_PORT_NONE;
}
} else {
switch (buffer_type) {
case BUF_INPUT:
case BUF_VPSS:
return HFI_PORT_RAW;
case BUF_OUTPUT:
case BUF_BIN:
case BUF_COMV:
case BUF_NON_COMV:
case BUF_LINE:
case BUF_SCRATCH_2:
return HFI_PORT_BITSTREAM;
case BUF_ARP:
default:
return HFI_PORT_NONE;
}
}
}
static int iris_hfi_gen2_session_set_property(struct iris_inst *inst, u32 packet_type, u32 flag,
u32 plane, u32 payload_type, void *payload,
u32 payload_size)
{
struct iris_inst_hfi_gen2 *inst_hfi_gen2 = to_iris_inst_hfi_gen2(inst);
iris_hfi_gen2_packet_session_property(inst,
packet_type,
flag,
plane,
payload_type,
payload,
payload_size);
return iris_hfi_queue_cmd_write(inst->core, inst_hfi_gen2->packet,
inst_hfi_gen2->packet->size);
}
static int iris_hfi_gen2_set_raw_resolution(struct iris_inst *inst, u32 plane)
{
u32 resolution = inst->enc_raw_width << 16 | inst->enc_raw_height;
u32 port = iris_hfi_gen2_get_port(inst, plane);
return iris_hfi_gen2_session_set_property(inst,
HFI_PROP_RAW_RESOLUTION,
HFI_HOST_FLAGS_NONE,
port,
HFI_PAYLOAD_32_PACKED,
&resolution,
sizeof(u32));
}
Annotation
- Immediate include surface: `linux/bitfield.h`, `iris_hfi_gen2.h`, `iris_hfi_gen2_packet.h`.
- Detected declarations: `function Copyright`, `function iris_hfi_gen2_sys_image_version`, `function iris_hfi_gen2_sys_interframe_powercollapse`, `function iris_hfi_gen2_sys_pc_prep`, `function iris_hfi_gen2_get_port`, `function iris_hfi_gen2_get_port_from_buf_type`, `function iris_hfi_gen2_session_set_property`, `function iris_hfi_gen2_set_raw_resolution`, `function iris_hfi_get_aligned_resolution`, `function iris_hfi_gen2_set_bitstream_resolution`.
- 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.