[PATCH 07/20] drm/amd/display: Add chip mask to HDMI retimer/redriver check

Alex Deucher alexdeucher at gmail.com
Mon Oct 16 21:59:33 UTC 2017


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


More information about the amd-gfx mailing list