From: Andy Yan <andyshrk@163.com>
To: dmitry.baryshkov@oss.qualcomm.com, heiko@sntech.de
Cc: alchark@gmail.com, andrzej.hajda@intel.com, conor+dt@kernel.org,
cristian.ciocaltea@collabora.com, airlied@gmail.com,
jernej.skrabec@gmail.com, jonas@kwiboo.se,
kever.yang@rock-chips.com, krzk+dt@kernel.org,
Laurent.pinchart@ideasonboard.com,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
neil.armstrong@linaro.org, nicolas.frattaroli@collabora.com,
robh@kernel.org, rfoss@kernel.org, hjc@rock-chips.com,
sebastian.reichel@collabora.com, simona@ffwll.ch,
tzimmermann@suse.de, devicetree@vger.kernel.org,
dri-devel@lists.freedesktop.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org,
Andy Yan <andy.yan@rock-chips.com>
Subject: [PATCH v3 2/5] drm/bridge: synopsys: dw-dp: Set pixel mode by platform data
Date: Fri, 6 Feb 2026 09:04:12 +0800 [thread overview]
Message-ID: <20260206010421.443605-3-andyshrk@163.com> (raw)
In-Reply-To: <20260206010421.443605-1-andyshrk@163.com>
From: Andy Yan <andy.yan@rock-chips.com>
In the implementation and integration of the SoC, the DW DisplayPort
hardware block can be configured to work in single, dual, quad pixel
mode on differnt platforms, so make the pixel mode set by plat_data
to support the upcoming rk3576 variant.
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
(no changes since v2)
Changes in v2:
- Commit message improve: The pixel mode is determined during the IC
integration stage
drivers/gpu/drm/bridge/synopsys/dw-dp.c | 8 +-------
drivers/gpu/drm/rockchip/dw_dp-rockchip.c | 19 +++++++++++++++----
include/drm/bridge/dw_dp.h | 7 +++++++
3 files changed, 23 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-dp.c b/drivers/gpu/drm/bridge/synopsys/dw-dp.c
index 82aaf74e1bc0..eccf6299bdb7 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-dp.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-dp.c
@@ -352,12 +352,6 @@ enum {
DW_DP_YCBCR420_16BIT,
};
-enum {
- DW_DP_MP_SINGLE_PIXEL,
- DW_DP_MP_DUAL_PIXEL,
- DW_DP_MP_QUAD_PIXEL,
-};
-
enum {
DW_DP_SDP_VERTICAL_INTERVAL = BIT(0),
DW_DP_SDP_HORIZONTAL_INTERVAL = BIT(1),
@@ -1984,7 +1978,7 @@ struct dw_dp *dw_dp_bind(struct device *dev, struct drm_encoder *encoder,
return ERR_CAST(dp);
dp->dev = dev;
- dp->pixel_mode = DW_DP_MP_QUAD_PIXEL;
+ dp->pixel_mode = plat_data->pixel_mode;
dp->plat_data.max_link_rate = plat_data->max_link_rate;
bridge = &dp->bridge;
diff --git a/drivers/gpu/drm/rockchip/dw_dp-rockchip.c b/drivers/gpu/drm/rockchip/dw_dp-rockchip.c
index 25ab4e46301e..89d614d53596 100644
--- a/drivers/gpu/drm/rockchip/dw_dp-rockchip.c
+++ b/drivers/gpu/drm/rockchip/dw_dp-rockchip.c
@@ -75,7 +75,7 @@ static const struct drm_encoder_helper_funcs dw_dp_encoder_helper_funcs = {
static int dw_dp_rockchip_bind(struct device *dev, struct device *master, void *data)
{
struct platform_device *pdev = to_platform_device(dev);
- struct dw_dp_plat_data plat_data;
+ const struct dw_dp_plat_data *plat_data;
struct drm_device *drm_dev = data;
struct rockchip_dw_dp *dp;
struct drm_encoder *encoder;
@@ -89,7 +89,10 @@ static int dw_dp_rockchip_bind(struct device *dev, struct device *master, void *
dp->dev = dev;
platform_set_drvdata(pdev, dp);
- plat_data.max_link_rate = 810000;
+ plat_data = of_device_get_match_data(dev);
+ if (!plat_data)
+ return -ENODEV;
+
encoder = &dp->encoder.encoder;
encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev, dev->of_node);
rockchip_drm_encoder_set_crtc_endpoint_id(&dp->encoder, dev->of_node, 0, 0);
@@ -99,7 +102,7 @@ static int dw_dp_rockchip_bind(struct device *dev, struct device *master, void *
return ret;
drm_encoder_helper_add(encoder, &dw_dp_encoder_helper_funcs);
- dp->base = dw_dp_bind(dev, encoder, &plat_data);
+ dp->base = dw_dp_bind(dev, encoder, plat_data);
if (IS_ERR(dp->base)) {
ret = PTR_ERR(dp->base);
return ret;
@@ -134,8 +137,16 @@ static void dw_dp_remove(struct platform_device *pdev)
component_del(dp->dev, &dw_dp_rockchip_component_ops);
}
+static const struct dw_dp_plat_data rk3588_dp_plat_data = {
+ .max_link_rate = 810000,
+ .pixel_mode = DW_DP_MP_QUAD_PIXEL,
+};
+
static const struct of_device_id dw_dp_of_match[] = {
- { .compatible = "rockchip,rk3588-dp", },
+ {
+ .compatible = "rockchip,rk3588-dp",
+ .data = &rk3588_dp_plat_data,
+ },
{}
};
MODULE_DEVICE_TABLE(of, dw_dp_of_match);
diff --git a/include/drm/bridge/dw_dp.h b/include/drm/bridge/dw_dp.h
index d05df49fd884..25363541e69d 100644
--- a/include/drm/bridge/dw_dp.h
+++ b/include/drm/bridge/dw_dp.h
@@ -11,8 +11,15 @@
struct drm_encoder;
struct dw_dp;
+enum {
+ DW_DP_MP_SINGLE_PIXEL,
+ DW_DP_MP_DUAL_PIXEL,
+ DW_DP_MP_QUAD_PIXEL,
+};
+
struct dw_dp_plat_data {
u32 max_link_rate;
+ u8 pixel_mode;
};
struct dw_dp *dw_dp_bind(struct device *dev, struct drm_encoder *encoder,
--
2.43.0
next prev parent reply other threads:[~2026-02-06 1:05 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-06 1:04 [PATCH v3 0/5] Add DisplayPort support for rk3576 Andy Yan
2026-02-06 1:04 ` [PATCH v3 1/5] dt-bindings: display: rockchip: Add rk3576 DisplayPort Andy Yan
2026-02-06 7:51 ` Krzysztof Kozlowski
2026-02-06 1:04 ` Andy Yan [this message]
2026-02-06 1:04 ` [PATCH v3 3/5] drm/bridge: synopsys: dw-dp: Make i2s/spdif clk optional Andy Yan
2026-02-06 1:04 ` [PATCH v3 4/5] drm/rockchip: dw_dp: Add DisplayPort support for rk3576 Andy Yan
2026-02-06 1:04 ` [PATCH v3 5/5] arm64: dts: rockchip: Add DisplayPort dt node " Andy Yan
2026-02-21 22:17 ` (subset) [PATCH v3 0/5] Add DisplayPort support " Heiko Stuebner
2026-02-22 22:39 ` Heiko Stuebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260206010421.443605-3-andyshrk@163.com \
--to=andyshrk@163.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=alchark@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=andy.yan@rock-chips.com \
--cc=conor+dt@kernel.org \
--cc=cristian.ciocaltea@collabora.com \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=heiko@sntech.de \
--cc=hjc@rock-chips.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=kever.yang@rock-chips.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=nicolas.frattaroli@collabora.com \
--cc=rfoss@kernel.org \
--cc=robh@kernel.org \
--cc=sebastian.reichel@collabora.com \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox