[PATCH v4 2/7] dt-bindings: phy: rockchip,rk3588-mipi-dcphy: Allow DSI and CSI consumers

From: Jason Yang via B4 Relay

Date: Fri Aug 21 2026 - 08:03:20 EST


From: Jason Yang <jason98166@xxxxxxxxx>

The Samsung MIPI D-/C-PHY block on RK3588 and RK3576 has a transmitter
(DSI) and a receiver (CSI) on the same PHY, and two drivers can use them
at the same time. The single cell this binding has selects the mode, so
it cannot tell whether a consumer wants the transmitter or the receiver.

Allow a second cell that selects the transmitter or the receiver. With
D-PHY:

/* the MIPI DSI host, driving the transmitter */
phys = <&mipidcphy0 PHY_TYPE_DPHY PHY_TYPE_DSI>;

/* the MIPI CSI-2 host, driving the receiver */
phys = <&mipidcphy0 PHY_TYPE_DPHY PHY_TYPE_CSI>;

and with C-PHY:

phys = <&mipidcphy0 PHY_TYPE_CPHY PHY_TYPE_DSI>;
phys = <&mipidcphy0 PHY_TYPE_CPHY PHY_TYPE_CSI>;

The transmitter and the receiver cannot operate in different modes [1],
so the first cell must match in both consumers.

A board that wires up both sets '#phy-cells = <2>'. A board that only
wires up the transmitter keeps '#phy-cells = <1>', so existing device
trees are unaffected.

[1] RK3588 TRM: section 22.1 (overview): "The TX and RX only support
operate in the same PHY mode."

Signed-off-by: Jason Yang <jason98166@xxxxxxxxx>
---
.../bindings/phy/rockchip,rk3588-mipi-dcphy.yaml | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3588-mipi-dcphy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3588-mipi-dcphy.yaml
index c8ff5ba22a86..595a71a51ee6 100644
--- a/Documentation/devicetree/bindings/phy/rockchip,rk3588-mipi-dcphy.yaml
+++ b/Documentation/devicetree/bindings/phy/rockchip,rk3588-mipi-dcphy.yaml
@@ -20,11 +20,25 @@ properties:
maxItems: 1

"#phy-cells":
- const: 1
+ enum: [1, 2]
description: |
- Argument is mode to operate in. Supported modes are:
+ A single cell selects the mode to operate in and refers to the
+ transmitter:
- PHY_TYPE_DPHY
- PHY_TYPE_CPHY
+
+ Two cells select the mode and then the transmitter (DSI) or the
+ receiver (CSI), so that both can be described as independent
+ consumers of the same PHY:
+ - PHY_TYPE_DPHY PHY_TYPE_DSI
+ - PHY_TYPE_DPHY PHY_TYPE_CSI
+ - PHY_TYPE_CPHY PHY_TYPE_DSI
+ - PHY_TYPE_CPHY PHY_TYPE_CSI
+
+ The transmitter (DSI) and the receiver (CSI) cannot operate in
+ different modes, so when both are described, the first cell must
+ match in both consumers.
+
See include/dt-bindings/phy/phy.h for constants.

clocks:
@@ -82,6 +96,6 @@ examples:
<&cru SRST_S_MIPI_DCPHY0>;
reset-names = "m_phy", "apb", "grf", "s_phy";
rockchip,grf = <&mipidcphy0_grf>;
- #phy-cells = <1>;
+ #phy-cells = <2>;
};
};

--
2.43.0