diff mbox series

[UNTESTED,3/4] arm64: dts: rockchip: Enable HDMI1 on Orange Pi 5 Plus

Message ID 20250227235623.1624-4-honyuenkwun@gmail.com (mailing list archive)
State New
Headers show
Series Orange Pi 5 series HDMI extras | expand

Commit Message

Jimmy Hon Feb. 27, 2025, 11:56 p.m. UTC
Enable the second HDMI output port on the Orange Pi 5 Plus

Signed-off-by: Jimmy Hon <honyuenkwun@gmail.com>
---
 .../dts/rockchip/rk3588-orangepi-5-plus.dts   | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)

Comments

Ondřej Jirman Feb. 28, 2025, 11:15 a.m. UTC | #1
Hello Jimmy,

On Thu, Feb 27, 2025 at 05:56:22PM -0600, Jimmy Hon wrote:
> Enable the second HDMI output port on the Orange Pi 5 Plus

RK3588 hardware design guide states that:

  - When working in HDMI2.1 mode, HDMI0_TX_ON_H is configured as low level,
    Q1700, Q1701, Q1702, and Q1703 are not turned on.
  
  - When working in HDMI2.0 and below modes, HDMI0_TX_ON_H is configured as high
    level, Q5007, Q5004, Q5005, and Q5006 are turned on, and the 499ohm resistor
    to ground and the 50ohm pull-up resistor at the Sink end form a DC bias of
    about 3V.
  
  If you only need to support HDMI2.0 and below modes, Q5007, Q5004, Q5005, and
  Q5006 cannot be omitted. It is necessary to ensure that the tube is not turned
  on when the machine is not turned on, because the HDMI CTS Test ID 7-3 TMDS
  Voff test item requires that the Voff voltage must be within AVcc+-10mV when
  the DUT is not powered on, otherwise this test item cannot pass. 2: The Coss
  of the control MOS tube cannot be too large, otherwise it will affect the
  signal quality. It is recommended to follow the reference figure model or the
  corresponding Coss value.

And Orange Pi 5 schematic (which has almost the same circuit as Plus variant)
states this explicitely too:

  https://megous.com/dl/tmp/5dc98e91dfee3b5a.png

The same applies to HDMI1.

Maybe it would be better to pull up HDMI1_TX_ON_H more explicitely for now via:

&hdmi1 {
+ pinctrl-0 = <&hdmim2_tx1_cec &hdmim0_tx1_hpd
+              &hdmim1_tx1_scl &hdmim1_tx1_sda
+              &hdmi1_tx_on_h>;
};

&pinctrl {
...
+ hdmi {
+         hdmi1_tx_on_h: hdmi1-tx-on-h {
+                 rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
+         };
+ };
...
};

AFAIK FRL is not supported, yet, so this may be a better default for HDMI1_TX_ON_H.

In any case,

Reviewed-by: Ondrej Jirman <megi@xff.cz>


And I've also tested and used identical patch for a few weeks already on my
Orange Pi 5+. :)

Kind regards,
	o.

> Signed-off-by: Jimmy Hon <honyuenkwun@gmail.com>
> ---
>  .../dts/rockchip/rk3588-orangepi-5-plus.dts   | 38 +++++++++++++++++++
>  1 file changed, 38 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> index 0f874b87b47e..53797f633d3a 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> @@ -26,6 +26,17 @@ hdmi0_con_in: endpoint {
>  		};
>  	};
>  
> +	hdmi1-con {
> +		compatible = "hdmi-connector";
> +		type = "a";
> +
> +		port {
> +			hdmi1_con_in: endpoint {
> +				remote-endpoint = <&hdmi1_out_con>;
> +			};
> +		};
> +	};
> +
>  	ir-receiver {
>  		compatible = "gpio-ir-receiver";
>  		gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
> @@ -125,10 +136,30 @@ hdmi0_out_con: endpoint {
>  	};
>  };
>  
> +&hdmi1 {
> +	status = "okay";
> +};
> +
> +&hdmi1_in {
> +	hdmi1_in_vp1: endpoint {
> +		remote-endpoint = <&vp1_out_hdmi1>;
> +	};
> +};
> +
> +&hdmi1_out {
> +	hdmi1_out_con: endpoint {
> +		remote-endpoint = <&hdmi1_con_in>;
> +	};
> +};
> +
>  &hdptxphy0 {
>  	status = "okay";
>  };
>  
> +&hdptxphy1 {
> +	status = "okay";
> +};
> +
>  &hym8563 {
>  	interrupt-parent = <&gpio0>;
>  	interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
> @@ -342,3 +373,10 @@ vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
>  		remote-endpoint = <&hdmi0_in_vp0>;
>  	};
>  };
> +
> +&vp1 {
> +	vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
> +		reg = <ROCKCHIP_VOP2_EP_HDMI1>;
> +		remote-endpoint = <&hdmi1_in_vp1>;
> +	};
> +};
> -- 
> 2.48.1
>
Jimmy Hon March 8, 2025, 4:34 a.m. UTC | #2
On Fri, Feb 28, 2025 at 5:15 AM Ondřej Jirman <megi@xff.cz> wrote:
>
> Hello Jimmy,
>
> On Thu, Feb 27, 2025 at 05:56:22PM -0600, Jimmy Hon wrote:
> > Enable the second HDMI output port on the Orange Pi 5 Plus
>
> RK3588 hardware design guide states that:
>
>   - When working in HDMI2.1 mode, HDMI0_TX_ON_H is configured as low level,
>     Q1700, Q1701, Q1702, and Q1703 are not turned on.
>
>   - When working in HDMI2.0 and below modes, HDMI0_TX_ON_H is configured as high
>     level, Q5007, Q5004, Q5005, and Q5006 are turned on, and the 499ohm resistor
>     to ground and the 50ohm pull-up resistor at the Sink end form a DC bias of
>     about 3V.
>
>   If you only need to support HDMI2.0 and below modes, Q5007, Q5004, Q5005, and
>   Q5006 cannot be omitted. It is necessary to ensure that the tube is not turned
>   on when the machine is not turned on, because the HDMI CTS Test ID 7-3 TMDS
>   Voff test item requires that the Voff voltage must be within AVcc+-10mV when
>   the DUT is not powered on, otherwise this test item cannot pass. 2: The Coss
>   of the control MOS tube cannot be too large, otherwise it will affect the
>   signal quality. It is recommended to follow the reference figure model or the
>   corresponding Coss value.
>
> And Orange Pi 5 schematic (which has almost the same circuit as Plus variant)
> states this explicitely too:
>
>   https://megous.com/dl/tmp/5dc98e91dfee3b5a.png
>
> The same applies to HDMI1.
>
> Maybe it would be better to pull up HDMI1_TX_ON_H more explicitely for now via:
>
> &hdmi1 {
> + pinctrl-0 = <&hdmim2_tx1_cec &hdmim0_tx1_hpd
> +              &hdmim1_tx1_scl &hdmim1_tx1_sda
> +              &hdmi1_tx_on_h>;
> };
>
> &pinctrl {
> ...
> + hdmi {
> +         hdmi1_tx_on_h: hdmi1-tx-on-h {
> +                 rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
> +         };
> + };
> ...
> };
>
> AFAIK FRL is not supported, yet, so this may be a better default for HDMI1_TX_ON_H.
I am going to defer adding a temporary workaround and keep hdmi1
behavior the same as hdmi0. [1] I don't want to introduce something
that will hinder the upcoming FRL development when it tries to support
an old DTB. I'm hoping Cristian could start adding the HDMI0_TX_ON_H
to the dt-bindings, even before the full FRL support is added, so at
least all the DTS could have "enable-gpios" property defined [2], and
then the DTSs be ready to go when FRL support is ready. That way the
HDMI0_TX_ON_H will be pulled correctly depending what mode is being
used.

[1] https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts?h=v6.14-rc1#n113
[2] https://github.com/radxa/kernel/blob/linux-6.1-stan-rkr4.1/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts#L564

>
> In any case,
>
> Reviewed-by: Ondrej Jirman <megi@xff.cz>
>
>
> And I've also tested and used identical patch for a few weeks already on my
> Orange Pi 5+. :)
>
> Kind regards,
>         o.
>
> > Signed-off-by: Jimmy Hon <honyuenkwun@gmail.com>
> > ---
> >  .../dts/rockchip/rk3588-orangepi-5-plus.dts   | 38 +++++++++++++++++++
> >  1 file changed, 38 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> > index 0f874b87b47e..53797f633d3a 100644
> > --- a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> > +++ b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
> > @@ -26,6 +26,17 @@ hdmi0_con_in: endpoint {
> >               };
> >       };
> >
> > +     hdmi1-con {
> > +             compatible = "hdmi-connector";
> > +             type = "a";
> > +
> > +             port {
> > +                     hdmi1_con_in: endpoint {
> > +                             remote-endpoint = <&hdmi1_out_con>;
> > +                     };
> > +             };
> > +     };
> > +
> >       ir-receiver {
> >               compatible = "gpio-ir-receiver";
> >               gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
> > @@ -125,10 +136,30 @@ hdmi0_out_con: endpoint {
> >       };
> >  };
> >
> > +&hdmi1 {
> > +     status = "okay";
> > +};
> > +
> > +&hdmi1_in {
> > +     hdmi1_in_vp1: endpoint {
> > +             remote-endpoint = <&vp1_out_hdmi1>;
> > +     };
> > +};
> > +
> > +&hdmi1_out {
> > +     hdmi1_out_con: endpoint {
> > +             remote-endpoint = <&hdmi1_con_in>;
> > +     };
> > +};
> > +
> >  &hdptxphy0 {
> >       status = "okay";
> >  };
> >
> > +&hdptxphy1 {
> > +     status = "okay";
> > +};
> > +
> >  &hym8563 {
> >       interrupt-parent = <&gpio0>;
> >       interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
> > @@ -342,3 +373,10 @@ vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
> >               remote-endpoint = <&hdmi0_in_vp0>;
> >       };
> >  };
> > +
> > +&vp1 {
> > +     vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
> > +             reg = <ROCKCHIP_VOP2_EP_HDMI1>;
> > +             remote-endpoint = <&hdmi1_in_vp1>;
> > +     };
> > +};
> > --
> > 2.48.1
> >
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
index 0f874b87b47e..53797f633d3a 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-orangepi-5-plus.dts
@@ -26,6 +26,17 @@  hdmi0_con_in: endpoint {
 		};
 	};
 
+	hdmi1-con {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi1_con_in: endpoint {
+				remote-endpoint = <&hdmi1_out_con>;
+			};
+		};
+	};
+
 	ir-receiver {
 		compatible = "gpio-ir-receiver";
 		gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
@@ -125,10 +136,30 @@  hdmi0_out_con: endpoint {
 	};
 };
 
+&hdmi1 {
+	status = "okay";
+};
+
+&hdmi1_in {
+	hdmi1_in_vp1: endpoint {
+		remote-endpoint = <&vp1_out_hdmi1>;
+	};
+};
+
+&hdmi1_out {
+	hdmi1_out_con: endpoint {
+		remote-endpoint = <&hdmi1_con_in>;
+	};
+};
+
 &hdptxphy0 {
 	status = "okay";
 };
 
+&hdptxphy1 {
+	status = "okay";
+};
+
 &hym8563 {
 	interrupt-parent = <&gpio0>;
 	interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
@@ -342,3 +373,10 @@  vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
 		remote-endpoint = <&hdmi0_in_vp0>;
 	};
 };
+
+&vp1 {
+	vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+		reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+		remote-endpoint = <&hdmi1_in_vp1>;
+	};
+};