STRUCT I2C_SPEC_VALUES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct i2c_spec_values(9) πŸ’–

okay so bestie, welcome to the Kernel API Manual β€” we're looking at struct i2c_spec_values today and honestly? it's giving "the rulebook for I2C timing" and I'm obsessed. this is the struct that holds all the I2C specification values for the various modes. no cap, it's just a big bag of nanoseconds. let's get into it ✨


🌸 NAME 🌸

struct i2c_spec_values β€” I2C specification values for various modes, aka the timing receipts for every mode the bus can run in πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

struct i2c_spec_values {
    unsigned long min_hold_start_ns;
    unsigned long min_low_ns;
    unsigned long min_high_ns;
    unsigned long min_setup_start_ns;
    unsigned long max_data_hold_ns;
    unsigned long min_data_setup_ns;
    unsigned long min_setup_stop_ns;
    unsigned long min_hold_buffer_ns;
 };

like, that's the whole vibe. eight unsigned long fields, all in nanoseconds, all iconic πŸ’…


✨ Members ✨

  • min_hold_start_ns β€” the min hold time for a (repeated) START condition. hold onto it, literally 🫢
  • min_low_ns β€” the min LOW period of the SCL clock. lowkey the low phase 🌸
  • min_high_ns β€” the min HIGH period of the SCL clock. and this is the highkey high phase ⭐
  • min_setup_start_ns β€” the min set-up time for a repeated START condition. prep time, bestie 🧚
  • max_data_hold_ns β€” the max data hold time. note the max β€” this one's the ceiling, not the floor πŸ‘‘
  • min_data_setup_ns β€” the min data set-up time πŸ”₯
  • min_setup_stop_ns β€” the min set-up time for a STOP condition. yes, even stopping needs a little runway πŸ’€
  • min_hold_buffer_ns β€” the min bus free time between a STOP and a START condition. the breather between acts, main character energy 🌈
bestie reminder: these are all unsigned long and all in ns. don't come for me with microseconds, that's not the vibe πŸ™ˆ

πŸ’œ SEE ALSO πŸ’œ

all the friends in the group chat live in the kernel file ./drivers/i2c/busses/i2c-rk3x.c β€” go say hi to:


that's the whole page, bestie β€” go forth and time your I2C bus correctly πŸ’–βœ¨

mwah πŸ’‹ this one came from ./drivers/i2c/busses, dated October 2026, and it's filed under struct i2c_spec_values(9) β€” periodt.

πŸ“¦ where this page comes from