Re: [PATCH 00/14] Add initial support for the Rockchip RK3588 HDMI TX Controller

Piotr Oniszczuk
2024-06-02T07:59:28Z

(resent as plain text instead of html)

Cristian,

I was awaiting over year for this work!

I’m devel. 2 distros where single mainline kernel serves 2835/2711/2712/h6/h313/h616/h618/rk3328/rk3399/rk3566/rk3568/rk3588/s905/s912/sm1/g12.

Before this work rk3588 was excluded because rk3588 hdmi was regressing hdmi on other socs.
With this code all other socs seems work ok now. Perfect.

As one of my project is multimedia appliance - good news is that now i can nicely play hdtv on rk3588 using mainline common 6.9.3 kernel and….started to hear from my users a lot of Qs like: „ah so nice! rk3588 now works nicely….but where is hdmi audio and cec?”

It will be fantastic to add (e.g. by backport Detlev https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/tree/rk3588-hdmi-audio?ref_type=heads ) audio code to get basic support hdmi audio?

thx again for fantastic work!

> Wiadomość napisana przez Cristian Ciocaltea <cristian.ciocaltea@collabora.com> w dniu 01.06.2024, o godz. 15:12:
>
> The RK3588 SoC family integrates a Quad-Pixel (QP) variant of the
> Synopsys DesignWare HDMI TX controller used in the previous SoCs.
>
> It is HDMI 2.1 compliant and supports the following features, among
> others:
>
> * Fixed Rate Link (FRL)
> * 4K@120Hz and 8K@60Hz video modes
> * Variable Refresh Rate (VRR) including Quick Media Switching (QMS)
> * Fast Vactive (FVA)
> * SCDC I2C DDC access
> * TMDS Scrambler enabling 2160p@60Hz with RGB/YCbCr4:4:4
> * YCbCr4:2:0 enabling 2160p@60Hz at lower HDMI link speeds
> * Multi-stream audio
> * Enhanced Audio Return Channel (EARC)
>
> This is the last required component that needs to be supported in order
> to enable the HDMI output functionality on the RK3588 based SBCs, such
> as the RADXA Rock 5B. The other components are the Video Output
> Processor (VOP2) and the Samsung IP based HDMI/eDP TX Combo PHY, for
> which basic support has been already made available via [1] and [2],
> respectively.
>
> The patches are grouped as follows:
> * PATCH 1..7: DW HDMI TX driver refactor to minimize code duplication in
> the new QP driver (no functional changes intended)
>
> * PATCH 8..11: Rockchip DW HDMI glue driver cleanup/improvements (no
> functional changes intended)
>
> * PATCH 12..13: The new DW HDMI QP TX driver reusing the previously
> exported functions and structs from existing DW HDMI TX driver
>
> * PATCH 14: Rockchip DW HDMI glue driver update to support RK3588 and
> make use of DW HDMI QP TX
>
> They provide just the basic HDMI support for now, i.e. RGB output up to
> 4K@60Hz, without audio, CEC or any of the HDMI 2.1 specific features.
> Also note the vop2 driver is currently not able to properly handle all
> display modes supported by the connected screens, e.g. it doesn't cope
> with non-integer refresh rates.
>
> A possible workaround consists of enabling the display controller to
> make use of the clock provided by the HDMI PHY PLL. This is still work
> in progress and will be submitted later, as well as the required DTS
> updates.
>
> To facilitate testing and experimentation, all HDMI output related
> patches, including those part of this series, are available at [3].
> So far I could only verify this on the RADXA Rock 3A and 5B boards.
>
> Thanks,
> Cristian
>
> [1]: 5a028e8f062f ("drm/rockchip: vop2: Add support for rk3588")
> [2]: 553be2830c5f ("phy: rockchip: Add Samsung HDMI/eDP Combo PHY driver")
> [3]: https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/commits/rk3588-hdmi-bridge-v6.10-rc1
>
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
> ---
> Cristian Ciocaltea (14):
> drm/bridge: dw-hdmi: Simplify clock handling
> drm/bridge: dw-hdmi: Add dw-hdmi-common.h header
> drm/bridge: dw-hdmi: Commonize dw_hdmi_i2c_adapter()
> drm/bridge: dw-hdmi: Factor out AVI infoframe setup
> drm/bridge: dw-hdmi: Factor out vmode setup
> drm/bridge: dw-hdmi: Factor out hdmi_data_info setup
> drm/bridge: dw-hdmi: Commonize dw_hdmi_connector_create()
> drm/rockchip: dw_hdmi: Use modern drm_device based logging
> drm/rockchip: dw_hdmi: Simplify clock handling
> drm/rockchip: dw_hdmi: Use devm_regulator_get_enable()
> drm/rockchip: dw_hdmi: Drop superfluous assignments of mpll_cfg, cur_ctr and phy_config
> dt-bindings: display: rockchip,dw-hdmi: Add compatible for RK3588
> drm/bridge: synopsys: Add DW HDMI QP TX controller driver
> drm/rockchip: dw_hdmi: Add basic RK3588 support
>
> .../display/rockchip/rockchip,dw-hdmi.yaml | 127 +++-
> drivers/gpu/drm/bridge/synopsys/Makefile | 2 +-
> drivers/gpu/drm/bridge/synopsys/dw-hdmi-common.h | 179 +++++
> drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 787 +++++++++++++++++++
> drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h | 831 +++++++++++++++++++++
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 353 +++------
> drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 351 +++++++--
> include/drm/bridge/dw_hdmi.h | 8 +
> 8 files changed, 2290 insertions(+), 348 deletions(-)
> ---
> base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
> change-id: 20240601-b4-rk3588-bridge-upstream-a27baff1b8fc
>
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip