Add the dt-binding for the StarFive JH7110 HDMI MFD (Multi-Function Device).
The JH7110 HDMI IP is a monolithic block containing both the digital controller and analog PHY in a single register space. This binding defines the MFD parent device, which holds the shared register map and populates its two children: the PHY and the controller. This is necessary to resolve a circular clock dependency between the HDMI block and the VOUT clock generator. Signed-off-by: Michal Wilczynski <[email protected]> --- .../bindings/mfd/starfive,jh7110-hdmi-mfd.yaml | 93 ++++++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 94 insertions(+) diff --git a/Documentation/devicetree/bindings/mfd/starfive,jh7110-hdmi-mfd.yaml b/Documentation/devicetree/bindings/mfd/starfive,jh7110-hdmi-mfd.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2cbfb2b975083240575a0567b06e6cafd542cf9b --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/starfive,jh7110-hdmi-mfd.yaml @@ -0,0 +1,93 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/starfive,jh7110-hdmi-mfd.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: StarFive JH7110 HDMI MFD (Controller+PHY) + +maintainers: + - Michal Wilczynski <[email protected]> + +description: + The StarFive JH7110 HDMI block is a monolithic IP containing both + the digital controller logic and the analog PHY logic in a single + register space. + +properties: + compatible: + const: starfive,jh7110-hdmi-mfd + + reg: + maxItems: 1 + +required: + - compatible + - reg + +patternProperties: + "^phy(@[0-9a-f]+)?$": + $ref: ../phy/starfive,jh7110-inno-hdmi-phy.yaml# + "^controller(@[0-9a-f]+)?$": + $ref: ../display/bridge/starfive,jh7110-inno-hdmi-controller.yaml# + +additionalProperties: false + +examples: + - | + #include <dt-bindings/clock/starfive,jh7110-crg.h> + #include <dt-bindings/reset/starfive,jh7110-crg.h> + + soc { + #address-cells = <1>; + #size-cells = <1>; + + hdmi_mfd: hdmi@29590000 { + compatible = "starfive,jh7110-hdmi-mfd"; + reg = <0x29590000 0x4000>; + + hdmi_phy: phy { + compatible = "starfive,jh7110-inno-hdmi-phy"; + clocks = <&xin24m>; + clock-names = "refoclk"; + #clock-cells = <0>; + clock-output-names = "hdmi_pclk"; + #phy-cells = <0>; + }; + + hdmi_controller: controller { + compatible = "starfive,jh7110-inno-hdmi-controller"; + interrupts = <99>; + clocks = <&voutcrg JH7110_VOUTCLK_HDMI_TX_SYS>, + <&voutcrg JH7110_VOUTCLK_HDMI_TX_MCLK>, + <&voutcrg JH7110_VOUTCLK_HDMI_TX_BCLK>, + <&hdmi_phy>; + clock-names = "sys", "mclk", "bclk", "pclk"; + resets = <&voutcrg JH7110_VOUTRST_HDMI_TX_HDMI>; + reset-names = "hdmi_tx"; + phys = <&hdmi_phy>; + phy-names = "hdmi-phy"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + hdmi_in: endpoint { + remote-endpoint = <&dpu_out_dpi0>; + }; + }; + + port@1 { + reg = <1>; + hdmi_out: endpoint { + remote-endpoint = <&hdmi_con_in>; + }; + }; + }; + }; + }; + }; + +... diff --git a/MAINTAINERS b/MAINTAINERS index 66fab45bbee8c1a5f73d09bb470d28029b8c6139..052876c6538f980f75ff64e78b6ebea460307904 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -24048,6 +24048,7 @@ STARFIVE JH7110 DISPLAY SUBSYSTEM M: Michal Wilczynski <[email protected]> S: Maintained F: Documentation/devicetree/bindings/display/bridge/starfive,jh7110-inno-hdmi-controller.yaml +F: Documentation/devicetree/bindings/mfd/starfive,jh7110-hdmi-mfd.yaml F: Documentation/devicetree/bindings/phy/starfive,jh7110-inno-hdmi-phy.yaml F: Documentation/devicetree/bindings/soc/starfive/starfive,jh7110-vout-subsystem.yaml -- 2.34.1
