[PATCH v4 2/7] dt-bindings: phy: rockchip,rk3588-mipi-dcphy: Allow DSI and CSI consumers
Jason Yang via B4 Relay <[email protected]>
| Newsgroups | org.infradead.lists.linux-phy,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.feeds.b4-sent,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: Jason Yang <[email protected]> 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 <[email protected]> --- .../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 -- linux-phy mailing list [email protected] https://lists.infradead.org/mailman/listinfo/linux-phy