STRUCT TEGRA_VI_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct tegra_vi_ops β€” Tegra VI operations ✨

okay so bestie, welcome to the struct tegra_vi_ops(9) page from the Kernel API Manual πŸ’… this is literally the little bundle of function pointers that tells the Tegra VI driver how to actually do stuff, and we're gonna walk through every single one of them. no skips, no shortcuts, no cap 🫢


🌸 NAME 🌸

struct tegra_vi_ops β€” the Tegra VI operations, aka the vibe check for your video input peripheral πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole struct, bestie, copied exactly so you can trust it:

struct tegra_vi_ops {
    int (*vi_enable)(struct tegra_vi *vi, bool on);
    int (*channel_host1x_syncpt_init)(struct tegra_vi_channel *chan);
    void (*channel_host1x_syncpt_free)(struct tegra_vi_channel *chan);
    void (*vi_fmt_align)(struct v4l2_pix_format *pix, unsigned int bpp);
    void (*channel_queue_setup)(struct tegra_vi_channel *chan);
    int (*vi_start_streaming)(struct vb2_queue *vq, u32 count);
    void (*vi_stop_streaming)(struct vb2_queue *vq);
};

look at it. it's giving "soc abstraction done right" 😭✨


πŸŽ€ Members πŸŽ€

  • vi_enable β€” the soc-specific operations you need to enable/disable the VI peripheral. think of it as the on/off switch, but make it per-soc 🌈
  • channel_host1x_syncpt_init β€” initialize synchronization points ✨
  • channel_host1x_syncpt_free β€” free all synchronization points πŸ¦‹ (yes, all of them, clean up after yourself, bestie)
  • vi_fmt_align β€” modify pix to fit the hardware alignment requirements and fill image geometry. it literally tells your pix format to sit up straight and match what the hardware expects πŸ’…
  • channel_queue_setup β€” additional operations at the end of vb2_ops::queue_setup. just a little extra somethin' at the finish line πŸŽ€
  • vi_start_streaming β€” starts media pipeline, subdevice streaming, sets up VI for capture and runs capture start and capture finish kthreads for capturing frames to buffer and returns them back. main character energy fr fr πŸ”₯ it's doing a lot
  • vi_stop_streaming β€” stops media pipeline and subdevice streaming and returns back any queued buffers. the graceful exit, iconic πŸ‘‘

πŸ’œ SEE ALSO πŸ’œ

go read these next, iykyk:

  • Kernel file ./drivers/staging/media/tegra-video/vi.h struct tegra_vi_soc(9), struct tegra_vi(9), struct tegra_vi_channel(9), struct tegra_channel_buffer(9), struct tegra_video_format(9)

ok that's the whole page, no notes 🫢 go forth and stream some frames, bestie πŸ“

and before you go β€” this lil beauty came from ./drivers/staging/media/tegra-..., dated October 2026, and it's struct tegra_vi_ops(9) all the way down πŸ’–πŸ§šβ€β™€οΈ

πŸ“¦ where this page comes from