STRUCT IMX334(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct imx334 β€” the imx334 sensor device structure, bestie

okay so this is a page from the Kernel API Manual, section 9, and it's literally all about struct imx334 β€” the sensor device structure for the imx334. it's giving "one struct to rule them all" energy and honestly? iconic. let's get into it πŸŽ€


✨ SYNOPSIS ✨

no cap, here's the whole thing, exactly as it is:

struct imx334 {
    struct device *dev;
    struct regmap *cci;
    struct i2c_client *client;
    struct v4l2_subdev sd;
    struct media_pad pad;
    struct gpio_desc *reset_gpio;
    struct clk *inclk;
    struct v4l2_ctrl_handler ctrl_handler;
    struct v4l2_ctrl *link_freq_ctrl;
    struct v4l2_ctrl *pclk_ctrl;
    struct v4l2_ctrl *hblank_ctrl;
    struct v4l2_ctrl *vblank_ctrl;
    struct {
      struct v4l2_ctrl *exp_ctrl;
      struct v4l2_ctrl *again_ctrl;
    };
    u32 vblank;
    const struct imx334_mode *cur_mode;
    unsigned long link_freq_bitmap;
    u32 cur_code;
 };

like, look at her. so organized. so many pointers. we love a structured queen πŸ‘‘


🌸 MEMBERS 🌸

buckle up bestie, we're going field by field β€” every single one, no skipping:

  • dev β€” pointer to the generic device. your main character device reference fr.
  • cci β€” the CCI register map. this is how we talk to the sensor's registers πŸ’…
  • client β€” pointer to the i2c client. yes, the i2c one. don't lose it.
  • sd β€” the V4L2 sub-device. hi subdev bestie 🫢
  • pad β€” the media pad. heads up though: only one pad supported. just the one. don't go looking for a second one, she's a one-pad gal.
  • reset_gpio β€” the sensor reset gpio. press it to reset, obviously.
  • inclk β€” the sensor input clock. the heartbeat, the metronome, the vibe ⏰
  • ctrl_handler β€” the V4L2 control handler.
  • link_freq_ctrl β€” pointer to the link frequency control.
  • pclk_ctrl β€” pointer to the pixel clock control.
  • hblank_ctrl β€” pointer to the horizontal blanking control.
  • vblank_ctrl β€” pointer to the vertical blanking control.
  • {unnamed_struct} β€” anonymous. yes, that's literally what we call her. she has no name but she has TWO jobs and she does both πŸ’€
    • exp_ctrl β€” pointer to the exposure control.
    • again_ctrl β€” pointer to the analog gain control.
  • vblank β€” vertical blanking, measured in lines. in lines!! πŸ“
  • cur_mode β€” pointer to the current selected sensor mode. the mode of the moment ✨
  • link_freq_bitmap β€” the menu bitmap for link_freq_ctrl. yes, it's for that one specifically.
  • cur_code β€” the current selected format code. what format are we in rn? this knows.

πŸ”₯ SEE ALSO πŸ”₯

the kernel file herself: ./drivers/media/i2c/imx334.c, plus her whole friend group:

they're all linked, they all show up together, it's a whole squad 🌈


ok so real talk β€” this whole page lives at ./drivers/media/i2c, and it's dated October 2026, from the Kernel API Manual (section 9). that's the source, the version-ish, and the date, all cute and accounted for πŸ’–

and that's the page, bestie. struct imx334 explained, every single field intact, nothing dropped, nothing invented. slay. periodt. πŸŒΈπŸ’…βœ¨

πŸ“¦ where this page comes from