STRUCT I3C_DEV_DESC(9)
π struct i3c_dev_desc(9) π
okay bestie, buckle up β we're reading a Kernel API Manual page together, and honestly? it's giving main character energy for the I3C core. this one's struct i3c_dev_desc, the I3C device descriptor, and yes it's as iconic as it sounds π
β¨ NAME β¨
struct i3c_dev_desc β the I3C device descriptor, periodt π
πΈ SYNOPSIS πΈ
struct i3c_dev_desc {
struct i3c_i2c_dev_desc common;
struct i3c_device_info info;
struct mutex ibi_lock;
struct i3c_device_ibi_info *ibi;
struct i3c_device *dev;
const struct i3c_dev_boardinfo *boardinfo;
};
like, look at her. six fields. flawless. no cap π
π¦ Members π¦
commonβ the shared/common part of the I3C device descriptor. the group-chat crossover, iykyk π«Άinfoβ I3C device information. lowkey the best part: it gets automatically filled in for you when you create your device withi3c_master_add_i3c_dev_lockedβ¨ibi_lockβ the lock used to protect thestruct_i3c_device->ibi. somebody has to guard the door πibiβ the IBI info attached to a device. should beNULLuntili3c_device_request_ibiis called β so don't come for her before she's ready πdevβ pointer to the I3C device object exposed to I3C device drivers. major vibe check here: this should never be accessed from I3C master controller drivers. only core code should manipulate it when updating thedev<->desclink, or when propagating IBI events to the driver. respect the boundary bestie πboardinfoβ pointer to the boardinfo attached to this I3C device π
π Description π
so what is she? this is the internal representation of an I3C device π₯ this object is only used by the core, and it gets passed to I3C master controller drivers when they're requested to do some operations on the device.
the core is the one maintaining the link between the internal I3C dev descriptor and the object exposed to the I3C device drivers (struct_i3c_device). that's the whole job. she's the glue, literally π§
π SEE ALSO π
kernel file ./include/linux/i3c/master.h, plus the whole squad:
struct i3c_i2c_dev_desc(9)struct i2c_dev_boardinfo(9)struct i2c_dev_desc(9)struct i3c_ibi_slot(9)struct i3c_device_ibi_info(9)struct i3c_dev_boardinfo(9)struct i3c_device(9)enum i3c_bus_mode(9)enum i3c_open_drain_speed(9)enum i3c_addr_slot_status(9)struct i3c_bus(9)struct i3c_master_controller_ops(9)struct i3c_master_controller(9)i3c_bus_for_each_i2cdev(9)i3c_bus_for_each_i3cdev(9)struct i3c_dma(9)i3c_dev_get_master_data(9)i3c_dev_set_master_data(9)i2c_dev_get_master_data(9)i2c_dev_set_master_data(9)i3c_dev_get_master(9)i2c_dev_get_master(9)i3c_master_get_bus(9)
and that's the whole page, bestie, we ate that π this lil beauty lives in ./include/linux/i3c, dated October 2026 β slay, see you in the next man page πβ¨
π¦ 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