drivers/media/platform/qcom/venus/hfi_platform.h
Source file repositories/reference/linux-study-clean/drivers/media/platform/qcom/venus/hfi_platform.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/qcom/venus/hfi_platform.h- Extension
.h- Size
- 2263 bytes
- Lines
- 78
- 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/videodev2.hhfi.hhfi_plat_bufs.hhfi_helper.h
Detected Declarations
struct raw_formatsstruct hfi_plat_capsstruct hfi_platform_codec_freq_datastruct hfi_platform
Annotated Snippet
struct raw_formats {
u32 buftype;
u32 fmt;
};
struct hfi_plat_caps {
u32 codec;
u32 domain;
bool cap_bufs_mode_dynamic;
unsigned int num_caps;
struct hfi_capability caps[MAX_CAP_ENTRIES];
unsigned int num_pl;
struct hfi_profile_level pl[HFI_MAX_PROFILE_COUNT];
unsigned int num_fmts;
struct raw_formats fmts[MAX_FMT_ENTRIES];
bool valid; /* used only for Venus v1xx */
};
struct hfi_platform_codec_freq_data {
u32 pixfmt;
u32 session_type;
unsigned long vpp_freq;
unsigned long vsp_freq;
unsigned long low_power_freq;
};
struct hfi_platform {
unsigned long (*codec_vpp_freq)(struct venus_core *core,
u32 session_type, u32 codec);
unsigned long (*codec_vsp_freq)(struct venus_core *core,
u32 session_type, u32 codec);
unsigned long (*codec_lp_freq)(struct venus_core *core,
u32 session_type, u32 codec);
void (*codecs)(struct venus_core *core, u32 *enc_codecs,
u32 *dec_codecs, u32 *count);
const struct hfi_plat_caps *(*capabilities)(struct venus_core *core,
unsigned int *entries);
int (*bufreq)(struct hfi_plat_buffers_params *params, u32 session_type,
u32 buftype, struct hfi_buffer_requirements *bufreq);
};
extern const struct hfi_platform hfi_plat_v4;
extern const struct hfi_platform hfi_plat_v6;
const struct hfi_platform *hfi_platform_get(enum hfi_version version);
unsigned long hfi_platform_get_codec_vpp_freq(struct venus_core *core,
enum hfi_version version,
u32 codec, u32 session_type);
unsigned long hfi_platform_get_codec_vsp_freq(struct venus_core *core,
enum hfi_version version,
u32 codec, u32 session_type);
unsigned long hfi_platform_get_codec_lp_freq(struct venus_core *core,
enum hfi_version version,
u32 codec, u32 session_type);
#endif
Annotation
- Immediate include surface: `linux/types.h`, `linux/videodev2.h`, `hfi.h`, `hfi_plat_bufs.h`, `hfi_helper.h`.
- Detected declarations: `struct raw_formats`, `struct hfi_plat_caps`, `struct hfi_platform_codec_freq_data`, `struct hfi_platform`.
- 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.