summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhinav Kumar <abhinavk@codeaurora.org>2019-03-01 16:19:12 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2019-03-26 16:18:20 -0700
commit1b1e63b1a7664689886f941baba0fe477db01a0e (patch)
tree027b5ccf0dd4c87706c9e254b3e8e8038dbdc744
parent90059640cc78a46b8201bc33a6c65361d1ae19de (diff)
drm/msm: adjust HDMI DDC speed configuration
HDMI 2.0 compliance E-DDC test requires the DDC signal timings to meet a minimum threshold to pass the compliance test. Current DDC settings were not matching the requirement. Adjust the DDC settings to meet the threshold and also make sure to leave the remaining bits of DDC speed register untouched. Change-Id: I1eb9304f219906e48f8dec988cd818b879911e71 Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
-rw-r--r--drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c9
-rw-r--r--drivers/gpu/drm/msm/hdmi/hdmi_util.c12
2 files changed, 16 insertions, 5 deletions
diff --git a/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c b/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c
index 30d262f2b0d4..2928e2ec5b83 100644
--- a/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c
+++ b/drivers/gpu/drm/msm/hdmi-staging/sde_hdmi_util.c
@@ -874,14 +874,19 @@ void sde_hdmi_ddc_config(void *hdmi_display)
{
struct sde_hdmi *display = (struct sde_hdmi *)hdmi_display;
struct hdmi *hdmi = display->ctrl.ctrl;
+ uint32_t ddc_speed;
if (!hdmi) {
pr_err("Invalid parameters\n");
return;
}
+
+ ddc_speed = hdmi_read(hdmi, REG_HDMI_DDC_SPEED);
+ ddc_speed |= HDMI_DDC_SPEED_THRESHOLD(2);
+ ddc_speed |= HDMI_DDC_SPEED_PRESCALE(12);
+
hdmi_write(hdmi, REG_HDMI_DDC_SPEED,
- HDMI_DDC_SPEED_THRESHOLD(2) |
- HDMI_DDC_SPEED_PRESCALE(10));
+ ddc_speed);
hdmi_write(hdmi, REG_HDMI_DDC_SETUP,
HDMI_DDC_SETUP_TIMEOUT(0xff));
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_util.c b/drivers/gpu/drm/msm/hdmi/hdmi_util.c
index c7cfa38ed3ad..a8142e5c0fbb 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_util.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_util.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published by
@@ -19,14 +19,20 @@
void init_ddc(struct hdmi *hdmi)
{
+
+ uint32_t ddc_speed;
+
hdmi_write(hdmi, REG_HDMI_DDC_CTRL,
HDMI_DDC_CTRL_SW_STATUS_RESET);
hdmi_write(hdmi, REG_HDMI_DDC_CTRL,
HDMI_DDC_CTRL_SOFT_RESET);
+ ddc_speed = hdmi_read(hdmi, REG_HDMI_DDC_SPEED);
+ ddc_speed |= HDMI_DDC_SPEED_THRESHOLD(2);
+ ddc_speed |= HDMI_DDC_SPEED_PRESCALE(12);
+
hdmi_write(hdmi, REG_HDMI_DDC_SPEED,
- HDMI_DDC_SPEED_THRESHOLD(2) |
- HDMI_DDC_SPEED_PRESCALE(10));
+ ddc_speed);
hdmi_write(hdmi, REG_HDMI_DDC_SETUP,
HDMI_DDC_SETUP_TIMEOUT(0xff));