On 7/19/24 14:40, Shreeya Patel wrote: > Document bindings for the Synopsys DesignWare HDMI RX Controller. > > Reviewed-by: Rob Herring <robh@xxxxxxxxxx> > Reviewed-by: Dmitry Osipenko <dmitry.osipenko@xxxxxxxxxxxxx> > Signed-off-by: Shreeya Patel <shreeya.patel@xxxxxxxxxxxxx> > --- > > Changes in v4 :- > - No change > > Changes in v3 :- > - Rename hdmirx_cma to hdmi_receiver_cma > - Add a Reviewed-by tag > > Changes in v2 :- > - Add a description for the hardware > - Rename resets, vo1 grf and HPD properties > - Add a proper description for grf and vo1-grf phandles > - Rename the HDMI Input node name to hdmi-receiver > - Improve the subject line > - Include gpio header file in example to fix dt_binding_check failure > > .../bindings/media/snps,dw-hdmi-rx.yaml | 132 ++++++++++++++++++ > 1 file changed, 132 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/snps,dw-hdmi-rx.yaml > > diff --git a/Documentation/devicetree/bindings/media/snps,dw-hdmi-rx.yaml b/Documentation/devicetree/bindings/media/snps,dw-hdmi-rx.yaml > new file mode 100644 > index 000000000000..96ae1e2d2816 > --- /dev/null > +++ b/Documentation/devicetree/bindings/media/snps,dw-hdmi-rx.yaml > @@ -0,0 +1,132 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +# Device Tree bindings for Synopsys DesignWare HDMI RX Controller > + > +--- > +$id: http://devicetree.org/schemas/media/snps,dw-hdmi-rx.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Synopsys DesignWare HDMI RX Controller > + > +maintainers: > + - Shreeya Patel <shreeya.patel@xxxxxxxxxxxxx> > + > +description: > + Synopsys DesignWare HDMI Input Controller preset on RK3588 SoCs > + allowing devices to receive and decode high-resolution video streams > + from external sources like media players, cameras, laptops, etc. > + > +properties: > + compatible: > + items: > + - const: rockchip,rk3588-hdmirx-ctrler > + - const: snps,dw-hdmi-rx 1: Compatible strings must be SoC orientated. 2: In Linux there's no priority in which string will probed first. What's the point of having a fallback string when there's no common code, but instead only the first string is used? +static const struct of_device_id hdmirx_id[] = { + { .compatible = "rockchip,rk3588-hdmirx-ctrler" }, + { }, +}; > + > + reg: > + maxItems: 1 > + > + interrupts: > + maxItems: 3 > + > + interrupt-names: > + items: > + - const: cec > + - const: hdmi > + - const: dma > + > + clocks: > + maxItems: 7 > + > + clock-names: > + items: > + - const: aclk > + - const: audio > + - const: cr_para > + - const: pclk > + - const: ref > + - const: hclk_s_hdmirx > + - const: hclk_vo1 > + > + power-domains: > + maxItems: 1 > + > + resets: > + maxItems: 4 > + > + reset-names: > + items: > + - const: axi > + - const: apb > + - const: ref > + - const: biu > + > + memory-region: > + maxItems: 1 > + > + hpd-gpios: > + description: GPIO specifier for HPD. > + maxItems: 1 > + > + rockchip,grf: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + The phandle of the syscon node for the general register file > + containing HDMIRX PHY status bits. > + > + rockchip,vo1-grf: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + The phandle of the syscon node for the Video Output GRF register > + to enable EDID transfer through SDAIN and SCLIN. > + > +required: > + - compatible > + - reg > + - interrupts > + - interrupt-names > + - clocks > + - clock-names > + - power-domains > + - resets > + - pinctrl-0 > + - hpd-gpios > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/clock/rockchip,rk3588-cru.h> > + #include <dt-bindings/gpio/gpio.h> > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/power/rk3588-power.h> > + #include <dt-bindings/reset/rockchip,rk3588-cru.h> > + hdmi_receiver: hdmi-receiver@fdee0000 { > + compatible = "rockchip,rk3588-hdmirx-ctrler", "snps,dw-hdmi-rx"; > + reg = <0xfdee0000 0x6000>; > + interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH 0>, > + <GIC_SPI 436 IRQ_TYPE_LEVEL_HIGH 0>, > + <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH 0>; > + interrupt-names = "cec", "hdmi", "dma"; > + clocks = <&cru ACLK_HDMIRX>, > + <&cru CLK_HDMIRX_AUD>, > + <&cru CLK_CR_PARA>, > + <&cru PCLK_HDMIRX>, > + <&cru CLK_HDMIRX_REF>, > + <&cru PCLK_S_HDMIRX>, > + <&cru HCLK_VO1>; > + clock-names = "aclk", > + "audio", > + "cr_para", > + "pclk", > + "ref", > + "hclk_s_hdmirx", > + "hclk_vo1"; > + power-domains = <&power RK3588_PD_VO1>; > + resets = <&cru SRST_A_HDMIRX>, <&cru SRST_P_HDMIRX>, > + <&cru SRST_HDMIRX_REF>, <&cru SRST_A_HDMIRX_BIU>; > + reset-names = "axi", "apb", "ref", "biu"; > + memory-region = <&hdmi_receiver_cma>; > + pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_5v_detection>; > + pinctrl-names = "default"; > + hpd-gpios = <&gpio1 22 GPIO_ACTIVE_LOW>; > + };