LTC430X(4)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1, nixpkgs unstable

🌸 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 upstream iicbus(4) the ltc430x instance is attached to.
  • hint.ltc430x.<unit>.addr β€” the slave address of the ltc430x instance on the upstream bus.
  • hint.ltc430x.<unit>.chip_type β€” the type of chip the driver is controlling. Valid values are ltc4305 and ltc4306.

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