Hi, I’m working on a Raspberry Pi Compute Module 5 (CM5) carrier board and would like to clarify how MIPI interfaces (MIPI0 / MIPI1) interact with their associated I2C buses and GPIOs, especially in an application without any cameras.
General Understanding:
When using MIPI0 (DSI0/CSI0), the firmware allocates I2C0, which is on GPIO38 (SDA0) and GPIO39 (SCL0), for display or camera device control.
When using MIPI1 (DSI1/CSI1), the firmware uses the I2C bus mapped to ID_SD (GPIO0) and ID_SC (GPIO1) for MIPI1 peripheral control.
→ This I2C bus is separate from I2C0, but the documentation does not state which I2C controller it maps to (i.e., is it I2C1, I2C2, etc.?) — this is the main clarification I’m seeking.
If cameras are not used, can these I2C buses (GPIO38/39 and GPIO0/1) be safely repurposed for other peripherals like touch controllers or bridge ICs?
Can the same MIPI-linked I2C bus be used to control multiple I2C peripherals (e.g., a bridge IC and a touch controller) as long as their addresses don’t conflict?
Application-Specific Use Case for custom carrier board:
I plan to connect a MIPI DSI display to MIPI0, and an I2C touch controller on its associated I2C0 (GPIO38/39).
→ I do not use CSI0 or any camera.
→ Q1: Can I use I2C0 (GPIO38/39) for the touch controller in this case?
I also plan to connect a MIPI DSI to LVDS bridge IC (e.g., SN65DSI83) to MIPI1, and want to use the associated I2C bus on GPIO0/1 (ID_SD/ID_SC) for both:
The bridge IC, and
An I2C-based touch controller
→ No CSI1/camera is used.
→ Q2: Can I use GPIO0/1 (ID_SD/ID_SC) for both the bridge IC and the touch controller?
→ Q3: Which I2C bus number (I2C1, I2C2, etc.) do GPIO0/1 actually belong to when used this way?
General Understanding:
When using MIPI0 (DSI0/CSI0), the firmware allocates I2C0, which is on GPIO38 (SDA0) and GPIO39 (SCL0), for display or camera device control.
When using MIPI1 (DSI1/CSI1), the firmware uses the I2C bus mapped to ID_SD (GPIO0) and ID_SC (GPIO1) for MIPI1 peripheral control.
→ This I2C bus is separate from I2C0, but the documentation does not state which I2C controller it maps to (i.e., is it I2C1, I2C2, etc.?) — this is the main clarification I’m seeking.
If cameras are not used, can these I2C buses (GPIO38/39 and GPIO0/1) be safely repurposed for other peripherals like touch controllers or bridge ICs?
Can the same MIPI-linked I2C bus be used to control multiple I2C peripherals (e.g., a bridge IC and a touch controller) as long as their addresses don’t conflict?
Application-Specific Use Case for custom carrier board:
I plan to connect a MIPI DSI display to MIPI0, and an I2C touch controller on its associated I2C0 (GPIO38/39).
→ I do not use CSI0 or any camera.
→ Q1: Can I use I2C0 (GPIO38/39) for the touch controller in this case?
I also plan to connect a MIPI DSI to LVDS bridge IC (e.g., SN65DSI83) to MIPI1, and want to use the associated I2C bus on GPIO0/1 (ID_SD/ID_SC) for both:
The bridge IC, and
An I2C-based touch controller
→ No CSI1/camera is used.
→ Q2: Can I use GPIO0/1 (ID_SD/ID_SC) for both the bridge IC and the touch controller?
→ Q3: Which I2C bus number (I2C1, I2C2, etc.) do GPIO0/1 actually belong to when used this way?
Statistics: Posted by TEJA00432328 — Thu Jul 24, 2025 9:33 am