STRUCT I2C_TIMINGS(9)
π struct i2c_timings β like, the whole vibe of I2C timing, explained
okay so bestie, welcome to the Kernel API Manual β¨ this one's a struct page, which means it's basically a little β¨glossaryβ¨ of every knob your I2C bus can turn. no cap, it's short but it's important, so let's get into it π
πΈ NAME πΈ
struct i2c_timings β literally just "I2C timing information". that's the whole thing. that's the tweet π¦
β¨ SYNOPSIS β¨
here's the icon itself, bestie β every field, character for character, do not touch π«Ά
struct i2c_timings {
u32 bus_freq_hz;
u32 scl_rise_ns;
u32 scl_fall_ns;
u32 scl_int_delay_ns;
u32 sda_fall_ns;
u32 sda_hold_ns;
u32 digital_filter_width_ns;
u32 analog_filter_cutoff_freq_hz;
};
π Members π
okay this is the main character section, let's go one by one π
bus_freq_hzβ the bus frequency, in Hz. the speed. the tempo. the beat the bus dances to πΊscl_rise_nsβ how long the SCL signal takes to rise, in ns. that'st(r)in the I2C specification, iykyk πscl_fall_nsβ how long SCL takes to fall, in ns. yes, that'st(f)in the I2C specification πscl_int_delay_nsβ the extra time the IP core needs to, like, set up SCL, in ns. extra setup era β³sda_fall_nsβ how long SDA takes to fall, in ns. alsot(f)in the I2C specification (yes it's the same symbol, no I'm not making that up π)sda_hold_nsβ the extra time the IP core needs to hold SDA, in ns. hold it. don't let go. π«Άdigital_filter_width_nsβ the width, in ns, of spikes on the i2c lines that the IP core's digital filter can filter out. so like, the little noise gremlins it can yeet πanalog_filter_cutoff_freq_hzβ the threshold frequency for the low pass IP core analog filter. the cutoff. the line. π
π SEE ALSO π
the whole friend group, in the exact order they showed up π
kernel file ./include/linux/i2c.h, and then:
i2c_master_recv(9)i2c_master_recv_dmasafe(9)i2c_master_send(9)i2c_master_send_dmasafe(9)struct i2c_device_identity(9)enum i2c_driver_flags(9)struct i2c_driver(9)struct i2c_client(9)struct i2c_board_info(9)I2C_BOARD_INFO(9)struct i2c_algorithm(9)struct i2c_lock_operations(9)struct i2c_bus_recovery_info(9)struct i2c_adapter_quirks(9)i2c_lock_bus(9)i2c_trylock_bus(9)i2c_unlock_bus(9)i2c_mark_adapter_suspended(9)i2c_mark_adapter_resumed(9)i2c_check_quirks(9)module_i2c_driver(9)builtin_i2c_driver(9)
ok that's the whole page, you ate that π
now go set your scl_rise_ns correctly or the bus will simply not slay.
and that's a wrap, bestie π brought to you by ./include/linux, dated October 2026, and yes the header is struct i2c_timings(9) β iconic, no notes β
π¦ 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