aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/0087-drm-amd-display-4k-split-black-out-due-to-incorrect-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0087-drm-amd-display-4k-split-black-out-due-to-incorrect-.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/0087-drm-amd-display-4k-split-black-out-due-to-incorrect-.patch222
1 files changed, 0 insertions, 222 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0087-drm-amd-display-4k-split-black-out-due-to-incorrect-.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0087-drm-amd-display-4k-split-black-out-due-to-incorrect-.patch
deleted file mode 100644
index 69eb6ed6..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.14.71/0087-drm-amd-display-4k-split-black-out-due-to-incorrect-.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-From e32d4507e7991198cc7f6fd5c19c36d038dba038 Mon Sep 17 00:00:00 2001
-From: Tony Cheng <tony.cheng@amd.com>
-Date: Mon, 19 Dec 2016 12:54:40 -0500
-Subject: [PATCH 0087/4131] drm/amd/display: 4k split black out due to
- incorrect cursor
-
-- add handling to program both cursor for left and right pipe
-- add guard to disable cursor in case where cursor isn't visible to prevent pipe hang
-
-Signed-off-by: Tony Cheng <tony.cheng@amd.com>
-Reviewed-by: Yongqiang Sun <yongqiang.sun@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_target.c | 83 ++++++++++------------
- drivers/gpu/drm/amd/display/dc/dc_hw_types.h | 9 +++
- drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp.h | 3 +-
- .../drm/amd/display/dc/dce110/dce110_ipp_cursor.c | 3 +-
- drivers/gpu/drm/amd/display/dc/inc/hw/ipp.h | 3 +-
- 5 files changed, 53 insertions(+), 48 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_target.c b/drivers/gpu/drm/amd/display/dc/core/dc_target.c
-index 48eb7b0..2531df7 100644
---- a/drivers/gpu/drm/amd/display/dc/core/dc_target.c
-+++ b/drivers/gpu/drm/amd/display/dc/core/dc_target.c
-@@ -148,56 +148,49 @@ bool dc_target_set_cursor_attributes(
- struct dc_target *dc_target,
- const struct dc_cursor_attributes *attributes)
- {
-- uint8_t i, j;
-- struct core_target *target;
-- struct core_dc *core_dc;
-- struct resource_context *res_ctx;
-+ int i, j;
-+ struct core_target *target = DC_TARGET_TO_CORE(dc_target);
-+ struct core_dc *core_dc = DC_TO_CORE(target->ctx->dc);
-+ struct resource_context *res_ctx = &core_dc->current_context->res_ctx;
-+ bool ret = false;
-
- if (NULL == dc_target) {
- dm_error("DC: dc_target is NULL!\n");
- return false;
--
- }
- if (NULL == attributes) {
- dm_error("DC: attributes is NULL!\n");
- return false;
--
- }
-
-- target = DC_TARGET_TO_CORE(dc_target);
-- core_dc = DC_TO_CORE(target->ctx->dc);
-- res_ctx = &core_dc->current_context->res_ctx;
-+ for (i = 0; i < dc_target->stream_count; i++) {
-+ const struct dc_stream *stream = dc_target->streams[i];
-
-- for (i = 0; i < target->public.stream_count; i++) {
- for (j = 0; j < MAX_PIPES; j++) {
-- struct input_pixel_processor *ipp =
-- res_ctx->pipe_ctx[j].ipp;
-+ struct pipe_ctx *pipe_ctx = &res_ctx->pipe_ctx[j];
-
-- if (res_ctx->pipe_ctx[j].stream !=
-- DC_STREAM_TO_CORE(target->public.streams[i]))
-- continue;
-+ if (&pipe_ctx->stream->public == stream) {
-+ struct input_pixel_processor *ipp = pipe_ctx->ipp;
-
-- /* As of writing of this code cursor is on the top
-- * plane so we only need to set it on first pipe we
-- * find. May need to make this code dce specific later.
-- */
-- if (ipp->funcs->ipp_cursor_set_attributes(
-- ipp, attributes))
-- return true;
-+ if (ipp->funcs->ipp_cursor_set_attributes(
-+ ipp, attributes))
-+ ret = true;
-+ }
- }
- }
-
-- return false;
-+ return ret;
- }
-
- bool dc_target_set_cursor_position(
- struct dc_target *dc_target,
- const struct dc_cursor_position *position)
- {
-- uint8_t i, j;
-- struct core_target *target;
-- struct core_dc *core_dc;
-- struct resource_context *res_ctx;
-+ int i, j;
-+ struct core_target *target = DC_TARGET_TO_CORE(dc_target);
-+ struct core_dc *core_dc = DC_TO_CORE(target->ctx->dc);
-+ struct resource_context *res_ctx = &core_dc->current_context->res_ctx;
-+ bool ret = false;
-
- if (NULL == dc_target) {
- dm_error("DC: dc_target is NULL!\n");
-@@ -209,29 +202,29 @@ bool dc_target_set_cursor_position(
- return false;
- }
-
-- target = DC_TARGET_TO_CORE(dc_target);
-- core_dc = DC_TO_CORE(target->ctx->dc);
-- res_ctx = &core_dc->current_context->res_ctx;
-+ for (i = 0; i < dc_target->stream_count; i++) {
-+ const struct dc_stream *stream = dc_target->streams[i];
-
-- for (i = 0; i < target->public.stream_count; i++) {
- for (j = 0; j < MAX_PIPES; j++) {
-- struct input_pixel_processor *ipp =
-- res_ctx->pipe_ctx[j].ipp;
--
-- if (res_ctx->pipe_ctx[j].stream !=
-- DC_STREAM_TO_CORE(target->public.streams[i]))
-- continue;
--
-- /* As of writing of this code cursor is on the top
-- * plane so we only need to set it on first pipe we
-- * find. May need to make this code dce specific later.
-- */
-- ipp->funcs->ipp_cursor_set_position(ipp, position);
-- return true;
-+ struct pipe_ctx *pipe_ctx = &res_ctx->pipe_ctx[j];
-+
-+ if (&pipe_ctx->stream->public == stream) {
-+ struct input_pixel_processor *ipp = pipe_ctx->ipp;
-+ struct dc_cursor_mi_param param = {
-+ .pixel_clk_khz = stream->timing.pix_clk_khz,
-+ .ref_clk_khz = 48000,/*todo refclk*/
-+ .viewport_x_start = pipe_ctx->scl_data.viewport.x,
-+ .viewport_width = pipe_ctx->scl_data.viewport.width,
-+ .h_scale_ratio = pipe_ctx->scl_data.ratios.horz,
-+ };
-+
-+ ipp->funcs->ipp_cursor_set_position(ipp, position, &param);
-+ ret = true;
-+ }
- }
- }
-
-- return false;
-+ return ret;
- }
-
- uint32_t dc_target_get_vblank_counter(const struct dc_target *dc_target)
-diff --git a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
-index 5605a5c..bd60337 100644
---- a/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
-+++ b/drivers/gpu/drm/amd/display/dc/dc_hw_types.h
-@@ -27,6 +27,7 @@
- #define DC_HW_TYPES_H
-
- #include "os_types.h"
-+#include "fixed31_32.h"
-
- /******************************************************************************
- * Data types for Virtual HW Layer of DAL3.
-@@ -359,6 +360,14 @@ struct dc_cursor_position {
- bool hot_spot_enable;
- };
-
-+struct dc_cursor_mi_param {
-+ unsigned int pixel_clk_khz;
-+ unsigned int ref_clk_khz;
-+ unsigned int viewport_x_start;
-+ unsigned int viewport_width;
-+ struct fixed31_32 h_scale_ratio;
-+};
-+
- /* IPP related types */
-
- /* Used by both ipp amd opp functions*/
-diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp.h b/drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp.h
-index 60eebde..56fe327 100644
---- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp.h
-+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp.h
-@@ -54,7 +54,8 @@ void dce110_ipp_destroy(struct input_pixel_processor **ipp);
- /* CURSOR RELATED */
- void dce110_ipp_cursor_set_position(
- struct input_pixel_processor *ipp,
-- const struct dc_cursor_position *position);
-+ const struct dc_cursor_position *position,
-+ const struct dc_cursor_mi_param *param);
-
- bool dce110_ipp_cursor_set_attributes(
- struct input_pixel_processor *ipp,
-diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp_cursor.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp_cursor.c
-index 95f6ca3..1cab12b 100644
---- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp_cursor.c
-+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_ipp_cursor.c
-@@ -72,7 +72,8 @@ static void program_address(
-
- void dce110_ipp_cursor_set_position(
- struct input_pixel_processor *ipp,
-- const struct dc_cursor_position *position)
-+ const struct dc_cursor_position *position,
-+ const struct dc_cursor_mi_param *param)
- {
- struct dce110_ipp *ipp110 = TO_DCE110_IPP(ipp);
-
-diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/ipp.h b/drivers/gpu/drm/amd/display/dc/inc/hw/ipp.h
-index 7e5f3e0..81de975 100644
---- a/drivers/gpu/drm/amd/display/dc/inc/hw/ipp.h
-+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/ipp.h
-@@ -83,7 +83,8 @@ struct ipp_funcs {
- /*** cursor ***/
- void (*ipp_cursor_set_position)(
- struct input_pixel_processor *ipp,
-- const struct dc_cursor_position *position);
-+ const struct dc_cursor_position *position,
-+ const struct dc_cursor_mi_param *param);
-
- bool (*ipp_cursor_set_attributes)(
- struct input_pixel_processor *ipp,
---
-2.7.4
-