On Mon, Oct 16, 2017 at 4:31 PM, Harry Wentland <harry.wentland at amd.com> wrote: > From: Andrew Jiang <Andrew.Jiang at amd.com> > > 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: Andrew Jiang <Andrew.Jiang at amd.com> > Reviewed-by: Charlene Liu <Charlene.Liu at amd.com> > Reviewed-by: Tony Cheng <Tony.Cheng at amd.com> > Acked-by: Harry Wentland <Harry.Wentland at amd.com> > --- > drivers/gpu/drm/amd/display/dc/core/dc_link.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c > index 72e56fbe4a42..004e0b0aad8a 100644 > --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c > @@ -45,6 +45,7 @@ > #include "dce/dce_11_0_enum.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(...) \ > dm_logger_write(dc_ctx->logger, LOG_HW_HOTPLUG, \ > __VA_ARGS__) > @@ -1345,7 +1346,6 @@ static bool get_ext_hdmi_settings(struct pipe_ctx *pipe_ctx, > sizeof(integrated_info->dp2_ext_hdmi_6g_reg_settings)); > result = true; > break; > - > default: > break; > } > @@ -1682,7 +1682,9 @@ static void enable_link_hdmi(struct pipe_ctx *pipe_ctx) > is_over_340mhz = true; > > 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 */ > eng_id = pipe_ctx->stream_res.stream_enc->id; > > @@ -1693,7 +1695,7 @@ static void enable_link_hdmi(struct pipe_ctx *pipe_ctx) > write_i2c_default_retimer_setting(pipe_ctx, > is_vga_mode, is_over_340mhz); > } > - } else if ((pipe_ctx->stream->sink->link->chip_caps >> 2) == 0x1) { > + } else if (masked_chip_caps == (0x1 << 2)) { Maybe define these caps at some point? Or use the atombios ones directly. Alex > /* PI3EQX1204, Redriver settings */ > write_i2c_redriver_setting(pipe_ctx, is_over_340mhz); > } > -- > 2.14.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx