STRUCT VENUS_CORE(9)
π struct venus_core β Kernel API Manual (core.h girlies rise up) π
okay so bestie, we're looking at struct venus_core(9) from the Kernel API Manual, and honestly? she's the main character of core.h. literally holds core parameters valid for all instances. no cap. every Venus instance out there is looking up to this one struct like she's the group chat admin π«Ά
β¨ NAME β¨
struct venus_core β holds core parameters valid for all instances π
πΈ SYNOPSIS πΈ
like, here's her whole personality, character for character, don't touch a single byte:
struct venus_core {
void __iomem *base;
void __iomem *vbif_base;
void __iomem *cpu_base;
void __iomem *cpu_cs_base;
void __iomem *cpu_ic_base;
void __iomem *wrapper_base;
void __iomem *wrapper_tz_base;
void __iomem *aon_base;
int irq;
struct clk *clks[VIDC_CLKS_NUM_MAX];
struct clk *vcodec_clks[VIDC_VCODEC_CLKS_NUM_MAX];
struct clk *vcodec0_clks[VIDC_VCODEC_CLKS_NUM_MAX];
struct clk *vcodec1_clks[VIDC_VCODEC_CLKS_NUM_MAX];
struct icc_path *video_path;
struct icc_path *cpucfg_path;
struct dev_pm_domain_list *pmdomains;
struct dev_pm_domain_list *opp_pmdomain;
struct reset_control *resets[VIDC_RESETS_NUM_MAX];
struct video_device *vdev_dec;
struct video_device *vdev_enc;
struct v4l2_device v4l2_dev;
const struct venus_resources *res;
struct device *dev;
struct device *dev_dec;
struct device *dev_enc;
unsigned int use_tz;
struct video_firmware {
struct device *dev;
struct iommu_domain *iommu_domain;
size_t mapped_mem_size;
phys_addr_t mem_phys;
size_t mem_size;
} fw;
struct mutex lock;
struct list_head instances;
atomic_t insts_count;
unsigned int state;
struct completion done;
unsigned int error;
unsigned long sys_error;
wait_queue_head_t sys_err_done;
const struct hfi_core_ops *core_ops;
const struct venus_pm_ops *pm_ops;
struct mutex pm_lock;
unsigned long enc_codecs;
unsigned long dec_codecs;
unsigned int max_sessions_supported;
void *priv;
const struct hfi_ops *ops;
struct delayed_work work;
struct hfi_plat_caps caps[MAX_CODEC_NUM];
unsigned int codecs_count;
unsigned int core0_usage_count;
unsigned int core1_usage_count;
struct dentry *root;
struct firmware_version venus_ver;
unsigned long dump_core;
struct of_changeset *ocs;
bool hwmode_dev;
};
it's giving "longest group chat bio ever" and I'm obsessed π
π¦ Members π¦
okay so now we go member by member, and yes we're doing ALL of them, because every single field is iconic in her own way:
baseβ IO memory base address β¨vbif_baseβ IO memory vbif base addresscpu_baseβ IO memory cpu base addresscpu_cs_baseβ IO memory cpu_cs base addresscpu_ic_baseβ IO memory cpu_ic base addresswrapper_baseβ IO memory wrapper base address πwrapper_tz_baseβ IO memory wrapper TZ base addressaon_baseβ AON base addressirqβ Venus irq π₯clksβ an array ofstruct clkpointersvcodec_clksβ an array of vcodecstruct clkpointersvcodec0_clksβ an array of vcodec0struct clkpointersvcodec1_clksβ an array of vcodec1struct clkpointersvideo_pathβ an interconnect handle to video to/from memory path πcpucfg_pathβ an interconnect handle to cpu configuration pathpmdomainsβ a pointer to a list of pmdomainsopp_pmdomainβ an OPP power-domainresetsβ an array of reset signalsvdev_decβ a reference to video device structure for decoder instancesvdev_encβ a reference to video device structure for encoder instancesv4l2_devβ a holder for v4l2 device structureresβ a reference to venus resources structuredevβ conveniencestruct devicepointerdev_decβ conveniencestruct devicepointer for decoder devicedev_encβ conveniencestruct devicepointer for encoder deviceuse_tzβ a flag that suggests presence of trustzone π΅οΈββοΈfwβ structure of firmware parameterslockβ a lock for this strucure (yes, that's exactly how the original spells it, leaving it as is bestie, character for character π)instancesβ alist_headof all instancesinsts_countβ num of instancesstateβ the state of the venus coredoneβ a completion for sync HFI operationserrorβ an error returned during last HFI sync operations πsys_errorβ an error flag that signal system error eventsys_err_doneβ a waitqueue to wait for system error recovery endcore_opsβ the core operationspm_opsβ a pointer to pm operationspm_lockβ a lock for PM operationsenc_codecsβ encoders supported by this coredec_codecsβ decoders supported by this coremax_sessions_supportedβ holds the maximum number of sessions πprivβ a private filed for HFI operations (again, verbatim, don't come for me π)opsβ the core HFI operationsworkβ a delayed work for handling system fatal error πcapsβ an array of supported HFI capabilitiescodecs_countβ platform codecs countcore0_usage_countβ usage counter forcore0core1_usage_countβ usage counter forcore1rootβ debugfs root directory πΈvenus_verβ the venus firmware versiondump_coreβ a flag indicating that a core dump is requiredocsβ OF changeset pointerhwmode_devβ a flag indicating thatHW_CTRL_TRIGGERis used in clock driver β
lowkey a whole personality test in struct form. every field ate, no crumbs. π
π§ SEE ALSO π§
- Kernel file
./drivers/media/platform/qcom/venus/core.hstructvenus_inst(9)
like, go read her sister page too, iykyk π¦
and that's the whole vibe check bestie π this came from the source ./drivers/media/platform/qcom/... and the version/date on the original footer was October 2026 β so yeah, she's from the future, which honestly tracks. slay, struct venus_core(9), 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