STRUCT NOUVEAU_I2C_ENCODER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– STRUCT NOUVEAU_I2C_ENCODER(9) πŸ’–

okay bestie, buckle up, because this is a page from the Kernel API Manual β€” yes, the <pink>struct nouveau_i2c_encoder(9)</pink> one specifically β€” and it's actually kind of a slay once you get past the C syntax πŸ’…


✨ NAME ✨

struct nouveau_i2c_encoder β€” the I2C encoder struct, and yes she's exactly what she sounds like πŸŽ€


🌸 SYNOPSIS 🌸

bestie, here's the whole vibe, copy-pasted exactly because I would NEVER mess with your struct:

struct nouveau_i2c_encoder {
    struct drm_encoder base;
    const struct nouveau_i2c_encoder_funcs *encoder_i2c_funcs;
    void *encoder_i2c_priv;
    struct i2c_client *i2c_client;
 };

look at her. four members. iconic. 😌


πŸ¦‹ Members πŸ¦‹

  • base β€” the DRM encoder object, like the main character she literally is πŸ‘‘
  • encoder_i2c_funcs β€” the I2C encoder callbacks. her little entourage of function pointers ✨
  • encoder_i2c_priv β€” the I2C encoder private data. lowkey her diary, nobody else's business πŸ™ˆ
  • i2c_client β€” the corresponding I2C client structure. her plus-one 🫢

πŸ’œ Description πŸ’œ

so here's the tea, and it's genuinely interesting ngl β˜•

A nouveau_i2c_encoder lowkey has two sets of callbacks: encoder_i2c_funcs and the ones chilling inside base. and here's the thing bestie β€” the ones in encoder_i2c_funcs are never actually called by the common CRTC code 😭 not once. they're not there to be called, they're just a convenience thing πŸ’…

the whole point is splitting the encoder functions into two layers:

  • an upper, GPU-specific layer πŸ”₯
  • and a (hopefully) GPU-agnostic lower layer 🌈

and because nothing in life is free, it's the GPU driver's responsibility to call the nouveau_i2c_encoder methods when appropriate. so like, nobody's gonna do it for you, bestie. that's your job now 🫑

also, nouveau_i2c_encoder_init provides a way to get an implementation of this whole thing. that's your entry point, iykyk ⭐


πŸŽ€ SEE ALSO πŸŽ€

go look at these, fr fr:


ngl the source attribution got cut off in the footer β€” all that survives is ./drivers/gpu/drm/nouveau/incl... β€” but it's dated October 2026 and it's from the struct nouveau_i2c_encoder(9) page in the Kernel API Manual, so jot that down bestie πŸ“

and that's the whole page, periodt πŸ’…βœ¨ tysm for reading, go forth and call your encoder methods responsibly, mwah πŸ«ΆπŸ’–

πŸ“¦ where this page comes from