drivers/media/platform/qcom/venus/hfi_cmds.c
Source file repositories/reference/linux-study-clean/drivers/media/platform/qcom/venus/hfi_cmds.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/qcom/venus/hfi_cmds.c- Extension
.c- Size
- 37732 bytes
- Lines
- 1379
- 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/overflow.hlinux/errno.hlinux/hash.hhfi_cmds.h
Detected Declarations
function pkt_sys_initfunction pkt_sys_pc_prepfunction pkt_sys_idle_indicatorfunction pkt_sys_debug_configfunction pkt_sys_coverage_configfunction pkt_sys_ubwc_configfunction pkt_sys_set_resourcefunction pkt_sys_unset_resourcefunction pkt_sys_pingfunction pkt_sys_power_controlfunction pkt_sys_ssr_cmdfunction pkt_sys_image_versionfunction pkt_session_initfunction pkt_session_cmdfunction pkt_session_set_buffersfunction pkt_session_unset_buffersfunction pkt_session_etb_decoderfunction pkt_session_etb_encoderfunction pkt_session_ftbfunction pkt_session_parse_seq_headerfunction pkt_session_get_seq_hdrfunction pkt_session_flushfunction pkt_session_get_property_1xfunction pkt_session_set_property_1xfunction pkt_session_get_property_3xxfunction pkt_session_set_property_3xxfunction pkt_session_set_property_4xxfunction pkt_session_set_property_6xxfunction pkt_session_get_propertyfunction pkt_session_set_propertyfunction pkt_set_version
Annotated Snippet
switch (*in) {
case HFI_OUTPUT_ORDER_DECODE:
case HFI_OUTPUT_ORDER_DISPLAY:
break;
default:
ret = -EINVAL;
break;
}
pkt->data[1] = *in;
pkt->shdr.hdr.size += sizeof(u32) * 2;
break;
}
case HFI_PROPERTY_PARAM_VDEC_PICTURE_TYPE_DECODE: {
struct hfi_enable_picture *in = pdata, *en = prop_data;
en->picture_type = in->picture_type;
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*en);
break;
}
case HFI_PROPERTY_PARAM_VDEC_OUTPUT2_KEEP_ASPECT_RATIO: {
struct hfi_enable *in = pdata, *en = prop_data;
en->enable = in->enable;
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*en);
break;
}
case HFI_PROPERTY_PARAM_VDEC_ENABLE_SUFFICIENT_SEQCHANGE_EVENT:
case HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER: {
struct hfi_enable *in = pdata;
struct hfi_enable *en = prop_data;
en->enable = in->enable;
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*en);
break;
}
case HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM: {
struct hfi_multi_stream *in = pdata, *multi = prop_data;
multi->buffer_type = in->buffer_type;
multi->enable = in->enable;
multi->width = in->width;
multi->height = in->height;
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*multi);
break;
}
case HFI_PROPERTY_PARAM_VDEC_DISPLAY_PICTURE_BUFFER_COUNT: {
struct hfi_display_picture_buffer_count *in = pdata;
struct hfi_display_picture_buffer_count *count = prop_data;
count->count = in->count;
count->enable = in->enable;
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*count);
break;
}
case HFI_PROPERTY_PARAM_DIVX_FORMAT: {
u32 *in = pdata;
switch (*in) {
case HFI_DIVX_FORMAT_4:
case HFI_DIVX_FORMAT_5:
case HFI_DIVX_FORMAT_6:
break;
default:
ret = -EINVAL;
break;
}
pkt->data[1] = *in;
pkt->shdr.hdr.size += sizeof(u32) * 2;
break;
}
case HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING: {
struct hfi_enable *in = pdata, *en = prop_data;
en->enable = in->enable;
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*en);
break;
}
case HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER: {
struct hfi_enable *in = pdata, *en = prop_data;
en->enable = in->enable;
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*en);
break;
}
case HFI_PROPERTY_PARAM_VDEC_THUMBNAIL_MODE: {
struct hfi_enable *in = pdata, *en = prop_data;
en->enable = in->enable;
Annotation
- Immediate include surface: `linux/overflow.h`, `linux/errno.h`, `linux/hash.h`, `hfi_cmds.h`.
- Detected declarations: `function pkt_sys_init`, `function pkt_sys_pc_prep`, `function pkt_sys_idle_indicator`, `function pkt_sys_debug_config`, `function pkt_sys_coverage_config`, `function pkt_sys_ubwc_config`, `function pkt_sys_set_resource`, `function pkt_sys_unset_resource`, `function pkt_sys_ping`, `function pkt_sys_power_control`.
- 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.