This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 0cd119126336ed0f0fc9146cb5a1b9ac522f5d39 Author: Filipe Cavalcanti <[email protected]> AuthorDate: Mon Jul 27 12:56:23 2026 -0300 documentation: mention PIO4IOE IO Expander Add a mention for the PI4IOE IO Expander under docs. Signed-off-by: Filipe Cavalcanti <[email protected]> --- .../components/drivers/special/ioexpander.rst | 97 ++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/Documentation/components/drivers/special/ioexpander.rst b/Documentation/components/drivers/special/ioexpander.rst index f52f019df43..2f2fa32f1b1 100644 --- a/Documentation/components/drivers/special/ioexpander.rst +++ b/Documentation/components/drivers/special/ioexpander.rst @@ -42,6 +42,102 @@ expanders the typical sequence is: ``boards/sim/sim/sim/src/sim_ioexpander.c``, ``boards/arm/nrf52/thingy52/src/nrf52_sx1509.c`` etc. +Supported devices +================= + +The following IO expander drivers are available under +``drivers/ioexpander/``. Each is enabled by its own Kconfig option (all +of them depend on ``CONFIG_IOEXPANDER``) and declares its initialization +routine in the header of the same name under +``include/nuttx/ioexpander/``. + +.. list-table:: + :header-rows: 1 + :widths: 40 10 14 36 + + * - Device + - Bus + - Pins + - Kconfig option + * - Awinic AW9523B + - I2C + - 16 + - ``IOEXPANDER_AW9523B`` + * - iC-Haus iC-JX + - SPI + - 16 + - ``IOEXPANDER_ICJX`` + * - ISO1H812G + - SPI + - 8 + - ``IOEXPANDER_ISO1H812G`` + * - ISO1I813T + - SPI + - 8 + - ``IOEXPANDER_ISO1I813T`` + * - Microchip MCP23008 / MCP23S08 + - I2C + - 8 + - ``IOEXPANDER_MCP23X08`` + * - Microchip MCP23017 / MCP23S17 + - I2C + - 16 + - ``IOEXPANDER_MCP23X17`` + * - NXP PCA9538 + - I2C + - 8 + - ``IOEXPANDER_PCA9538`` + * - NXP PCA9555 + - I2C + - 16 + - ``IOEXPANDER_PCA9555`` + * - NXP PCA9557 + - I2C + - 8 + - ``IOEXPANDER_PCA9557`` + * - PCF8574 + - I2C + - 8 + - ``IOEXPANDER_PCF8574`` + * - PCF8575 + - I2C + - 16 + - ``IOEXPANDER_PCF8575`` + * - Diodes PI4IOE5V6408 + - I2C + - 8 + - ``IOEXPANDER_PI4IOE5V6408`` + * - Semtech SX1509 + - I2C + - 16 + - ``IOEXPANDER_SX1509`` + * - TCA6408 / TCA6416 / TCA6424 / PCAL6416A + - I2C + - 8 / 16 / 24 / 16 + - ``IOEXPANDER_TCA64XX`` + +Notes on individual drivers: + +- ``IOEXPANDER_TCA64XX`` and ``IOEXPANDER_PCF8574`` additionally depend on + ``CONFIG_EXPERIMENTAL``. +- Drivers with a ``<device>_MULTIPLE`` option support more than one + instance of the same chip on a board. +- Drivers with a ``<device>_SHADOW_MODE`` option keep the output and + configuration registers cached in RAM instead of performing + read-modify-write cycles over the bus, and those with a + ``<device>_RETRY`` option retransmit on I2C errors. +- Per-device interrupt support is enabled with ``<device>_INT_ENABLE``, + which selects ``CONFIG_IOEXPANDER_INT_ENABLE``. Some drivers also + offer ``<device>_INT_POLL`` and ``<device>_INT_POLLDELAY`` to poll for + missed interrupts. + +In addition to the physical devices, the following drivers implement the +same lower-half interface without directly driving a chip: + +Note that ``CONFIG_IOEXPANDER_NPINS`` determines the width of +``ioe_pinset_t`` and must be at least as large as the pin count of the +device in use. + Further details =============== @@ -251,3 +347,4 @@ See the following drivers and board examples for concrete usage: - ``drivers/ioexpander/pca9555.c`` — I2C IO expander implementation. - ``drivers/ioexpander/ioe_rpmsg.c`` — RPMSG-based IO expander. - ``boards/arm/nrf52/thingy52/src/nrf52_sx1509.c`` — binding example. +- ``drivers/ioexpander/pi4ioe5v6408.c`` — PI4IOE5V6408 I2C I/O expander.
