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>
このコミットが含まれているのは:
@@ -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;
|
||||
|
新しいイシューから参照
ユーザーをブロックする