---
name: "pca954x"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/pca954x"
---

# pca954x(4)

driver for PCA9548A I2C switch

## NAME

**pca954x** – driver for PCA9548A I2C switch

## SYNOPSIS

To compile this driver into the kernel, place the following line in your kernel configuration file:

**device pca954x** **device iicmux** **device iicbus**

Alternatively, to load the driver as a module at boot time, place the following line in [loader.conf(5)](/loader.conf/5.md):

```
pca954x_load="YES"
```

## DESCRIPTION

The **pca954x** driver supports the PCA9548A I2C bus switch and compatible chips such as TCA9548A. 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)](/iicmux/4.md).

## FDT CONFIGURATION

On an [FDT(4)](/FDT/4.md) based system, an **pca954x** device node is defined as a child node of its upstream I2C bus. The children of the **pca954x** node are additional I2C buses, which will have their own I2C slave devices described in their child nodes.

The **pca954x** driver attaches to nodes where the *compatible* property is set to one of

- "nxp,pca9548"

The **pca954x** driver supports the following optional properties in addition to the standard I2C mux properties:

- *i2c-mux-idle-disconnect*

  if defined, forces the switch to disconnect all children in idle state.

## HINTS CONFIGURATION

On a [device.hints(5)](/device.hints/5.md) based system, these values are configurable for **pca954x**:

- *hint.pca954x.\<unit\>.at*

  The upstream [iicbus(4)](/iicbus/4.md) the **pca954x** instance is attached to.

- *hint.pca954x.\<unit\>.chip\_type*

  The type of the chip. At present, only "pca9548" is supported.

When configured via hints, the driver automatically adds an [iicbus(4)](/iicbus/4.md) instance for every downstream bus supported by the chip. There is currently no way to indicate used versus unused channels.

## SEE ALSO

[iicbus(4)](/iicbus/4.md), [iicmux(4)](/iicmux/4.md)

## HISTORY

The **pca954x** driver and this manual page was written by Andriy Gapon ⟨*avg@FreeBSD.org*⟩.
