mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
67 lines
2.6 KiB
Diff
67 lines
2.6 KiB
Diff
From 597c148465e094c25109a997eff1ee17de63d3ef Mon Sep 17 00:00:00 2001
|
|
From: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
|
|
Date: Mon, 25 Aug 2025 13:08:33 +0300
|
|
Subject: [PATCH 058/110] FROMLIST(v2): drm/bridge: dw-hdmi-qp: Handle platform
|
|
supported formats and color depth
|
|
|
|
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 <cristian.ciocaltea@collabora.com>
|
|
---
|
|
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 a1fc3de58fb7..54377ba3a607 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
|
|
@@ -867,8 +867,9 @@ static void dw_hdmi_qp_bridge_atomic_enable(struct drm_bridge *bridge,
|
|
return;
|
|
|
|
if (connector->display_info.is_hdmi) {
|
|
- dev_dbg(hdmi->dev, "%s mode=HDMI rate=%llu\n",
|
|
- __func__, conn_state->hdmi.tmds_char_rate);
|
|
+ dev_dbg(hdmi->dev, "%s mode=HDMI %s rate=%llu bpc=%u\n", __func__,
|
|
+ drm_hdmi_connector_get_output_format_name(conn_state->hdmi.output_format),
|
|
+ conn_state->hdmi.tmds_char_rate, conn_state->hdmi.output_bpc);
|
|
op_mode = 0;
|
|
hdmi->tmds_char_rate = conn_state->hdmi.tmds_char_rate;
|
|
} else {
|
|
@@ -1286,6 +1287,12 @@ struct dw_hdmi_qp *dw_hdmi_qp_bind(struct platform_device *pdev,
|
|
hdmi->bridge.vendor = "Synopsys";
|
|
hdmi->bridge.product = "DW HDMI QP TX";
|
|
|
|
+ if (plat_data->supported_formats)
|
|
+ hdmi->bridge.supported_formats = plat_data->supported_formats;
|
|
+
|
|
+ if (plat_data->max_bpc)
|
|
+ hdmi->bridge.max_bpc = plat_data->max_bpc;
|
|
+
|
|
hdmi->bridge.ddc = 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_qp.h
|
|
index 76ecf3130199..3f461f6b9bbf 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;
|
|
};
|
|
|
|
struct dw_hdmi_qp *dw_hdmi_qp_bind(struct platform_device *pdev,
|
|
--
|
|
2.34.1
|
|
|