From patchwork Fri Aug 30 21:55:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Ciocaltea X-Patchwork-Id: 13785633 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2F40ECA101A for ; Fri, 30 Aug 2024 21:58:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To: Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=c8qa22Q8hLO3cZajVDrhi36frKDZSr3lkiPx6AGDt+I=; b=sTwNGcljzmJ8Vz iC+1fEyplFDWMZud3HqZtOW9Em92t77F6+srIAgDDtgLKiOppEdOZSuTmQcWXcVs4o7Ms5ldzwpzp VGdEtNgHC2HqdnPLjaKvDAgVAbsWlQSgjqd/aN6DonIwhvFEKIQBztmYTPFAxGXHBOtjMjKSMVBHp Ws+C7AkyOl1KdOcdoIW5gneWVTivj/SLBEW/4mgCG+eRyzI+1D3vh2bUoBpaG5+ekG7JOHvJ8/a7o XyDLGKwLh85LUX/4HoH8Llv8KZPrpqzi33meHZZEWyAIOZal3ataWKVMHh/NmFXordaaMwKfK/QWH ZX6Th5PLR5tAmLmegGTg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sk9d4-00000007nRA-30ka; Fri, 30 Aug 2024 21:58:02 +0000 Received: from bali.collaboradmins.com ([148.251.105.195]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sk9bD-00000007mpt-2EA2; Fri, 30 Aug 2024 21:56:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1725054965; bh=HIWTRDULCQ8lq933Fckh9d/uD6hAg0cFX5hH0TJIlw8=; h=From:Subject:Date:To:Cc:From; b=kVgHztk5ob1murcD2o8RR3Fp2vxgBsHwvJAletYsJGZnxqGrlio812AZqyLHyB9vI ljdBFIb2qiahfzDuGHD7VZpsqGwWcLQPBrWidfXVJFAYGG0Gu0GcIV+on4eiwpZvNs IAmZ/8fcP2KfsahQaWBwcvoz9dj0X3RusH6a5qFznTJwQlbdrYt1lL3JPKb3cyo76T fZRHk8l16w3Aaa8zPgb1hTxrnjMoIVIIpQtcLx6rPObnmseFO8QdS2WLxKRB5SFo7E nPhuklXCa7KUNFaz3JJJNv/yPEJlVXzdIJULVdN02UPSA2IxjOzZt6kPhYkBlPbtxp tbXaqx017ix+A== Received: from localhost (unknown [188.27.55.48]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with ESMTPSA id 77F1E17E14DB; Fri, 30 Aug 2024 23:56:05 +0200 (CEST) From: Cristian Ciocaltea Subject: [PATCH v5 0/4] Add initial support for the Rockchip RK3588 HDMI TX Controller Date: Sat, 31 Aug 2024 00:55:28 +0300 Message-Id: <20240831-b4-rk3588-bridge-upstream-v5-0-9503bece0136@collabora.com> MIME-Version: 1.0 X-B4-Tracking: v=1; b=H4sIANA/0mYC/43QywrCMBAF0F+RrI0kk1fryv8QF5M00eAjkmhRp P9u6kYRKS7vDPcMzIMUn6MvZDl7kOz7WGI61aDmM+J2eNp6GruaCTCQTDNOraR5L1TTUJtjV/f Xc7lkj0eKYCyGwG0THKn9c/Yh3l72elPzLpZLyvfXqZ6P03/UnlNGgwYmjBIgwK5cOhzQpowLl 45klHt4a820BlVrA2plUHqufmriUzNTmqiaZp22aFnnjPulyQ+Nt1OaHDXJjTNQfynbb20Yhie +vSyAsAEAAA== To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Yao , Sascha Hauer Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, kernel@collabora.com, Alexandre ARNOUD , Luis de Arquer , Algea Cao X-Mailer: b4 0.14.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240830_145607_916737_58005AE2 X-CRM114-Status: GOOD ( 21.30 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The Rockchip RK3588 SoC family integrates the Synopsys DesignWare HDMI 2.1 Quad-Pixel (QP) TX controller, which is a new IP block, quite different from those used in the previous generations of Rockchip SoCs. The controller supports the following features, among others: * Fixed Rate Link (FRL) * Display Stream Compression (DSC) * 4K@120Hz and 8K@60Hz video modes * Variable Refresh Rate (VRR) including Quick Media Switching (QMS) * Fast Vactive (FVA) * SCDC I2C DDC access * Multi-stream audio * Enhanced Audio Return Channel (EARC) This is the last 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. Please note this is a reworked version of the original series, which relied on a commonized dw-hdmi approach. Since the general consensus was to handle it as an entirely new IP, I dropped all patches related to the old dw-hdmi and Rockchip glue code - a few of them might still make sense as general improvements and will be submitted separately. It's worth mentioning the HDMI output support is currently limited to RGB output up to 4K@60Hz, without audio, CEC or any of the HDMI 2.1 specific features. Moreover, the VOP2 driver is 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 5B board. 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.11-rc1 [4]: https://lore.kernel.org/lkml/20240801-dw-hdmi-qp-tx-v1-0-148f542de5fd@collabora.com/ Signed-off-by: Cristian Ciocaltea --- Changes in v5: - Renamed Rockchip binding file to match the SoC compatible (Conor) - Made all clocks mandatory (Conor) - Renamed rockchip,vo1-grf property to rockchip,vo-grf as future SoCs (e.g. RK3576) may refer to it as vo0 instead of vo1 - Reworked the setup of high TMDS clock ratio and scrambling * Dropped curr_conn & pix_clock from struct dw_hdmi_qp * Also removed exported function dw_hdmi_qp_set_high_tmds_clock_ratio() * A few additional (mostly cosmetic) changes - Link to v4: https://lore.kernel.org/r/20240819-b4-rk3588-bridge-upstream-v4-0-6417c72a2749@collabora.com Changes in v4: - Added Tested-by tag from Heiko - Updated "[PATCH v3 3/5] dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller" according to Rob's review * Referenced full path for synopsys,dw-hdmi-qp.yaml * Moved ports to common schema and updated descriptions * Renamed rockchip,vo1_grf to rockchip,vo1-grf and updated "[PATCH v3 5/5] drm/rockchip: Add basic RK3588 HDMI output support" accordingly - Dropped "[PATCH v3 4/5] drm/rockchip: Explicitly include bits header" already applied by Heiko - Link to v3: https://lore.kernel.org/r/20240807-b4-rk3588-bridge-upstream-v3-0-60d6bab0dc7c@collabora.com Changes in v3: - Reintegrated bridge patchset [4] to allow automated testing and simplify reviewing (Krzysztof); the after-split changes were: * Made use of the new bridge HDMI helpers indicated by Dmitry * Dropped connector creation to ensure driver does only support DRM_BRIDGE_ATTACH_NO_CONNECTOR * Updated I2C segment handling to properly handle connected DVI displays (reported and fixed by Heiko) - Updated schema for DW HDMI QP TX IP providing some hardware details - Updated patch for DW HDMI QP TX Controller module referring to a support library instead of a platform driver (Krzysztof) - Drop empty dw_hdmi_qp_unbind() export from the library and related usage from RK platform driver - Drop Fixes tag from "drm/rockchip: Explicitly include bits header" patch (Krzysztof) - Link to v2: https://lore.kernel.org/r/20240801-b4-rk3588-bridge-upstream-v2-0-9fa657a4e15b@collabora.com Changes in v2: - Reworked the glue code for RK3588 into a new Rockchip platform driver - Moved bridge driver patches to a separate series [4] - Dropped all the patches touching to the old dw-hdmi and RK platform drivers - Added connector creation to ensure the HDMI QP bridge driver does only support DRM_BRIDGE_ATTACH_NO_CONNECTOR - Link to v1: https://lore.kernel.org/r/20240601-b4-rk3588-bridge-upstream-v1-0-f6203753232b@collabora.com --- Cristian Ciocaltea (4): dt-bindings: display: bridge: Add schema for Synopsys DW HDMI QP TX IP drm/bridge: synopsys: Add DW HDMI QP TX Controller support library dt-bindings: display: rockchip: Add schema for RK3588 HDMI TX Controller drm/rockchip: Add basic RK3588 HDMI output support .../display/bridge/synopsys,dw-hdmi-qp.yaml | 88 +++ .../rockchip/rockchip,rk3588-dw-hdmi-qp.yaml | 166 ++++ drivers/gpu/drm/bridge/synopsys/Kconfig | 8 + drivers/gpu/drm/bridge/synopsys/Makefile | 2 + drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 708 +++++++++++++++++ drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h | 834 +++++++++++++++++++++ drivers/gpu/drm/rockchip/Kconfig | 8 + drivers/gpu/drm/rockchip/Makefile | 1 + drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 427 +++++++++++ drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 + drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 1 + include/drm/bridge/dw_hdmi_qp.h | 34 + 12 files changed, 2279 insertions(+) --- base-commit: 8400291e289ee6b2bf9779ff1c83a291501f017b change-id: 20240601-b4-rk3588-bridge-upstream-a27baff1b8fc