STRUCT I2C_DEV_DESC(9)
π struct i2c_dev_desc(9) β the Kernel API Manual, bestie edition π
okay so welcome to the Kernel API Manual, section 9, and today's main character is struct i2c_dev_desc β literally the I2C device descriptor. buckle up, it's short but it's iconic β¨
πΈ NAME πΈ
struct i2c_dev_desc β I2C device descriptor. that's it, that's the vibe. no cap π
β¨ SYNOPSIS β¨
here's the whole thing, bestie, look at her:
struct i2c_dev_desc {
struct i3c_i2c_dev_desc common;
struct i2c_client *dev;
u16 addr;
u8 lvr;
};
literally four fields and she's running the whole plot π«Ά
π¦ Members π¦
okay let's meet the cast, one by one:
commonβ the common part of the I2C device descriptor. like, the shared friend group of the descriptor world πdevβ the I2C device object that got registered to the I2C framework. she's official, she's on the list πaddrβ the I2C device address. how you find her in the crowd πlvrβ the LVR (Legacy Virtual Register) that the I3C core needs so it knows about the I2C device's limitations. like a little note that says "hey, this one can't do everything" π
π Description π
okay so picture this: every single I2C device connected on the bus gets her own i2c_dev_desc. no sharing, no copying, one each, periodt π
the core creates this object, and later it gets attached to the controller using struct_i3c_master_controller->ops->attach_i2c_dev. the way it literally just gets handed over π€
and struct_i2c_dev_desc is the internal representation of an I2C device that's connected on an I3C bus β like, the behind-the-scenes version, the understudy, the backstage pass π§
she also gets passed to all the struct_i3c_master_controller_ops hooks. everyone wants a piece of her, honestly π
π₯ SEE ALSO π₯
the whole friend group, no one left out, iykyk:
- Kernel file
./include/linux/i3c/master.hstruct i3c_i2c_dev_desc(9) struct i2c_dev_boardinfo(9)struct i3c_ibi_slot(9)struct i3c_device_ibi_info(9)struct i3c_dev_boardinfo(9)struct i3c_dev_desc(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)
bestie reminder: these page refs are exactly as written, don't come for me if you think one looks weird π
π that's the whole page, you ate that honestly. this came to you straight from the source file ./include/linux/i3c, dated October 2026, and it's filed under struct i2c_dev_desc(9). go forth and describe some I2C devices, queen ππ
π¦ 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