I3C is supported for aDSP sensor communication only. It is not supported for Linux use cases.
Overview
Bus Characteristics
- 2-wire serial interface (SDA + SCL) supporting up to 12.5 MHz
- Backward compatible with legacy I2C devices on the same bus
- Address phase: 400 kHz
- Data phase: 12.5 MHz
Advanced Features
- In-band interrupt (IBI) support
- Hot-join (dynamic device addition)
- Synchronous timing and asynchronous timestamping
- 8-bit data parity during write operations
- Dynamic addressing of targets
- Single Data Rate (SDR) mode
- CCC (Common Command Codes) per MIPI I3C specification
Data Phase Modes
| Mode | Usage |
|---|---|
| Push-pull | I3C-capable devices |
| Open-drain | Mixed bus with I2C devices |

Packet Frame Structure
| Component | Description |
|---|---|
| S / Sr | Start or Repeat Start condition |
| I3C Dynamic Address | 7-bit dynamic address assigned during enumeration |
| R/W | Direction bit (1=Read, 0=Write) |
| ACK | Acknowledge (SDA low) |
| Data | 8-bit data payload |
| T | Transition bit (alternative to ACK/NACK) |
| P | Stop condition |
Bus Initialization
Controller Initialization
The I3C controller driver initializes the controller, including firmware loading and configuration settings.
Configuration and Device Database Reading
The driver reads the I3C configuration and device database:
- List of I2C static address devices
- List of I3C static address devices
- Expected I3C dynamic devices (vendor ID, device ID, predefined dynamic address, associated drivers)
- Optional hot-join allowed devices
Bus Configuration
The driver writes bus configuration to the controller:
- Operation frequency
- Pure/legacy I2C mode
- SDR/HDR enable/disable
- IBI-capable devices and expected data bytes
Software Configuration
Firmware Loading
I3C firmware for the QUP v3 serial engine loads with SSC QUP during aDSP bootup. Configuration files:GPIO Configuration
Troubleshooting
Devices Not Enumerated
Devices Not Enumerated
- Verify SDA/SCL connections and pull-up resistors (1–4.7 kΩ)
- Confirm vendor ID and device ID match expected values
Address Phase Timing Issues (400 kHz)
Address Phase Timing Issues (400 kHz)
Verify SCL frequency is 400 kHz during address phase. Adjust clock divider settings in firmware configuration.
Hot-Join Not Working
Hot-Join Not Working
- Verify hot-join is enabled in configuration
- Add device to the hot-join allowed list (vendor ID + device ID)
Signal Integrity Issues
Signal Integrity Issues
- Measure rise/fall times on SDA and SCL
- Adjust pull-up resistor values
- Reduce bus length or capacitance
Common Error Codes
| Error | Description | Solution |
|---|---|---|
ENXIO | Device not found | Verify connection and enumeration |
ETIMEDOUT | Transfer timeout | Check clock signals and device power |
EIO | I/O error | Check signal quality and pull-ups |
EPROTO | Protocol error | Verify timing parameters |
Resources
- MIPI I3C Specification
- Qualcomm Linux Interfaces Guide
- QUP v3 Serial Engine Documentation

