diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0891-drm-amd-dal-Use-fine-grained-watermarks-for-support-.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0891-drm-amd-dal-Use-fine-grained-watermarks-for-support-.patch | 263 |
1 files changed, 0 insertions, 263 deletions
diff --git a/common/recipes-kernel/linux/files/0891-drm-amd-dal-Use-fine-grained-watermarks-for-support-.patch b/common/recipes-kernel/linux/files/0891-drm-amd-dal-Use-fine-grained-watermarks-for-support-.patch deleted file mode 100644 index bf7269c0..00000000 --- a/common/recipes-kernel/linux/files/0891-drm-amd-dal-Use-fine-grained-watermarks-for-support-.patch +++ /dev/null @@ -1,263 +0,0 @@ -From 7821e089e8f8d7ec06df41a2e4ca7453f0c1af79 Mon Sep 17 00:00:00 2001 -From: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com> -Date: Tue, 8 Mar 2016 17:35:27 -0500 -Subject: [PATCH 0891/1110] drm/amd/dal: Use fine-grained watermarks for - support new ASICs - -Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com> -Acked-by: Harry Wentland <harry.wentland@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/dal/dc/calcs/bandwidth_calcs.c | 89 +++++++++++++++++++--- - .../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 6 +- - .../gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c | 13 ++-- - drivers/gpu/drm/amd/dal/dc/inc/bandwidth_calcs.h | 2 + - drivers/gpu/drm/amd/dal/dc/inc/hw/mem_input.h | 3 +- - 5 files changed, 94 insertions(+), 19 deletions(-) - -diff --git a/drivers/gpu/drm/amd/dal/dc/calcs/bandwidth_calcs.c b/drivers/gpu/drm/amd/dal/dc/calcs/bandwidth_calcs.c -index 52557db..c64efe6 100644 ---- a/drivers/gpu/drm/amd/dal/dc/calcs/bandwidth_calcs.c -+++ b/drivers/gpu/drm/amd/dal/dc/calcs/bandwidth_calcs.c -@@ -3879,6 +3879,41 @@ bool bw_calcs(struct dc_context *ctx, const struct bw_calcs_dceip *dceip, - bw_mul(high_yclk, bw_int_to_fixed(1000))); - - /* units: nanosecond, 16bit storage. */ -+ calcs_output->nbp_state_change_wm_ns[0].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ nbp_state_change_watermark[4], bw_int_to_fixed(1000))); -+ calcs_output->nbp_state_change_wm_ns[1].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ nbp_state_change_watermark[5], bw_int_to_fixed(1000))); -+ calcs_output->nbp_state_change_wm_ns[2].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ nbp_state_change_watermark[6], bw_int_to_fixed(1000))); -+ -+ calcs_output->stutter_exit_wm_ns[0].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ stutter_exit_watermark[4], bw_int_to_fixed(1000))); -+ calcs_output->stutter_exit_wm_ns[1].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ stutter_exit_watermark[5], bw_int_to_fixed(1000))); -+ calcs_output->stutter_exit_wm_ns[2].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ stutter_exit_watermark[6], bw_int_to_fixed(1000))); -+ -+ calcs_output->urgent_wm_ns[0].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ urgent_watermark[4], bw_int_to_fixed(1000))); -+ calcs_output->urgent_wm_ns[1].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ urgent_watermark[5], bw_int_to_fixed(1000))); -+ calcs_output->urgent_wm_ns[2].a_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ urgent_watermark[6], bw_int_to_fixed(1000))); -+ -+ /*TODO check correctness*/ -+ ((struct bw_calcs_vbios *)vbios)->low_sclk = mid_sclk; -+ calculate_bandwidth(dceip, vbios, bw_data_internal, -+ bw_results_internal); -+ - calcs_output->nbp_state_change_wm_ns[0].b_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - nbp_state_change_watermark[4],bw_int_to_fixed(1000))); -@@ -3909,6 +3944,42 @@ bool bw_calcs(struct dc_context *ctx, const struct bw_calcs_dceip *dceip, - bw_fixed_to_int(bw_mul(bw_results_internal-> - urgent_watermark[6], bw_int_to_fixed(1000))); - -+ /*TODO check correctness*/ -+ ((struct bw_calcs_vbios *)vbios)->low_sclk = low_sclk; -+ ((struct bw_calcs_vbios *)vbios)->low_yclk = mid_yclk; -+ calculate_bandwidth(dceip, vbios, bw_data_internal, -+ bw_results_internal); -+ -+ calcs_output->nbp_state_change_wm_ns[0].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ nbp_state_change_watermark[4], bw_int_to_fixed(1000))); -+ calcs_output->nbp_state_change_wm_ns[1].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ nbp_state_change_watermark[5], bw_int_to_fixed(1000))); -+ calcs_output->nbp_state_change_wm_ns[2].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ nbp_state_change_watermark[6], bw_int_to_fixed(1000))); -+ -+ calcs_output->stutter_exit_wm_ns[0].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ stutter_exit_watermark[4], bw_int_to_fixed(1000))); -+ calcs_output->stutter_exit_wm_ns[1].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ stutter_exit_watermark[5], bw_int_to_fixed(1000))); -+ calcs_output->stutter_exit_wm_ns[2].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ stutter_exit_watermark[6], bw_int_to_fixed(1000))); -+ -+ calcs_output->urgent_wm_ns[0].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ urgent_watermark[4], bw_int_to_fixed(1000))); -+ calcs_output->urgent_wm_ns[1].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ urgent_watermark[5], bw_int_to_fixed(1000))); -+ calcs_output->urgent_wm_ns[2].c_mark = -+ bw_fixed_to_int(bw_mul(bw_results_internal-> -+ urgent_watermark[6], bw_int_to_fixed(1000))); -+ - ((struct bw_calcs_vbios *)vbios)->low_yclk = high_yclk; - ((struct bw_calcs_vbios *)vbios)->mid_yclk = high_yclk; - ((struct bw_calcs_vbios *)vbios)->low_sclk = high_sclk; -@@ -3917,33 +3988,33 @@ bool bw_calcs(struct dc_context *ctx, const struct bw_calcs_dceip *dceip, - calculate_bandwidth(dceip, vbios, bw_data_internal, - bw_results_internal); - -- calcs_output->nbp_state_change_wm_ns[0].a_mark = -+ calcs_output->nbp_state_change_wm_ns[0].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - nbp_state_change_watermark[4], bw_int_to_fixed(1000))); -- calcs_output->nbp_state_change_wm_ns[1].a_mark = -+ calcs_output->nbp_state_change_wm_ns[1].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - nbp_state_change_watermark[5], bw_int_to_fixed(1000))); -- calcs_output->nbp_state_change_wm_ns[2].a_mark = -+ calcs_output->nbp_state_change_wm_ns[2].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - nbp_state_change_watermark[6], bw_int_to_fixed(1000))); - -- calcs_output->stutter_exit_wm_ns[0].a_mark = -+ calcs_output->stutter_exit_wm_ns[0].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - stutter_exit_watermark[4], bw_int_to_fixed(1000))); -- calcs_output->stutter_exit_wm_ns[1].a_mark = -+ calcs_output->stutter_exit_wm_ns[1].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - stutter_exit_watermark[5], bw_int_to_fixed(1000))); -- calcs_output->stutter_exit_wm_ns[2].a_mark = -+ calcs_output->stutter_exit_wm_ns[2].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - stutter_exit_watermark[6], bw_int_to_fixed(1000))); - -- calcs_output->urgent_wm_ns[0].a_mark = -+ calcs_output->urgent_wm_ns[0].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - urgent_watermark[4], bw_int_to_fixed(1000))); -- calcs_output->urgent_wm_ns[1].a_mark = -+ calcs_output->urgent_wm_ns[1].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - urgent_watermark[5], bw_int_to_fixed(1000))); -- calcs_output->urgent_wm_ns[2].a_mark = -+ calcs_output->urgent_wm_ns[2].d_mark = - bw_fixed_to_int(bw_mul(bw_results_internal-> - urgent_watermark[6], bw_int_to_fixed(1000))); - -diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -index defaac4..80faa98 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -@@ -1172,8 +1172,10 @@ static void set_displaymarks( - static void set_safe_displaymarks(struct resource_context *res_ctx) - { - uint8_t i; -- struct bw_watermarks max_marks = { MAX_WATERMARK, MAX_WATERMARK }; -- struct bw_watermarks nbp_marks = { SAFE_NBP_MARK, SAFE_NBP_MARK }; -+ struct bw_watermarks max_marks = { -+ MAX_WATERMARK, MAX_WATERMARK, MAX_WATERMARK, MAX_WATERMARK }; -+ struct bw_watermarks nbp_marks = { -+ SAFE_NBP_MARK, SAFE_NBP_MARK, SAFE_NBP_MARK, SAFE_NBP_MARK }; - - for (i = 0; i < MAX_PIPES; i++) { - if (res_ctx->pipe_ctx[i].stream == NULL) -diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c -index e7fc5bd..6f3ca2d 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c -+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c -@@ -32,7 +32,6 @@ - - #include "include/logger_interface.h" - #include "adapter_service_interface.h" --#include "inc/bandwidth_calcs.h" - - #include "dce110_mem_input.h" - -@@ -442,7 +441,7 @@ static void program_urgency_watermark( - - set_reg_field_value( - urgency_cntl, -- marks_low.a_mark, -+ marks_low.d_mark, - DPG_PIPE_URGENCY_CONTROL, - URGENCY_LOW_WATERMARK); - -@@ -464,7 +463,7 @@ static void program_urgency_watermark( - urgency_cntl = dm_read_reg(ctx, urgency_addr); - - set_reg_field_value(urgency_cntl, -- marks_low.b_mark, -+ marks_low.a_mark, - DPG_PIPE_URGENCY_CONTROL, - URGENCY_LOW_WATERMARK); - -@@ -509,7 +508,7 @@ static void program_stutter_watermark( - - /*Write watermark set A*/ - set_reg_field_value(stutter_cntl, -- marks.a_mark, -+ marks.d_mark, - DPG_PIPE_STUTTER_CONTROL, - STUTTER_EXIT_SELF_REFRESH_WATERMARK); - dm_write_reg(ctx, stutter_addr, stutter_cntl); -@@ -534,7 +533,7 @@ static void program_stutter_watermark( - - /*Write watermark set B*/ - set_reg_field_value(stutter_cntl, -- marks.b_mark, -+ marks.a_mark, - DPG_PIPE_STUTTER_CONTROL, - STUTTER_EXIT_SELF_REFRESH_WATERMARK); - dm_write_reg(ctx, stutter_addr, stutter_cntl); -@@ -580,7 +579,7 @@ static void program_nbp_watermark( - value = dm_read_reg(ctx, addr); - set_reg_field_value( - value, -- marks.a_mark, -+ marks.d_mark, - DPG_PIPE_NB_PSTATE_CHANGE_CONTROL, - NB_PSTATE_CHANGE_WATERMARK); - dm_write_reg(ctx, addr, value); -@@ -618,7 +617,7 @@ static void program_nbp_watermark( - value = dm_read_reg(ctx, addr); - set_reg_field_value( - value, -- marks.b_mark, -+ marks.a_mark, - DPG_PIPE_NB_PSTATE_CHANGE_CONTROL, - NB_PSTATE_CHANGE_WATERMARK); - dm_write_reg(ctx, addr, value); -diff --git a/drivers/gpu/drm/amd/dal/dc/inc/bandwidth_calcs.h b/drivers/gpu/drm/amd/dal/dc/inc/bandwidth_calcs.h -index ff1ea09..023efd3 100644 ---- a/drivers/gpu/drm/amd/dal/dc/inc/bandwidth_calcs.h -+++ b/drivers/gpu/drm/amd/dal/dc/inc/bandwidth_calcs.h -@@ -465,6 +465,8 @@ struct bw_calcs_results { - struct bw_watermarks { - uint32_t a_mark; - uint32_t b_mark; -+ uint32_t c_mark; -+ uint32_t d_mark; - }; - - struct bw_calcs_output { -diff --git a/drivers/gpu/drm/amd/dal/dc/inc/hw/mem_input.h b/drivers/gpu/drm/amd/dal/dc/inc/hw/mem_input.h -index 3829694..6d7412c 100644 ---- a/drivers/gpu/drm/amd/dal/dc/inc/hw/mem_input.h -+++ b/drivers/gpu/drm/amd/dal/dc/inc/hw/mem_input.h -@@ -25,8 +25,9 @@ - #ifndef __DAL_MEM_INPUT_H__ - #define __DAL_MEM_INPUT_H__ - --#include "include/grph_object_id.h" - #include "dc.h" -+#include "include/grph_object_id.h" -+#include "inc/bandwidth_calcs.h" - - struct mem_input { - struct mem_input_funcs *funcs; --- -2.7.4 - |