[PATCH RFC 0/3] Support the Nord CCI CCU output mux

From: Wenmeng Liu

Date: Thu Nov 05 2026 - 06:18:32 EST


On Nord, the CCI controllers are wrapped by a CCU. After reset, the
CCI I2C ports are routed to the CCU, and the CCU output mux must select
the CCI before it can be used.

The mux register is part of CAM_TOP, a register block shared by
multiple camera components and outside the CCI and CAMSS register
ranges. Accessing the block requires the camera subsystem top power
domain and AHB clock, and its state is lost when the power domain is
turned off.

This RFC describes CAM_TOP as a syscon and lets each CCI reference its
mux configuration through a phandle, register offset and mask. The CCI
driver selects the CCI at probe and runtime resume, right after enabling
the CCI clocks and before the CCI is reset or configured.

titan_cam_top: syscon@<addr> {
compatible = "qcom,nord-titan-cam-top", "syscon";
reg = <...>;
};

cci2: cci@<addr> {
compatible = "qcom,nord-cci", "qcom,msm8996-cci";
...
qcom,ccu-mux-sel = <&titan_cam_top OFFSET MASK>;
};

The CAM_TOP syscon does not describe its clock or power domain. A clock
attached to a syscon is kept prepared for the lifetime of the regmap,
which would keep the camera clock controller runtime active even when
the camera is idle. Instead, the CCI, as the consumer, writes the mux
with its own power domain and clocks, which include the AHB clock,
enabled.

An alternative is to introduce a dedicated CAM_TOP driver which owns
the clock and power domain, provides the regmap through
of_syscon_register_regmap() and handles runtime PM in its accessors.
This describes the hardware resources more completely and avoids the
debugfs issue, but adds a driver for a block currently used only by
the CCI.

We would like feedback on whether using a plain syscon with power and
clock management left to its consumer is acceptable, or whether CAM_TOP
should instead have a dedicated binding and driver.

---
Wenmeng Liu (3):
dt-bindings: mfd: syscon: Add Qualcomm Nord Titan CAM_TOP
dt-bindings: i2c: qcom-cci: Document Nord compatible
i2c: qcom-cci: Support the CCU output mux

.../devicetree/bindings/i2c/qcom,i2c-cci.yaml | 41 +++++++++++++++++++++
Documentation/devicetree/bindings/mfd/syscon.yaml | 1 +
drivers/i2c/busses/Kconfig | 1 +
drivers/i2c/busses/i2c-qcom-cci.c | 42 ++++++++++++++++++++++
4 files changed, 85 insertions(+)
---
base-commit: 8b7179210b22f8e48a82c5ceacb9d56a9c4cfec4
change-id: 20261105-ccu-99785a56dcd0

Best regards,
--
Wenmeng Liu <wenmeng.liu@xxxxxxxxxxxxxxxx>