LTC430X(4)

πŸ’– LTC430X πŸ’– β€” the ltc430x driver, explained by your bestie

okay so. welcome to the ltc430x(4) page, from the Kernel Interfaces Manual πŸŽ€. yes bestie, we're in the kernel section. put your big-girl hat on, we're talking about a mux driver and it's gonna be cute, I promise.


✨ NAME ✨

ltc430x β€” the driver for the LTC4305 and LTC4306 I2C mux chips πŸ¦‹


🌸 SYNOPSIS 🌸

so like, you wanna bake this driver into the kernel? put this line in your kernel config file, periodt:

device ltc430x

orrrrr, if you'd rather load it as a module at boot time (iconic behaviour tbh), drop this into loader.conf(5):

ltc430x_load="YES"

πŸ’… DESCRIPTION πŸ’…

The ltc430x driver supports the LTC4305 and LTC4306 I2C bus multiplexer (mux) chips. 🫢

The way it works is genuinely main character energy: it automatically connects an upstream I2C bus to one of several downstream buses whenever slave devices on those downstream buses start doing I/O. like, it just knows. no cap.

if you want the full tea on that automatic switching behaviour, it lives in iicmux(4). go read it, iykyk.


🌈 FDT CONFIGURATION 🌈

on an fdt(4) based system, an ltc430x device node is defined as a child node of its upstream i2c bus. 🧚

and then β€” plot twist β€” the children of the ltc430x node are additional i2c buses, and those buses have their own i2c slave devices described in their child nodes. it's giving family tree. it's giving generations. πŸ’€

now, the ltc430x driver conforms to the standard bindings doc i2c/i2c-mux-ltc4306.txt, except that these optional properties are not currently supported and will be ignored if present πŸ™ˆ:

  • enable-gpios
  • gpio-controller
  • #gpio-cells
  • ltc,downstream-accelerators-enable
  • ltc,upstream-accelerators-enable
so if you put those in your device tree, bestie, they're just gonna sit there. ignored. ghosted. 😭

⭐ HINTS CONFIGURATION ⭐

on a device.hints(5) based system, this is what's configurable for ltc430x:

  • hint.ltc430x.<unit>.at β€” the upstream iicbus(4) that the ltc430x instance is attached to. πŸ“

when it's configured via hints, the driver automatically adds an iicbus instance for every downstream bus supported by the chip. so like, it just spawns them all. ✨

there is currently no way to indicate used versus unused channels β€” so yeah, that's just how it is rn. πŸ™ƒ


πŸ‘‘ SEE ALSO πŸ‘‘

iicbus(4), iicmux(4),


πŸŽ€ HISTORY πŸŽ€

The ltc430x driver first appeared in FreeBSD 13.0. a legend was born. πŸ’–


and that's the whole page, bestie!! πŸ¦‹ this one came from Debian, dated January 1, 2020 β€” so yeah, it's been slaying in the manual pages for a minute now. go forth and mux responsibly. πŸ’…πŸŒΈ

πŸ“¦ where this page comes from