STRUCT VPU(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct vpu ✨

okay so this is a page from the Kernel API Manual (section 9, struct vpu(9) β€” yes bestie, section nine, we're in kernel-internals territory πŸ’…) and it's literally just the tea on struct vpu, which is the Ingenic VPU remoteproc private structure. that's it, that's the whole vibe. she's private, she's Ingenic, she's a VPU, she keeps her business to herself 🫢


🌸 NAME 🌸

struct vpu β€” the Ingenic VPU remoteproc private structure. no cap, that's the name and the whole personality.


πŸŽ€ SYNOPSIS πŸŽ€

here's the actual shape of her, character for character, do not touch:

struct vpu {
    int irq;
    struct clk_bulk_data clks[2];
    void __iomem *aux_base;
    struct vpu_mem_info mem_info[ARRAY_SIZE(vpu_mem_map)];
    struct device *dev;
 };

like, look at that. five members. she's compact. she's iconic. she ate and left zero crumbs πŸ”₯


πŸ’… Members πŸ’…

okay now we get into the individual members, and honestly this is the part where i need you to lock in bestie, because these are the facts and the facts are not changing:

  • irq β€” the interrupt number. that's it. that's her whole job. one little int holding the interrupt number πŸ¦‹
  • clks β€” pointers to the VPU and AUX clocks. it's a struct clk_bulk_data, and note that it's clks[2] β€” two of them, because there are two clocks (VPU and AUX, as established). two clocks, two slots, math is mathing πŸ’œ
  • aux_base β€” a raw pointer to the AUX interface registers. it's void __iomem *, so it's raw and it's memory-mapped, and we respect that. register poking happens here, iykyk ✨
  • mem_info β€” an array of struct vpu_mem_info, which contain the mapping info of each of the external memories. and it's sized as ARRAY_SIZE(vpu_mem_map), so the size comes straight from vpu_mem_map, not from a hardcoded number. one entry per external memory, all mapped out, organized queen πŸ‘‘
  • dev β€” a private pointer to the device. private. pointer. device. the link back to the big struct device. she's got connections 🌈

πŸ” SEE ALSO πŸ”

if you want the actual source (and honestly, why wouldn't you), it lives in the Kernel file:

./drivers/remoteproc/ingenic_rproc.c

that's the spot. go read it, it's giving main character energy 🧚


and that's the page bestie πŸŽ€ nothing dangerous here, no deprecated flags, no undefined behaviour, just five struct members and a clock array of exactly two. keep the details exact and slay responsibly πŸ’–

sign-off time 🌸 this page came out of ./drivers/remoteproc and it's dated October 2026 β€” so like, future-dated, very ahead of its time, absolutely iconic of her. mwah πŸ’‹

πŸ“¦ where this page comes from