STRUCT VSP1_ISP_JOB_DESC(9)
π struct vsp1_isp_job_desc(9) π
okay bestie, welcome to the struct vsp1_isp_job_desc(9) page from the Kernel API Manual β this one's all about describing a VSPX buffer transfer request, and honestly? it's giving "small struct, big responsibilities" energy. let's get into it π«Ά
β¨ NAME β¨
struct vsp1_isp_job_desc β literally just describes a VSPX buffer transfer request. that's the whole vibe. π
πΈ SYNOPSIS πΈ
struct vsp1_isp_job_desc {
struct {
unsigned int pairs;
dma_addr_t mem;
} config;
struct {
struct v4l2_pix_format_mplane fmt;
dma_addr_t mem;
} img;
struct vsp1_dl_list *dl;
};
here's the whole squad, member by member π
π Members π
configβ the ConfigDMA buffer descriptor. this is the config crew's home base πconfig.pairsβ how many reg-value pairs are chilling in the ConfigDMA buffer. count 'em, bestie π’config.memβ the bus address of the ConfigDMA buffer. so like, where it actually lives πimgβ the RAW image buffer descriptor. the image side of things πΌοΈimg.fmtβ the RAW image format. what shape the pixels are in πimg.memβ the bus address of the RAW image buffer. found it, marked it πdlβ pointer to the display list, populated by the VSPX driver inside thevsp1_isp_job_preparefunction. main character pointer energy tbh π
π¦ Description π¦
so what IS this thing? it describes a transfer request for the VSPX to perform on behalf of the ISP. that's the whole point. the job descriptor holds an optional ConfigDMA buffer and one RAW image buffer. π«‘
β οΈ okay this part matters SO much, pay attention: setconfig.pairsto0if no ConfigDMA buffer should be transferred. the minimum number ofconfig.pairsthat can be written using ConfigDMA is17. a number of pairs< 16corrupts the output image π. a number of pairs== 16freezes the VSPX operation π. so if the ISP driver has to write less than17pairs, it shall pad the buffer with writes directed to registers that have no effect β or just avoid using ConfigDMA entirely for those tiny write sequences. no cap, this is not optional lore.
the ISP driver shall pass an instance of this type to the vsp1_isp_job_prepare function, which will populate the display list pointer dl using the config and img descriptors. then, when the job has to be run on the VSPX, the descriptor shall be passed to vsp1_isp_job_run, which consumes the display list. π₯
and if you've got job descriptors that haven't been run yet? they shall be released with a call to vsp1_isp_job_release when stopping the streaming β because that's how the resources acquired by vsp1_isp_job_prepare get properly released. don't leave them hanging, bestie, that's rude π
π SEE ALSO π
- Kernel file
./include/media/vsp1.h struct vsp1_du_lif_config(9)struct vsp1_du_atomic_config(9)enum vsp1_du_crc_source(9)struct vsp1_du_crc_config(9)struct vsp1_du_writeback_config(9)struct vsp1_du_atomic_pipe_config(9)struct vsp1_isp_buffer_desc(9)struct vsp1_vspx_frame_end(9)
and that's the page!! π this one came from ./include/media, dated October 2026, and it's the struct vsp1_isp_job_desc(9) manual page β go forth and pad those buffers correctly, ily, bye πβ¨
π¦ 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