Commit 3e5e2215 authored by Andrew Jiang's avatar Andrew Jiang Committed by Alex Deucher

drm/amd/display: Add chip mask to HDMI retimer/redriver check

There were cases where the chip caps held additional bits that led to
the retimer/redriver check failing; use the proper mask to ensure that
we have only the bits that we care about for the check in question.
Signed-off-by: default avatarAndrew Jiang <Andrew.Jiang@amd.com>
Reviewed-by: default avatarCharlene Liu <Charlene.Liu@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Acked-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 58bb0e63
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#include "dce/dce_11_0_enum.h" #include "dce/dce_11_0_enum.h"
#include "dce/dce_11_0_sh_mask.h" #include "dce/dce_11_0_sh_mask.h"
#define EXT_DISPLAY_PATH_CAPS__EXT_CHIP_MASK 0x007C /* Copied from atombios.h */
#define LINK_INFO(...) \ #define LINK_INFO(...) \
dm_logger_write(dc_ctx->logger, LOG_HW_HOTPLUG, \ dm_logger_write(dc_ctx->logger, LOG_HW_HOTPLUG, \
__VA_ARGS__) __VA_ARGS__)
...@@ -1345,7 +1346,6 @@ static bool get_ext_hdmi_settings(struct pipe_ctx *pipe_ctx, ...@@ -1345,7 +1346,6 @@ static bool get_ext_hdmi_settings(struct pipe_ctx *pipe_ctx,
sizeof(integrated_info->dp2_ext_hdmi_6g_reg_settings)); sizeof(integrated_info->dp2_ext_hdmi_6g_reg_settings));
result = true; result = true;
break; break;
default: default:
break; break;
} }
...@@ -1682,7 +1682,9 @@ static void enable_link_hdmi(struct pipe_ctx *pipe_ctx) ...@@ -1682,7 +1682,9 @@ static void enable_link_hdmi(struct pipe_ctx *pipe_ctx)
is_over_340mhz = true; is_over_340mhz = true;
if (dc_is_hdmi_signal(pipe_ctx->stream->signal)) { if (dc_is_hdmi_signal(pipe_ctx->stream->signal)) {
if ((pipe_ctx->stream->sink->link->chip_caps >> 2) == 0x2) { unsigned short masked_chip_caps = pipe_ctx->stream->sink->link->chip_caps &
EXT_DISPLAY_PATH_CAPS__EXT_CHIP_MASK;
if (masked_chip_caps == (0x2 << 2)) {
/* DP159, Retimer settings */ /* DP159, Retimer settings */
eng_id = pipe_ctx->stream_res.stream_enc->id; eng_id = pipe_ctx->stream_res.stream_enc->id;
...@@ -1693,7 +1695,7 @@ static void enable_link_hdmi(struct pipe_ctx *pipe_ctx) ...@@ -1693,7 +1695,7 @@ static void enable_link_hdmi(struct pipe_ctx *pipe_ctx)
write_i2c_default_retimer_setting(pipe_ctx, write_i2c_default_retimer_setting(pipe_ctx,
is_vga_mode, is_over_340mhz); is_vga_mode, is_over_340mhz);
} }
} else if ((pipe_ctx->stream->sink->link->chip_caps >> 2) == 0x1) { } else if (masked_chip_caps == (0x1 << 2)) {
/* PI3EQX1204, Redriver settings */ /* PI3EQX1204, Redriver settings */
write_i2c_redriver_setting(pipe_ctx, is_over_340mhz); write_i2c_redriver_setting(pipe_ctx, is_over_340mhz);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment