STRUCT I3C_DEVICE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct i3c_device β€” the I3C device object, bestie πŸ’–

okay so this is a page straight out of the Kernel API Manual, and it's about struct i3c_device. no cap, it's a short one, but it's lowkey important if you're poking at I3C drivers. let's get into it πŸ¦‹


✨ NAME ✨

struct i3c_device β€” the I3C device object. that's it, that's the whole vibe. it's the thing that represents an I3C device πŸŽ€


🌸 SYNOPSIS 🌸

here's the shape of her, exactly as she is:

struct i3c_device {
    struct device dev;
    struct i3c_dev_desc *desc;
    struct i3c_bus *bus;
    struct list_head node;
 };

she's giving very "small struct, big responsibilities" energy πŸ’…


🧚 Members 🧚

let's meet the girlies inside the struct, one by one:

  • dev β€” the device object that registers this I3C dev with the device model. she's the one doing the official paperwork πŸ“‹
  • desc β€” a pointer to an i3c device descriptor object. heads up bestie, this link gets updated every single time the I3C device is rediscovered with a different dynamic address assigned. so don't go caching it and expecting it to stay put, okay? 😭
  • bus β€” the I3C bus this device is attached to. where she lives 🏠
  • node β€” an unregistered device list node. and listen: it's only for use by i3c_master_register_new_i3c_devs, and it is not protected by a lock. i'm literally begging you, don't go grabbing at this one 🫢
⚠️ that node field is a warning-grade vibe. i3c_master_register_new_i3c_devs only, no lock, no exceptions. periodt.

πŸ’œ Description πŸ’œ

so what is this thing? struct i3c_device is the I3C device object exposed to I3C device drivers. it takes care of linking this object to the relevant struct_i3c_dev_desc one πŸ”—

and the scope? all I3C devs on the I3C bus are represented β€” including I3C masters, yes ma'am πŸ‘‘ for each of them, we have an instance of struct i3c_device. every. single. one. it's giving main character energy for the whole bus ngl 🌈


⭐ SEE ALSO ⭐

go read these next, i promise they're worth it πŸ’– the kernel file is ./include/linux/i3c/master.h, and the whole friend group is:


and that's the whole page, bestie!! πŸ“ ok one last cute sign-off: this little icon lives over in ./include/linux/i3c, dated October 2026 ✨ like, she's from the future and she still ate. mwah πŸ’…πŸ’–

πŸ“¦ where this page comes from