STRUCT I2C_SPEC_VALUES(9)
π 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:
struct rk3x_i2c_calced_timings(9)struct rk3x_i2c_soc_data(9)struct rk3x_i2c(9)rk3x_i2c_start(9)rk3x_i2c_stop(9)rk3x_i2c_prepare_read(9)rk3x_i2c_fill_transmit_buf(9)rk3x_i2c_get_spec(9)rk3x_i2c_v0_calc_timings(9)rk3x_i2c_v1_calc_timings(9)rk3x_i2c_clk_notifier_cb(9)rk3x_i2c_setup(9)
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
- 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