From nobody Fri Oct 3 21:00:30 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 555722D8DCE for ; Mon, 25 Aug 2025 10:08:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116527; cv=none; b=sL7C6x6ndAOhmRsGLltPyFhWXQwMIqUHCLaKdXyH6EAO15wd44WxrUmkfhJWPfaRPyIbgNXOKJKpplBavRaMy+/puWW4RkaBdpEk70Ezw/uITg5NVRlExRhFmCCtQlrr+QJysaS/xWhlHebCGI6L55XWbuv5R9hoYbzRRVPuf68= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116527; c=relaxed/simple; bh=uVOJsredVv4e5nXVxSY8qJOlUNYeVhIe/XTK3wdzwkQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u8Pr5OkH3SCQmIxMN36yCYXFAmQv/YaZN/Z4zWrMLGOhm2OWbknggipNAb4qw3+a7r3lvsBG501Kclahv04pLxKrRsGsRoMz5tzh6PXjKKR40qhtlmBviXciVrba5NXyKytq0tJo68+n3y6a0TJtU/J2DPQomDWWM+AmnCidpA0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=ffSNh3xn; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="ffSNh3xn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1756116523; bh=uVOJsredVv4e5nXVxSY8qJOlUNYeVhIe/XTK3wdzwkQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ffSNh3xn56Ce4vrTMTi/sQkljMCCIznOyQ2pyUbUKSp2vtx3cmFlt10WMEW/njKJh QKL8W32XQq8j/NZVwpg1uR+j5WjsFBO+0DvruhR1N1i8iPvNvaw77mgcaaOzlu4+c4 tpU1IwkRoTGOreGvJTksbZ7yopJ0MllgsDhUbtEFqjmyR+lt6lAVITQB5RzGhdSJMm jSIOCu3htJxX3eOeUoqMX+dnBh8IQsLKhalFNTSkhsRPXN5B6KS6ac6yDd/8D++zOk Za0ksyGh+EqoPubPUs72v1Ppi09RWwLr/CW8DKsLH30ji8VfHih0Oee47bU53TtNbK EP/XmsG+YDThw== Received: from localhost (unknown [82.79.138.60]) (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 UTF8SMTPSA id 6C37517E056F; Mon, 25 Aug 2025 12:08:43 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 25 Aug 2025 13:08:32 +0300 Subject: [PATCH v2 1/5] drm/rockchip: vop2: Check bpc before switching DCLK source Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250825-rk3588-10bpc-v2-1-955622d16985@collabora.com> References: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> In-Reply-To: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> To: Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 When making use of the HDMI PHY PLL as a VOP2 DCLK source, it's output rate does normally match the mode clock. But this is only applicable for default color depth of 8 bpc. For higher depths, the output clock is further divided by the hardware according to the formula: output rate =3D PHY PLL rate * 8 / bpc Hence there is no need for VOP2 to compensate for bpc when adjusting DCLK, but it is required to do so when computing its maximum operating frequency. Take color depth into consideration before deciding to switch DCLK source. Signed-off-by: Cristian Ciocaltea Acked-by: Daniel Stone Reviewed-by: Daniel Stone --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 60 +++++++++++++++++-------= ---- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm= /rockchip/rockchip_drm_vop2.c index b50927a824b4020a7ffd57974070ed202cd8b838..977ccbf163448bc1a0423b8af70= 7e9b2cf9b4be6 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -101,7 +101,7 @@ enum vop2_afbc_format { VOP2_AFBC_FMT_INVALID =3D -1, }; =20 -#define VOP2_MAX_DCLK_RATE 600000000 +#define VOP2_MAX_DCLK_RATE 600000000UL =20 /* * bus-format types. @@ -1737,36 +1737,48 @@ static void vop2_crtc_atomic_enable(struct drm_crtc= *crtc, * Switch to HDMI PHY PLL as DCLK source for display modes up * to 4K@60Hz, if available, otherwise keep using the system CRU. */ - if ((vop2->pll_hdmiphy0 || vop2->pll_hdmiphy1) && clock <=3D VOP2_MAX_DCL= K_RATE) { - drm_for_each_encoder_mask(encoder, crtc->dev, crtc_state->encoder_mask) { - struct rockchip_encoder *rkencoder =3D to_rockchip_encoder(encoder); + if (vop2->pll_hdmiphy0 || vop2->pll_hdmiphy1) { + unsigned long max_dclk; =20 - if (rkencoder->crtc_endpoint_id =3D=3D ROCKCHIP_VOP2_EP_HDMI0) { - if (!vop2->pll_hdmiphy0) - break; + if (vcstate->output_bpc > 8) + max_dclk =3D DIV_ROUND_CLOSEST_ULL(VOP2_MAX_DCLK_RATE * 8, + vcstate->output_bpc); + else + max_dclk =3D VOP2_MAX_DCLK_RATE; =20 - if (!vp->dclk_src) - vp->dclk_src =3D clk_get_parent(vp->dclk); + if (clock <=3D max_dclk) { + drm_for_each_encoder_mask(encoder, crtc->dev, crtc_state->encoder_mask)= { + struct rockchip_encoder *rkencoder =3D to_rockchip_encoder(encoder); =20 - ret =3D clk_set_parent(vp->dclk, vop2->pll_hdmiphy0); - if (ret < 0) - drm_warn(vop2->drm, - "Could not switch to HDMI0 PHY PLL: %d\n", ret); - break; - } + if (rkencoder->crtc_endpoint_id =3D=3D ROCKCHIP_VOP2_EP_HDMI0) { + if (!vop2->pll_hdmiphy0) + break; + + if (!vp->dclk_src) + vp->dclk_src =3D clk_get_parent(vp->dclk); =20 - if (rkencoder->crtc_endpoint_id =3D=3D ROCKCHIP_VOP2_EP_HDMI1) { - if (!vop2->pll_hdmiphy1) + ret =3D clk_set_parent(vp->dclk, vop2->pll_hdmiphy0); + if (ret < 0) + drm_warn(vop2->drm, + "Could not switch to HDMI0 PHY PLL: %d\n", + ret); break; + } =20 - if (!vp->dclk_src) - vp->dclk_src =3D clk_get_parent(vp->dclk); + if (rkencoder->crtc_endpoint_id =3D=3D ROCKCHIP_VOP2_EP_HDMI1) { + if (!vop2->pll_hdmiphy1) + break; =20 - ret =3D clk_set_parent(vp->dclk, vop2->pll_hdmiphy1); - if (ret < 0) - drm_warn(vop2->drm, - "Could not switch to HDMI1 PHY PLL: %d\n", ret); - break; + if (!vp->dclk_src) + vp->dclk_src =3D clk_get_parent(vp->dclk); + + ret =3D clk_set_parent(vp->dclk, vop2->pll_hdmiphy1); + if (ret < 0) + drm_warn(vop2->drm, + "Could not switch to HDMI1 PHY PLL: %d\n", + ret); + break; + } } } } --=20 2.50.1 From nobody Fri Oct 3 21:00:30 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 28A332D9797 for ; Mon, 25 Aug 2025 10:08:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116528; cv=none; b=TJSMJrwHhh8P/RvA+bwODbfUUwZMefOUVPk8+N0epjZs0WIUGoYmE4Eg8Ljj9wVT6ZGiJAY7NILEahB0INQfFvztZD7Jcmm9FhNHGx12amhfNgVHq/CZvLilPncF+JDmO+4+Df9ole2J9NLzF0cUc2AbyvgtpBhLXhq7iE6ufGQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116528; c=relaxed/simple; bh=xRhWfS3GzLuu0hrFBIPELg5N4OvgD+riMqL2Fl9jd18=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WUT181W7xmvM9M+h2rZWinsAF420bKa9lYiw/OJm1AeJC6DQiwY+dF48epjAwM1NLkU2DT7+tb41zQbiMmvfhoDVrWqWIGKifF6WnFSc7EtN9c2fedhjb8kjip7HgbrUG7LKUCZ0RVJgMeO+/Omnnoy2Lp60Zh0YGNzn51kyMPk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=WPd41UW4; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="WPd41UW4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1756116524; bh=xRhWfS3GzLuu0hrFBIPELg5N4OvgD+riMqL2Fl9jd18=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WPd41UW4AqZaWVrsYRNC47yN86rXILVX5hv/GZIUP2jQ8lO5U/vjgZjUfAZ95+LqG iY9ri7vWbbvbYdkk8oagRSPe9XaIaSrwvr/LowQ+SySS62L/AtW0YbyKr5ZZzSTg9c 7YWhv00iP3cxYNdGeja2buDeBG3rin6HJaMuzgVU89j2M5CKNFoKHNBdYfZ5Nyj0SH gljoVg4jiCDKr3wwq0GLwf0nM7spK447K2W0UcTMoXTXwVBmZ3SSdJo4FbYrUOZUtA I4VpeZ9iTsIb61soKmzxgbtxPvFBJ9PWvUz3hjaRsGOL1iZSTpBxrUvEaosaOftqsB bNbY9maRqV9/Q== Received: from localhost (unknown [82.79.138.60]) (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 UTF8SMTPSA id 3B6C317E07F2; Mon, 25 Aug 2025 12:08:44 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 25 Aug 2025 13:08:33 +0300 Subject: [PATCH v2 2/5] drm/bridge: dw-hdmi-qp: Handle platform supported formats and color depth Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250825-rk3588-10bpc-v2-2-955622d16985@collabora.com> References: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> In-Reply-To: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> To: Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Extend struct dw_hdmi_qp_plat_data to include the supported display output formats and maximum bits per color channel. When provided by the platform driver, use them to setup the HDMI bridge accordingly. Additionally, improve debug logging in dw_hdmi_qp_bridge_atomic_enable() to also show the current HDMI output format and bpc. Signed-off-by: Cristian Ciocaltea Acked-by: Daniel Stone --- drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 11 +++++++++-- include/drm/bridge/dw_hdmi_qp.h | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm= /bridge/synopsys/dw-hdmi-qp.c index 42a90e0383061dad6c8416af21b27db7a3ba6d7d..8ff8ea8e0714ed6d6fa4b7865c8= 6d04c32565d90 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c @@ -869,8 +869,9 @@ static void dw_hdmi_qp_bridge_atomic_enable(struct drm_= bridge *bridge, return; =20 if (connector->display_info.is_hdmi) { - dev_dbg(hdmi->dev, "%s mode=3DHDMI rate=3D%llu\n", - __func__, conn_state->hdmi.tmds_char_rate); + dev_dbg(hdmi->dev, "%s mode=3DHDMI %s rate=3D%llu bpc=3D%u\n", __func__, + drm_hdmi_connector_get_output_format_name(conn_state->hdmi.output_forma= t), + conn_state->hdmi.tmds_char_rate, conn_state->hdmi.output_bpc); op_mode =3D 0; hdmi->tmds_char_rate =3D conn_state->hdmi.tmds_char_rate; } else { @@ -1299,6 +1300,12 @@ struct dw_hdmi_qp *dw_hdmi_qp_bind(struct platform_d= evice *pdev, hdmi->bridge.vendor =3D "Synopsys"; hdmi->bridge.product =3D "DW HDMI QP TX"; =20 + if (plat_data->supported_formats) + hdmi->bridge.supported_formats =3D plat_data->supported_formats; + + if (plat_data->max_bpc) + hdmi->bridge.max_bpc =3D plat_data->max_bpc; + hdmi->bridge.ddc =3D dw_hdmi_qp_i2c_adapter(hdmi); if (IS_ERR(hdmi->bridge.ddc)) return ERR_CAST(hdmi->bridge.ddc); diff --git a/include/drm/bridge/dw_hdmi_qp.h b/include/drm/bridge/dw_hdmi_q= p.h index 76ecf31301997718604a05f70ce9eab8695e26b5..3f461f6b9bbfbf67934bf642452= d3c6f9253c4f9 100644 --- a/include/drm/bridge/dw_hdmi_qp.h +++ b/include/drm/bridge/dw_hdmi_qp.h @@ -25,6 +25,10 @@ struct dw_hdmi_qp_plat_data { int main_irq; int cec_irq; unsigned long ref_clk_rate; + /* Supported output formats: bitmask of @hdmi_colorspace */ + unsigned int supported_formats; + /* Maximum bits per color channel: 8, 10 or 12 */ + unsigned int max_bpc; }; =20 struct dw_hdmi_qp *dw_hdmi_qp_bind(struct platform_device *pdev, --=20 2.50.1 From nobody Fri Oct 3 21:00:30 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE9BB2D9787 for ; Mon, 25 Aug 2025 10:08:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116528; cv=none; b=aZ7kGlxZHxkGwnt8Ono18nezAdd1UzP+x5MA2DCAyE+Mkn5lF4ih9gEU9CyZDpfSIPZG+uhkH7l24Si0jpFTDySZLezfmeGwsj6rX88EwtuSEoOxxqsZa5ITtnTDyg3dWWEoMD3qgJDtuBABtdXboj1hZRvMEvmJ1fIaBSajX5I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116528; c=relaxed/simple; bh=9xiHC2hMHQhX5mp7mX3NwaloWJOeXf9/yzi4dN1d7LA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZN4x4tkAt+jaZkXrGrNEZYzbci3jKc3ZUYN1RiUARpuZVMGDJQkglqmccV8jXL5FH9pYccELsj4RQjf/lbl8g8U/ULpQq8r4t03A7PIULIm7wFKeqXpoe/RJqvlmcTW/276qLFOJ5kloc1qECr7oiNXtzZuZQlBDqQao0ktqZLI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=P7QlWWa/; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="P7QlWWa/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1756116525; bh=9xiHC2hMHQhX5mp7mX3NwaloWJOeXf9/yzi4dN1d7LA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=P7QlWWa/0jhNTr6hsCWE+fxw1Is0KM37/TnYpl7Kj+X84Ho4UjPbQ/g5sD0kwFd/f 8raBQSOd57203T4JjcE5PKYBXXSvY7g9+oENDtEzIUhMly027XaCJ+mKx+lNpEroz+ uGzRH2mRXxU2uHB+SlLANCvQBcRk8nidKof6cT0kTqc8aaacx9zeBc/p50JnFG2x2T zzhdD93tIoMq1KY3avNd1DswitHkqs2rA5flBhDQhJVDVaqOdKmlB/vxYO9ccKCAAm XIIGwBD1FXpY1VOm+BTdlvNkmp5hOlzdPiyMkg1Bsg/H+ezokQjhjc52zwaBX6NjDC bMopHD2LIUnPQ== Received: from localhost (unknown [82.79.138.60]) (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 UTF8SMTPSA id 05AE917E08E3; Mon, 25 Aug 2025 12:08:44 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 25 Aug 2025 13:08:34 +0300 Subject: [PATCH v2 3/5] drm/rockchip: dw_hdmi_qp: Switch to phy_configure() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250825-rk3588-10bpc-v2-3-955622d16985@collabora.com> References: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> In-Reply-To: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> To: Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Stop relying on phy_set_bus_width() based workaround to setup the TMDS character rate and, instead, use the recently introduced HDMI PHY configuration API. This is also a prerequisite to enable high color depth and FRL support. Additionally, move the logic to ->atomic_check() callback where the current mode rate is already provided by the connector state. As a matter of fact this is actually necessary to ensure the link rate is configured before VOP2 attempts to use the PHY PLL as a DCLK source in vop2_crtc_atomic_enable(). The rationale is to restrict any changes of the PHY rate via CCF and, instead, prefer the PHY configuration API for this purpose. Signed-off-by: Cristian Ciocaltea Acked-by: Daniel Stone --- drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 37 +++++++++++++---------= ---- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/d= rm/rockchip/dw_hdmi_qp-rockchip.c index 5280383febe25cf579c306ec1642557600595e58..6f2006e7999b540f29841ec4ef6= 79a3ab1e8f497 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include =20 @@ -95,6 +96,7 @@ struct rockchip_hdmi_qp { struct delayed_work hpd_work; int port_id; const struct rockchip_hdmi_qp_ctrl_ops *ctrl_ops; + unsigned long long tmds_char_rate; }; =20 struct rockchip_hdmi_qp_ctrl_ops { @@ -113,24 +115,9 @@ static struct rockchip_hdmi_qp *to_rockchip_hdmi_qp(st= ruct drm_encoder *encoder) static void dw_hdmi_qp_rockchip_encoder_enable(struct drm_encoder *encoder) { struct rockchip_hdmi_qp *hdmi =3D to_rockchip_hdmi_qp(encoder); - struct drm_crtc *crtc =3D encoder->crtc; - unsigned long long rate; =20 /* Unconditionally switch to TMDS as FRL is not yet supported */ gpiod_set_value(hdmi->enable_gpio, 1); - - if (crtc && crtc->state) { - rate =3D drm_hdmi_compute_mode_clock(&crtc->state->adjusted_mode, - 8, HDMI_COLORSPACE_RGB); - /* - * FIXME: Temporary workaround to pass pixel clock rate - * to the PHY driver until phy_configure_opts_hdmi - * becomes available in the PHY API. See also the related - * comment in rk_hdptx_phy_power_on() from - * drivers/phy/rockchip/phy-rockchip-samsung-hdptx.c - */ - phy_set_bus_width(hdmi->phy, div_u64(rate, 100)); - } } =20 static int @@ -138,12 +125,26 @@ dw_hdmi_qp_rockchip_encoder_atomic_check(struct drm_e= ncoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state) { + struct rockchip_hdmi_qp *hdmi =3D to_rockchip_hdmi_qp(encoder); struct rockchip_crtc_state *s =3D to_rockchip_crtc_state(crtc_state); + union phy_configure_opts phy_cfg =3D {}; + int ret; =20 - s->output_mode =3D ROCKCHIP_OUT_MODE_AAAA; - s->output_type =3D DRM_MODE_CONNECTOR_HDMIA; + if (hdmi->tmds_char_rate =3D=3D conn_state->hdmi.tmds_char_rate) + return 0; =20 - return 0; + phy_cfg.hdmi.tmds_char_rate =3D conn_state->hdmi.tmds_char_rate; + + ret =3D phy_configure(hdmi->phy, &phy_cfg); + if (!ret) { + hdmi->tmds_char_rate =3D conn_state->hdmi.tmds_char_rate; + s->output_mode =3D ROCKCHIP_OUT_MODE_AAAA; + s->output_type =3D DRM_MODE_CONNECTOR_HDMIA; + } else { + dev_err(hdmi->dev, "Failed to configure phy: %d\n", ret); + } + + return ret; } =20 static const struct --=20 2.50.1 From nobody Fri Oct 3 21:00:30 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B25302D9EDC for ; Mon, 25 Aug 2025 10:08:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116529; cv=none; b=I/wfBsUmAc0tfHbnYYNFzmRNOyGayjxU845XfGZPo2LlE9svqmKQzG8X3o3jCTXtO60I17jraeOF3YQu4YF1MoZQ4zibClE1RmhuMBPb86bNda64x/16pMvIaEVs4UlRxiw5MYlxCDDn00vSwWhKSlnKY7qKItslbKCl8/nZv0c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116529; c=relaxed/simple; bh=3G3s3b+bMWx+gvtGHMFmONy0Xwu3Z1ERqLscvT9IJDw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dIGbM0Wwv9sxUFpbnLnijTLNf2RtkQOoQk7z2tnR3IaHZ4PhZWTMOJHMcYUiOJYuHfXOj4fhIk9U7M0v/uNuIGKj45DbSnctsxoL6ZC/5Y27Hmz7RTn/nx9jWsH2pbGP88BS64EeWVVRW+3Xf8waY5qAlCRkpuXTvIpzQ948vu4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=QMnJmqmL; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="QMnJmqmL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1756116525; bh=3G3s3b+bMWx+gvtGHMFmONy0Xwu3Z1ERqLscvT9IJDw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QMnJmqmLdr7CPbVMdRebH+5H61vFfZ1n77eFAUSO5k6ajbS9gVtFnB8Ppos7nYfK0 2/0vAvfASgAnZdDTn21A61RloKYe+5cRZrD4XimhBB/4dvFYQdtys3MXMhYBFqnwd2 0i+F3ww+rfdblgizOVwyOxGkEG0waxPCUiCq0xLQG5UiNz+oua9nE2NnQ2dXvR8Slf ZdRAK8bWI6OW4+se+D+7axGBZlC38WBNrxFLfGuLZFue67jKDfKJqk9Mmsn4MI4evg s3/VTW1YZNJydzh3EtGVEyk9yHL2Hmx2yBwww58VxNpbH+eBDpyrB3MoC/R5M1ULz3 wZ+So90KMqtjw== Received: from localhost (unknown [82.79.138.60]) (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 UTF8SMTPSA id C3DAE17E0957; Mon, 25 Aug 2025 12:08:45 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 25 Aug 2025 13:08:35 +0300 Subject: [PATCH v2 4/5] drm/rockchip: dw_hdmi_qp: Use bit macros for RK3576 regs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250825-rk3588-10bpc-v2-4-955622d16985@collabora.com> References: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> In-Reply-To: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> To: Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 For consistency and improved readability, redefine a few RK3576 specific register configurations by relying on GENMASK() and unshifted values for color depth and output format. Those are not used at the moment, but will be needed soon to support the related features. While at it, drop a few other defines which are unlikely to be ever required. Signed-off-by: Cristian Ciocaltea Acked-by: Daniel Stone --- drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/d= rm/rockchip/dw_hdmi_qp-rockchip.c index 6f2006e7999b540f29841ec4ef679a3ab1e8f497..0f2b421134af9f935758266af45= c5779407b4144 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c @@ -38,21 +38,16 @@ #define RK3576_HDMI_HDCP14_MEM_EN BIT(15) =20 #define RK3576_VO0_GRF_SOC_CON8 0x0020 -#define RK3576_COLOR_FORMAT_MASK (0xf << 4) -#define RK3576_COLOR_DEPTH_MASK (0xf << 8) -#define RK3576_RGB (0 << 4) -#define RK3576_YUV422 (0x1 << 4) -#define RK3576_YUV444 (0x2 << 4) -#define RK3576_YUV420 (0x3 << 4) -#define RK3576_8BPC (0x0 << 8) -#define RK3576_10BPC (0x6 << 8) +#define RK3576_COLOR_DEPTH_MASK GENMASK(11, 8) +#define RK3576_8BPC 0x0 +#define RK3576_10BPC 0x6 +#define RK3576_COLOR_FORMAT_MASK GENMASK(7, 4) +#define RK3576_RGB 0x9 +#define RK3576_YUV422 0x1 +#define RK3576_YUV444 0x2 +#define RK3576_YUV420 0x3 #define RK3576_CECIN_MASK BIT(3) =20 -#define RK3576_VO0_GRF_SOC_CON12 0x0030 -#define RK3576_GRF_OSDA_DLYN (0xf << 12) -#define RK3576_GRF_OSDA_DIV (0x7f << 1) -#define RK3576_GRF_OSDA_DLY_EN BIT(0) - #define RK3576_VO0_GRF_SOC_CON14 0x0038 #define RK3576_I2S_SEL_MASK BIT(0) #define RK3576_SPDIF_SEL_MASK BIT(1) --=20 2.50.1 From nobody Fri Oct 3 21:00:30 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F8B62DAFB1 for ; Mon, 25 Aug 2025 10:08:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116530; cv=none; b=m/dB9eHqmruNVitENK6gsn4JFlF1ji3Lu4T7b0kiLtsyKjgymbz0e0GC8rd0SohErt41ktbgcnKBRhQOqIkDWZibLQPHkpd1/RYL+7NPs6Pji/cStfrWcjvTPMEFT026OiZU4fEBBMrofiYmcJ3nFH/uKWNBHeC6Vi87st3balg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756116530; c=relaxed/simple; bh=qoxTFsHFIVAgWULug32Ze5NgiLmjo1jREPwaJJjIE5I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j6lEC1ygD9olB7RpY37TiIBNcZXg6Kzyqi7F0yDt53rXZIY4Bo8jtNfuSotFrMCQ0t1mzA7BGRmV3APsdDdosro+gKW8ywNCDaUu34iB0IW19drRgpZjgW/xWujcQjOSu5C0CzIbc5xO4FM5DUz5Hcd8yDPo/rTtfsOLAbeMg24= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=Pi/oMYGf; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="Pi/oMYGf" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1756116526; bh=qoxTFsHFIVAgWULug32Ze5NgiLmjo1jREPwaJJjIE5I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Pi/oMYGfOTsn0Qm5Cz8h1nACTCYiwQNQV72Ua2K6W+Q774WFQhaimzIkTxY6y4Mj8 uSsUQuyvEnv+AFrO3cyRr0MZWLca4rraGZmR5Dqwt4glZh8nKI1LnpbyppdACCosB7 Xyvx3pHj67Z7wHKwkbBFqleyjMjlS2UUo0huU8NTLhSPEKiEKGFiQaZZC90rCJN1Tc djCNT5k0o82vlb1BU3lOBoheTlPOslkwPsZwdyYqo1I6TRecauuoMk5/nycqg4m91q ETA3rjwXIP3tcOm9seHv6tcn3BE1wNfr8fwxJI+T6pqENVzs8YI+oLVTlE6lBAdIYq IguWOFN6qAdQg== Received: from localhost (unknown [82.79.138.60]) (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 UTF8SMTPSA id 98EB517E0963; Mon, 25 Aug 2025 12:08:46 +0200 (CEST) From: Cristian Ciocaltea Date: Mon, 25 Aug 2025 13:08:36 +0300 Subject: [PATCH v2 5/5] drm/rockchip: dw_hdmi_qp: Add high color depth support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250825-rk3588-10bpc-v2-5-955622d16985@collabora.com> References: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> In-Reply-To: <20250825-rk3588-10bpc-v2-0-955622d16985@collabora.com> To: Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Since both RK3576 and RK3588 SoCs are capable of handling 10 bpc color depth, introduce a pair of new helpers to program the necessary registers, as well as passing bpc at PHY configuration level. Note max_bpc is unconditionally set to 10 before initializing the QP bridge library, as there is no need to adjust it dynamically, i.e. per SoC variant, for now. While setting up .enc_init() callbacks of rockchip_hdmi_qp_ctrl_ops, also replace the unnecessary whitespace chars before .irq_callback() assignments. Signed-off-by: Cristian Ciocaltea Acked-by: Daniel Stone --- drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 59 ++++++++++++++++++++++= ++-- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/d= rm/rockchip/dw_hdmi_qp-rockchip.c index 0f2b421134af9f935758266af45c5779407b4144..81f106ac7b561110b4be39d58e9= 9a225af7786f2 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c @@ -7,6 +7,7 @@ * Author: Cristian Ciocaltea */ =20 +#include #include #include #include @@ -68,6 +69,12 @@ #define RK3588_HDMI1_LEVEL_INT BIT(24) #define RK3588_GRF_VO1_CON3 0x000c #define RK3588_GRF_VO1_CON6 0x0018 +#define RK3588_COLOR_DEPTH_MASK GENMASK(7, 4) +#define RK3588_8BPC 0x0 +#define RK3588_10BPC 0x6 +#define RK3588_COLOR_FORMAT_MASK GENMASK(3, 0) +#define RK3588_RGB 0x0 +#define RK3588_YUV420 0x3 #define RK3588_SCLIN_MASK BIT(9) #define RK3588_SDAIN_MASK BIT(10) #define RK3588_MODE_MASK BIT(11) @@ -96,6 +103,7 @@ struct rockchip_hdmi_qp { =20 struct rockchip_hdmi_qp_ctrl_ops { void (*io_init)(struct rockchip_hdmi_qp *hdmi); + void (*enc_init)(struct rockchip_hdmi_qp *hdmi, struct rockchip_crtc_stat= e *state); irqreturn_t (*irq_callback)(int irq, void *dev_id); irqreturn_t (*hardirq_callback)(int irq, void *dev_id); }; @@ -110,9 +118,16 @@ static struct rockchip_hdmi_qp *to_rockchip_hdmi_qp(st= ruct drm_encoder *encoder) static void dw_hdmi_qp_rockchip_encoder_enable(struct drm_encoder *encoder) { struct rockchip_hdmi_qp *hdmi =3D to_rockchip_hdmi_qp(encoder); + struct drm_crtc *crtc =3D encoder->crtc; =20 /* Unconditionally switch to TMDS as FRL is not yet supported */ gpiod_set_value(hdmi->enable_gpio, 1); + + if (!crtc || !crtc->state) + return; + + if (hdmi->ctrl_ops->enc_init) + hdmi->ctrl_ops->enc_init(hdmi, to_rockchip_crtc_state(crtc->state)); } =20 static int @@ -125,16 +140,19 @@ dw_hdmi_qp_rockchip_encoder_atomic_check(struct drm_e= ncoder *encoder, union phy_configure_opts phy_cfg =3D {}; int ret; =20 - if (hdmi->tmds_char_rate =3D=3D conn_state->hdmi.tmds_char_rate) + if (hdmi->tmds_char_rate =3D=3D conn_state->hdmi.tmds_char_rate && + s->output_bpc =3D=3D conn_state->hdmi.output_bpc) return 0; =20 phy_cfg.hdmi.tmds_char_rate =3D conn_state->hdmi.tmds_char_rate; + phy_cfg.hdmi.bpc =3D conn_state->hdmi.output_bpc; =20 ret =3D phy_configure(hdmi->phy, &phy_cfg); if (!ret) { hdmi->tmds_char_rate =3D conn_state->hdmi.tmds_char_rate; s->output_mode =3D ROCKCHIP_OUT_MODE_AAAA; s->output_type =3D DRM_MODE_CONNECTOR_HDMIA; + s->output_bpc =3D conn_state->hdmi.output_bpc; } else { dev_err(hdmi->dev, "Failed to configure phy: %d\n", ret); } @@ -373,15 +391,49 @@ static void dw_hdmi_qp_rk3588_io_init(struct rockchip= _hdmi_qp *hdmi) regmap_write(hdmi->regmap, RK3588_GRF_SOC_CON2, val); } =20 +static void dw_hdmi_qp_rk3576_enc_init(struct rockchip_hdmi_qp *hdmi, + struct rockchip_crtc_state *state) +{ + u32 val; + + if (state->output_bpc =3D=3D 10) + val =3D HIWORD_UPDATE(FIELD_PREP(RK3576_COLOR_DEPTH_MASK, RK3576_10BPC), + RK3576_COLOR_DEPTH_MASK); + else + val =3D HIWORD_UPDATE(FIELD_PREP(RK3576_COLOR_DEPTH_MASK, RK3576_8BPC), + RK3576_COLOR_DEPTH_MASK); + + regmap_write(hdmi->vo_regmap, RK3576_VO0_GRF_SOC_CON8, val); +} + +static void dw_hdmi_qp_rk3588_enc_init(struct rockchip_hdmi_qp *hdmi, + struct rockchip_crtc_state *state) +{ + u32 val; + + if (state->output_bpc =3D=3D 10) + val =3D HIWORD_UPDATE(FIELD_PREP(RK3588_COLOR_DEPTH_MASK, RK3588_10BPC), + RK3588_COLOR_DEPTH_MASK); + else + val =3D HIWORD_UPDATE(FIELD_PREP(RK3588_COLOR_DEPTH_MASK, RK3588_8BPC), + RK3588_COLOR_DEPTH_MASK); + + regmap_write(hdmi->vo_regmap, + hdmi->port_id ? RK3588_GRF_VO1_CON6 : RK3588_GRF_VO1_CON3, + val); +} + static const struct rockchip_hdmi_qp_ctrl_ops rk3576_hdmi_ctrl_ops =3D { .io_init =3D dw_hdmi_qp_rk3576_io_init, - .irq_callback =3D dw_hdmi_qp_rk3576_irq, + .enc_init =3D dw_hdmi_qp_rk3576_enc_init, + .irq_callback =3D dw_hdmi_qp_rk3576_irq, .hardirq_callback =3D dw_hdmi_qp_rk3576_hardirq, }; =20 static const struct rockchip_hdmi_qp_ctrl_ops rk3588_hdmi_ctrl_ops =3D { .io_init =3D dw_hdmi_qp_rk3588_io_init, - .irq_callback =3D dw_hdmi_qp_rk3588_irq, + .enc_init =3D dw_hdmi_qp_rk3588_enc_init, + .irq_callback =3D dw_hdmi_qp_rk3588_irq, .hardirq_callback =3D dw_hdmi_qp_rk3588_hardirq, }; =20 @@ -474,6 +526,7 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev,= struct device *master, =20 plat_data.phy_ops =3D cfg->phy_ops; plat_data.phy_data =3D hdmi; + plat_data.max_bpc =3D 10; =20 encoder =3D &hdmi->encoder.encoder; encoder->possible_crtcs =3D drm_of_find_possible_crtcs(drm, dev->of_node); --=20 2.50.1