disp: msm: dp: add support for test pattern #4

DP specification mandate test pattern #4 for CTS 1.4a. Add
support for the same in link training #2 as per specification.

CRs-Fixed: 2490128
Change-Id: I2f72fec340b56270e7fd1c2940adafe1068bab43
Signed-off-by: Ajay Singh Parmar <aparmar@codeaurora.org>
このコミットが含まれているのは:
Ajay Singh Parmar
2019-07-19 10:57:53 -07:00
コミット 9af9987d3d
2個のファイルの変更22行の追加8行の削除

ファイルの表示

@@ -1212,6 +1212,7 @@ static void dp_catalog_ctrl_set_pattern(struct dp_catalog_ctrl *ctrl,
{
int bit, cnt = 10;
u32 data;
const u32 link_training_offset = 3;
struct dp_catalog_private *catalog;
struct dp_io_data *io_data;
@@ -1223,17 +1224,28 @@ static void dp_catalog_ctrl_set_pattern(struct dp_catalog_ctrl *ctrl,
catalog = dp_catalog_get_priv(ctrl);
io_data = catalog->io.dp_link;
bit = 1;
bit <<= (pattern - 1);
DP_DEBUG("hw: bit=%d train=%d\n", bit, pattern);
dp_write(catalog->exe_mode, io_data, DP_STATE_CTRL, bit);
switch (pattern) {
case DP_TRAINING_PATTERN_4:
bit = 3;
break;
case DP_TRAINING_PATTERN_3:
case DP_TRAINING_PATTERN_2:
case DP_TRAINING_PATTERN_1:
bit = pattern - 1;
break;
default:
DP_ERR("invalid pattern\n");
return;
}
bit = 8;
bit <<= (pattern - 1);
DP_DEBUG("hw: bit=%d train=%d\n", bit, pattern);
dp_write(catalog->exe_mode, io_data, DP_STATE_CTRL, BIT(bit));
bit += link_training_offset;
while (cnt--) {
data = dp_read(catalog->exe_mode, io_data, DP_MAINLINK_READY);
if (data & bit)
if (data & BIT(bit))
break;
}

ファイルの表示

@@ -453,7 +453,9 @@ static int dp_ctrl_link_training_2(struct dp_ctrl_private *ctrl)
/* Make sure to clear the current pattern before starting a new one */
wmb();
if (drm_dp_tps3_supported(ctrl->panel->dpcd))
if (drm_dp_tps4_supported(ctrl->panel->dpcd))
dpcd_pattern = DP_TRAINING_PATTERN_4;
else if (drm_dp_tps3_supported(ctrl->panel->dpcd))
dpcd_pattern = DP_TRAINING_PATTERN_3;
else
dpcd_pattern = DP_TRAINING_PATTERN_2;