nuttx/drivers/i2c
dongjiuzhu1 da6a682abc drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang
This commit adds a new lower-half driver implementation for I2C bit-bang
that uses IO expander pins as the GPIO backend, enabling I2C bit-bang
functionality on systems where direct GPIO access is not available or
when I2C needs to be implemented using IO expander pins.

Background:
The existing I2C bit-bang driver (i2c_bitbang.c) provides a generic
upper-half implementation that requires a platform-specific lower-half
to control the SDA and SCL GPIO lines. Previously, each platform had to
implement its own lower-half using direct GPIO access.

Usage Example:
FAR struct ioexpander_dev_s *ioe = /* get IO expander */;
FAR struct i2c_master_s *i2c;

/* Initialize I2C bit-bang using IO expander pins 10 (SCL) and 11 (SDA) */
i2c = i2c_bitbang_ioexpander_initialize(ioe, 10, 11, 0);
if (i2c)
  {
    /* Use i2c master device normally */
  }

Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
2026-01-01 17:08:47 +08:00
..
CMakeLists.txt drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang 2026-01-01 17:08:47 +08:00
i2c_bitbang.c use small lock in following files 2024-12-22 18:43:26 +08:00
i2c_bitbang_ioexpander.c drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang 2026-01-01 17:08:47 +08:00
i2c_driver.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
i2c_read.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
i2c_slave_driver.c fs/drivers: Avoid causing a busy loop in the program due to context switching induced by sem_post. 2025-03-17 10:44:26 +01:00
i2c_write.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
i2c_writeread.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
Kconfig drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang 2026-01-01 17:08:47 +08:00
Make.defs drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang 2026-01-01 17:08:47 +08:00
pca9540bdp.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
pca9540bdp.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
tca9548a.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00