From f0b48732474141ca68ee1e1e399dbba2e5ccfe65 Mon Sep 17 00:00:00 2001 From: Algea Cao Date: Fri, 11 Mar 2022 19:15:28 +0800 Subject: [PATCH] drm/bridge: dw-hdmi-qp: Send AVI/DRMI packet once per field Increasing the sending frequency of infoframe improves compatibility. Signed-off-by: Algea Cao Change-Id: I095495d8d6641e7263de6cf2d3359f645aac2d6b --- drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 4 ++++ drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c index 5b54a04a5b7b..c8265ac0c4b3 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c @@ -1050,6 +1050,8 @@ static void hdmi_config_AVI(struct dw_hdmi_qp *hdmi, hdmi_writel(hdmi, val, PKT_AVI_CONTENTS1 + i * 4); } + hdmi_modb(hdmi, 0, PKTSCHED_AVI_FIELDRATE, PKTSCHED_PKT_CONFIG1); + hdmi_modb(hdmi, PKTSCHED_AVI_TX_EN | PKTSCHED_GCP_TX_EN, PKTSCHED_AVI_TX_EN | PKTSCHED_GCP_TX_EN, PKTSCHED_PKT_EN); @@ -1204,6 +1206,8 @@ static void hdmi_config_drm_infoframe(struct dw_hdmi_qp *hdmi, hdmi_writel(hdmi, val, PKT_DRMI_CONTENTS1 + ((i / 4) * 4)); } + hdmi_modb(hdmi, 0, PKTSCHED_DRMI_FIELDRATE, PKTSCHED_PKT_CONFIG1); + hdmi_modb(hdmi, PKTSCHED_DRMI_TX_EN, PKTSCHED_DRMI_TX_EN, PKTSCHED_PKT_EN); DRM_DEBUG("%s eotf %d end\n", __func__, diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h index a891c8333e9b..dcc28bd7dcba 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.h @@ -193,6 +193,8 @@ #define PKTSCHED_PRQUEUE2_CONFIG2 0xa94 #define PKTSCHED_PKT_CONFIG0 0xa98 #define PKTSCHED_PKT_CONFIG1 0xa9c +#define PKTSCHED_DRMI_FIELDRATE BIT(13) +#define PKTSCHED_AVI_FIELDRATE BIT(12) #define PKTSCHED_PKT_CONFIG2 0xaa0 #define PKTSCHED_PKT_CONFIG3 0xaa4 #define PKTSCHED_PKT_EN 0xaa8