[PATCH 0/9] misc: Support TI FPC202 dual-port controller

Romain Gantois
2024-11-08T15:37:09Z

Hello everyone,

This series adds support for the TI FPC202 dual-port controller. This is an
unusual kind of device which is used as a low-speed signal aggregator for
various types of SFP-like hardware ports.

The FPC202 exposes an I2C, or SPI (not supported in this series) control
interface, which can be used to access two downstream I2C busses, along
with a set of low-speed GPIO signals for each port. It also has I2C address
translation (ATR) features, which allow multiple I2C devices with the same
address (e.g. SFP EEPROMs at address 0x50) to be accessed from the upstream
control interface on different addresses.

I've chosen to add this driver to the misc subsystem, as it doesn't
strictly belong in either the i2c or gpio sybsystem, and as far as I know
it is the first device of its kind to be added to the kernel.

Along with the FPC202 driver itself, this series also adds support for
dynamic address translation to the i2c-atr module. This allows I2C address
translators to update their translation table on-the-fly when they receive
transactions to unmapped clients. This feature is needed by the FPC202
driver to access up to three logical I2C devices per-port, given that the
FPC202 address translation table only has two address slots.

Best Regards,

Romain

Signed-off-by: Romain Gantois <romain.gantois@bootlin.com>
---
Romain Gantois (9):
dt-bindings: misc: Describe TI FPC202 dual port controller
media: i2c: ds90ub960: Replace aliased clients list with bitmap
media: i2c: ds90ub960: Protect alias_use_mask with a mutex
i2c: use client addresses directly in ATR interface
i2c: move ATR alias pool to a separate struct
i2c: rename field 'alias_list' of struct i2c_atr_chan to 'alias_pairs'
i2c: support per-channel ATR alias pools
i2c: Support dynamic address translation
misc: add FPC202 dual port controller driver

.../devicetree/bindings/misc/ti,fpc202.yaml | 75 ++++
MAINTAINERS | 7 +
drivers/i2c/i2c-atr.c | 480 ++++++++++++++-------
drivers/media/i2c/ds90ub913.c | 9 +-
drivers/media/i2c/ds90ub953.c | 9 +-
drivers/media/i2c/ds90ub960.c | 65 +--
drivers/misc/Kconfig | 11 +
drivers/misc/Makefile | 1 +
drivers/misc/ti_fpc202.c | 421 ++++++++++++++++++
include/linux/i2c-atr.h | 67 ++-
10 files changed, 949 insertions(+), 196 deletions(-)
---
base-commit: 9852d85ec9d492ebef56dc5f229416c925758edc
change-id: 20241017-fpc202-6f0b739c2078

Best regards,
--
Romain Gantois <romain.gantois@bootlin.com>