STRUCT TIMING_REGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

struct timing_regs β€” the AXI I2C timing registers that depend on the I2C spec, bestie πŸ’–

okay so picture this: it's giving "bag of timing numbers" and honestly? iconic. These are the register values that shift around depending on which I2C spec you're vibing with. No cap. πŸŽ€


✨ SYNOPSIS ✨

struct timing_regs {
    unsigned int tsusta;
    unsigned int tsusto;
    unsigned int thdsta;
    unsigned int tsudat;
    unsigned int tbuf;
 };

look at her. five unsigned int fields, all main character energy, zero drama. πŸ¦‹ (and yes, that trailing }; is indented exactly like that in the original β€” we don't fix, we don't merge, we don't touch. periodt. πŸ’…)


πŸ‘‘ Members πŸ‘‘

okay bestie, field-by-field, let's go β€” each one is a timing value, so think of them as little stopwatch readings that keep the bus from getting messy πŸ™ˆ

  • tsusta β€” the setup time for a repeated START condition ⏱️ like, how long you gotta wait before you can do the START thing again. Respect the setup time fr fr.
  • tsusto β€” the setup time for a STOP condition πŸ›‘ the little pause before you're allowed to say "we're done here."
  • thdsta β€” the hold time for a repeated START condition βœ‹ hold time, not setup time β€” different vibe, different number, don't mix them up iykyk.
  • tsudat β€” the setup time for data πŸ“ the window where your data gets its act together before it's read. iconic behavior only.
  • tbuf β€” the bus free time between STOP and START 🌈 the cool-down gap where the bus just breathes between one convo ending and the next one starting. self-care for the bus, honestly.
ngl these all sound similar and that's because they're all timing delays β€” but they are not interchangeable, so please don't go swapping them around. each field is a different spec-defined timing and the names are staying exactly as they are. πŸ’€

🫢 SEE ALSO 🫢

go read these next, bestie, they're the friends of this struct and they slay too:

  • Kernel file ./drivers/i2c/busses/i2c-xiic.c
  • struct xiic_i2c(9)
  • xiic_setclk(9)

and that's the whole page!! no more sections, that's literally it, go touch some registers πŸ’œ

~ cute little sign-off ~ this one lives under ./drivers/i2c/busses, it's marked October 2026, and the header up top calls her struct timing_regs(9) β€” from the Kernel API Manual. mwah, bye 🧚✨

πŸ“¦ where this page comes from