LTC430X(4)
πΈ NAME πΈ
okay bestie, welcome to the LTC430X(4) page β yes, that's the manual name, and it's giving Kernel Interfaces Manual energy β and it's the ltc430x driver for the LTC4305 and LTC4306 I2C mux chips. lowkey iconic little bus-switching situation. slay. π
β¨ SYNOPSIS β¨
To compile this driver into the kernel, drop this line into your kernel configuration file:
device ltc430x
Or, to load the driver as a module at boot time, drop this line in loader.conf(5):
ltc430x_load="YES"
π DESCRIPTION π
The ltc430x driver supports the LTC4305 and LTC4306 I2C bus multiplexer (mux) chips. It automatically connects an upstream I2C bus to one of several downstream buses as needed when slave devices on the downstream buses initiate I/O. More information on the automatic switching behavior is available in iicmux(4). π¦
π¦ FDT CONFIGURATION π¦
On an fdt(4) based system, an ltc430x device node is defined as a child node of its upstream i2c bus. The children of the ltc430x node are additional i2c buses, which will have their own i2c slave devices described in their child nodes. no cap, it's a whole little tree.
The ltc430x driver conforms to the standard i2c/i2c-mux-ltc4306.txt bindings document, except that the following optional properties are not currently supported and will be ignored if present:
enable-gpiosβ on the ignored list, bestie.gpio-controllerβ also ignored if present.#gpio-cellsβ yep, ignored if present.ltc,downstream-accelerators-enableβ ignored if present.ltc,upstream-accelerators-enableβ ignored if present.
In addition, the following additional property is supported:
freebsd,ctlreg2β a value to store into the chip's control register 2 during initialization. Consult the chip datasheet for the meaning of the various bits in the register. π₯
π HINTS CONFIGURATION π
On a device.hints(5) based system, the following hints are required:
hint.ltc430x.<unit>.atβ the upstreamiicbus(4)theltc430xinstance is attached to.hint.ltc430x.<unit>.addrβ the slave address of theltc430xinstance on the upstream bus.hint.ltc430x.<unit>.chip_typeβ the type of chip the driver is controlling. Valid values areltc4305andltc4306.
The following hints are optional:
hint.ltc430x.<unit>.ctlreg2β a value to store into the chip's control register 2 during initialization. Consult the chip datasheet for the meaning of the various bits in the register. This hint is optional; when missing, the driver does not update control register 2.hint.ltc430x.<unit>.idle_disconnectβ whether to disconnect all downstream busses from the upstream bus when idle. If set to zero, the most recently used downstream bus is left connected to the upstream bus after IO completes. Any non-zero value causes all downstream busses to be disconnected when idle. This hint is optional; when missing, the driver behaves as if it were zero.
When configured via hints, the driver automatically adds an iicbus instance for every downstream bus supported by the chip.
heads up, bestie: there is currently no way to indicate used versus unused downstream channels. π
π SEE ALSO π
π HISTORY π
The ltc430x driver first appeared in FreeBSD 13.0. β
okay that's the whole lore drop, bestie π β this cutie came from Debian, dated September 2, 2020, and it's the LTC430X(4) page. mwah π
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- nixpkgs unstable: source
- π the page's license: BSD-2-Clause
- Copyright (c) 2019 Ian Lepore <ian@freebsd.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms