diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3544-drm-amd-display-Rearchitecture-HDMI-HPD.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3544-drm-amd-display-Rearchitecture-HDMI-HPD.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3544-drm-amd-display-Rearchitecture-HDMI-HPD.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3544-drm-amd-display-Rearchitecture-HDMI-HPD.patch new file mode 100644 index 00000000..9b912b8e --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3544-drm-amd-display-Rearchitecture-HDMI-HPD.patch @@ -0,0 +1,89 @@ +From 94ea734c4be6960a5e2b01b1d0d41d439b204f5e Mon Sep 17 00:00:00 2001 +From: John Barberiz <jbarberi@amd.com> +Date: Fri, 26 Jan 2018 17:39:19 -0500 +Subject: [PATCH 3544/4131] drm/amd/display: Rearchitecture HDMI HPD + +- Disabled HPD filter and used HPD software timer instead +- Allows DM to disable HPD filtering + +Signed-off-by: John Barberiz <jbarberi@amd.com> +Reviewed-by: Jun Lei <Jun.Lei@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc_link.c | 32 +++++++++++++++++++++++++++ + drivers/gpu/drm/amd/display/dc/dc_link.h | 4 ++++ + 2 files changed, 36 insertions(+) + +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 50aa9a4..02e1c3b 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c +@@ -127,6 +127,8 @@ static bool program_hpd_filter( + int delay_on_connect_in_ms = 0; + int delay_on_disconnect_in_ms = 0; + ++ if (link->is_hpd_filter_disabled) ++ return false; + /* Verify feature is supported */ + switch (link->connector_signal) { + case SIGNAL_TYPE_DVI_SINGLE_LINK: +@@ -2346,3 +2348,33 @@ void core_link_set_avmute(struct pipe_ctx *pipe_ctx, bool enable) + core_dc->hwss.set_avmute(pipe_ctx, enable); + } + ++void dc_link_disable_hpd_filter(struct dc_link *link) ++{ ++ struct gpio *hpd; ++ ++ if (!link->is_hpd_filter_disabled) { ++ link->is_hpd_filter_disabled = true; ++ /* Obtain HPD handle */ ++ hpd = get_hpd_gpio(link->ctx->dc_bios, link->link_id, link->ctx->gpio_service); ++ ++ if (!hpd) ++ return; ++ ++ /* Setup HPD filtering */ ++ if (dal_gpio_open(hpd, GPIO_MODE_INTERRUPT) == GPIO_RESULT_OK) { ++ struct gpio_hpd_config config; ++ ++ config.delay_on_connect = 0; ++ config.delay_on_disconnect = 0; ++ ++ dal_irq_setup_hpd_filter(hpd, &config); ++ ++ dal_gpio_close(hpd); ++ } else { ++ ASSERT_CRITICAL(false); ++ } ++ /* Release HPD handle */ ++ dal_gpio_destroy_irq(&hpd); ++ } ++} ++ +diff --git a/drivers/gpu/drm/amd/display/dc/dc_link.h b/drivers/gpu/drm/amd/display/dc/dc_link.h +index f11a734..ac0f617 100644 +--- a/drivers/gpu/drm/amd/display/dc/dc_link.h ++++ b/drivers/gpu/drm/amd/display/dc/dc_link.h +@@ -64,6 +64,8 @@ struct dc_link { + enum signal_type connector_signal; + enum dc_irq_source irq_source_hpd; + enum dc_irq_source irq_source_hpd_rx;/* aka DP Short Pulse */ ++ bool is_hpd_filter_disabled; ++ + /* caps is the same as reported_link_cap. link_traing use + * reported_link_cap. Will clean up. TODO + */ +@@ -195,6 +197,8 @@ bool dc_link_dp_set_test_pattern( + const unsigned char *p_custom_pattern, + unsigned int cust_pattern_size); + ++void dc_link_disable_hpd_filter(struct dc_link *link); ++ + /* + * DPCD access interfaces + */ +-- +2.7.4 + |