diff mbox series

[v2,2/5] arm64: dts: rockchip: Enable HDMI0 on rock-5b

Message ID 20241019-rk3588-hdmi0-dt-v2-2-466cd80e8ff9@collabora.com (mailing list archive)
State New
Headers show
Series Enable HDMI0 on several RK3588 based boards | expand

Commit Message

Cristian Ciocaltea Oct. 19, 2024, 10:12 a.m. UTC
Add the necessary DT changes to enable HDMI0 on Radxa ROCK 5B.

Tested-by: FUKAUMI Naoki <naoki@radxa.com>
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
---
 arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 47 +++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

Comments

Link Mauve Nov. 6, 2024, 8:42 p.m. UTC | #1
Hi,

I’ve tested this series on a Radxa Rock 5B using Weston, and thus
patches 1 and 2 are:
Tested-by: Link Mauve <linkmauve@linkmauve.fr>

On a TV which erroneously reports 1360×768 as its preferred mode,
nothing gets displayed.  Only setting a 1920×1080 mode will display
things correctly, every other mode stays black.

Also, before starting Weston, drm_info reports Status: unknown, 0×0 mm,
no modes, and no EDID blob.  After starting Weston all of these property
get loaded properly, aside from the physical size which gets set to the
obviously invalid 1600×900 mm.

The first start of Weston after reboot takes a total of 7.4s, which
seems very long just to (I believe) probe the screen and parse the EDID,
if that’s what the driver is doing.  Subsequent launches complete in
about 400 ms, which is closer to my expectation.

Thanks a lot for this series!

On Sat, Oct 19, 2024 at 01:12:11PM +0300, Cristian Ciocaltea wrote:
> Add the necessary DT changes to enable HDMI0 on Radxa ROCK 5B.
> 
> Tested-by: FUKAUMI Naoki <naoki@radxa.com>
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> ---
>  arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 47 +++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
> index d6fff5b86b87020f115ce64795aee90c002a2255..0c3baf74981b714eb2a1edbc3fbbb69cd688cfc2 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
> @@ -4,6 +4,7 @@
>  
>  #include <dt-bindings/gpio/gpio.h>
>  #include <dt-bindings/leds/common.h>
> +#include <dt-bindings/soc/rockchip,vop2.h>
>  #include "rk3588.dtsi"
>  
>  / {
> @@ -37,6 +38,17 @@ analog-sound {
>  		pinctrl-0 = <&hp_detect>;
>  	};
>  
> +	hdmi0-con {
> +		compatible = "hdmi-connector";
> +		type = "a";
> +
> +		port {
> +			hdmi0_con_in: endpoint {
> +				remote-endpoint = <&hdmi0_out_con>;
> +			};
> +		};
> +	};
> +
>  	leds {
>  		compatible = "gpio-leds";
>  		pinctrl-names = "default";
> @@ -192,6 +204,26 @@ &gpu {
>  	status = "okay";
>  };
>  
> +&hdmi0 {
> +	status = "okay";
> +};
> +
> +&hdmi0_in {
> +	hdmi0_in_vp0: endpoint {
> +		remote-endpoint = <&vp0_out_hdmi0>;
> +	};
> +};
> +
> +&hdmi0_out {
> +	hdmi0_out_con: endpoint {
> +		remote-endpoint = <&hdmi0_con_in>;
> +	};
> +};
> +
> +&hdptxphy_hdmi0 {
> +	status = "okay";
> +};
> +
>  &i2c0 {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&i2c0m2_xfer>;
> @@ -858,3 +890,18 @@ &usb_host1_xhci {
>  &usb_host2_xhci {
>  	status = "okay";
>  };
> +
> +&vop_mmu {
> +	status = "okay";
> +};
> +
> +&vop {
> +	status = "okay";
> +};
> +
> +&vp0 {
> +	vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
> +		reg = <ROCKCHIP_VOP2_EP_HDMI0>;
> +		remote-endpoint = <&hdmi0_in_vp0>;
> +	};
> +};
> 
> -- 
> 2.47.0
> 
> 
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
Cristian Ciocaltea Nov. 6, 2024, 9:26 p.m. UTC | #2
On 11/6/24 10:42 PM, Link Mauve wrote:
> Hi,
> 
> I’ve tested this series on a Radxa Rock 5B using Weston, and thus
> patches 1 and 2 are:
> Tested-by: Link Mauve <linkmauve@linkmauve.fr>
> 
> On a TV which erroneously reports 1360×768 as its preferred mode,
> nothing gets displayed.  Only setting a 1920×1080 mode will display
> things correctly, every other mode stays black.

I'd suggest to try the following patches from [1], they should improve the
display modes support:

94b5c31f969d ("[WIP] drm/rockchip: vop2: Improve display modes handling on rk3588")
c33c23053987 ("[WIP] arm64: dts: rockchip: Enable HDMI0 PHY clk provider on rk3588")
6059245635c0 ("[WIP] arm64: dts: rockchip: Make use of HDMI0 PHY PLL on rock-5b")

I'm currently cleaning this up and submit upstream when ready.

Thanks for testing,
Cristian

[1] https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/commits/rk3588
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
index d6fff5b86b87020f115ce64795aee90c002a2255..0c3baf74981b714eb2a1edbc3fbbb69cd688cfc2 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts
@@ -4,6 +4,7 @@ 
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/leds/common.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
 #include "rk3588.dtsi"
 
 / {
@@ -37,6 +38,17 @@  analog-sound {
 		pinctrl-0 = <&hp_detect>;
 	};
 
+	hdmi0-con {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi0_con_in: endpoint {
+				remote-endpoint = <&hdmi0_out_con>;
+			};
+		};
+	};
+
 	leds {
 		compatible = "gpio-leds";
 		pinctrl-names = "default";
@@ -192,6 +204,26 @@  &gpu {
 	status = "okay";
 };
 
+&hdmi0 {
+	status = "okay";
+};
+
+&hdmi0_in {
+	hdmi0_in_vp0: endpoint {
+		remote-endpoint = <&vp0_out_hdmi0>;
+	};
+};
+
+&hdmi0_out {
+	hdmi0_out_con: endpoint {
+		remote-endpoint = <&hdmi0_con_in>;
+	};
+};
+
+&hdptxphy_hdmi0 {
+	status = "okay";
+};
+
 &i2c0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&i2c0m2_xfer>;
@@ -858,3 +890,18 @@  &usb_host1_xhci {
 &usb_host2_xhci {
 	status = "okay";
 };
+
+&vop_mmu {
+	status = "okay";
+};
+
+&vop {
+	status = "okay";
+};
+
+&vp0 {
+	vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+		reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+		remote-endpoint = <&hdmi0_in_vp0>;
+	};
+};