diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0894-drm-amd-dal-allocate-structures-in-temp_params-separ.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0894-drm-amd-dal-allocate-structures-in-temp_params-separ.patch | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/common/recipes-kernel/linux/files/0894-drm-amd-dal-allocate-structures-in-temp_params-separ.patch b/common/recipes-kernel/linux/files/0894-drm-amd-dal-allocate-structures-in-temp_params-separ.patch deleted file mode 100644 index 0ceb1fee..00000000 --- a/common/recipes-kernel/linux/files/0894-drm-amd-dal-allocate-structures-in-temp_params-separ.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 79ec3f43623e99119beb903e1e4214744dc25f6d Mon Sep 17 00:00:00 2001 -From: Eric Yang <eric.yang2@amd.com> -Date: Wed, 9 Mar 2016 17:09:53 -0500 -Subject: [PATCH 0894/1110] drm/amd/dal: allocate structures in temp_params - separately - -The temp_params structure was very big (117648 bytes) and fails -to allocate on some systems in suspend/resume. This causes gamma -to not be programmed and color corruption seen on resume. - -Signed-off-by: Eric Yang <eric.yang2@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/gamma_calcs.c | 62 ++++++++++++++++++---- - .../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 15 ++---- - drivers/gpu/drm/amd/dal/dc/inc/gamma_calcs.h | 14 +---- - 3 files changed, 57 insertions(+), 34 deletions(-) - -diff --git a/drivers/gpu/drm/amd/dal/dc/calcs/gamma_calcs.c b/drivers/gpu/drm/amd/dal/dc/calcs/gamma_calcs.c -index 9c18bda..0ddd961 100644 ---- a/drivers/gpu/drm/amd/dal/dc/calcs/gamma_calcs.c -+++ b/drivers/gpu/drm/amd/dal/dc/calcs/gamma_calcs.c -@@ -1284,22 +1284,47 @@ static bool convert_to_custom_float( - return true; - } - --void calculate_regamma_params(struct pwl_params *params, -- struct temp_params *temp_params, -+bool calculate_regamma_params(struct pwl_params *params, - const struct core_gamma *ramp, - const struct core_surface *surface) - { - struct gamma_curve *arr_curve_points = params->arr_curve_points; - struct curve_points *arr_points = params->arr_points; -- struct hw_x_point *coordinates_x = temp_params->coordinates_x; -- struct pwl_float_data *rgb_user = temp_params->rgb_user; -- struct pwl_float_data_ex *rgb_regamma = temp_params->rgb_regamma; -- struct pwl_float_data *rgb_oem = temp_params->rgb_oem; - struct pwl_result_data *rgb_resulted = params->rgb_resulted; - struct dividers dividers; -- struct gamma_pixel *axix_x_256 = temp_params->axix_x_256; -- struct pixel_gamma_point *coeff128_oem = temp_params->coeff128_oem; -- struct pixel_gamma_point *coeff128 = temp_params->coeff128; -+ -+ struct hw_x_point *coordinates_x = NULL; -+ struct pwl_float_data *rgb_user = NULL ; -+ struct pwl_float_data_ex *rgb_regamma = NULL; -+ struct pwl_float_data *rgb_oem = NULL; -+ struct gamma_pixel *axix_x_256 = NULL; -+ struct pixel_gamma_point *coeff128_oem = NULL; -+ struct pixel_gamma_point *coeff128 = NULL; -+ -+ -+ bool ret = false; -+ -+ coordinates_x = dm_alloc(sizeof(*coordinates_x)*(256 + 3)); -+ if (!coordinates_x) -+ goto coordinates_x_alloc_fail; -+ rgb_user = dm_alloc(sizeof(*rgb_user) * (FLOAT_GAMMA_RAMP_MAX + 3)); -+ if (!rgb_user) -+ goto rgb_user_alloc_fail; -+ rgb_regamma = dm_alloc(sizeof(*rgb_regamma) * (256 + 3)); -+ if (!rgb_regamma) -+ goto rgb_regamma_alloc_fail; -+ rgb_oem = dm_alloc(sizeof(*rgb_oem) * (FLOAT_GAMMA_RAMP_MAX + 3)); -+ if (!rgb_oem) -+ goto rgb_oem_alloc_fail; -+ axix_x_256 = dm_alloc(sizeof(*axix_x_256) * 256); -+ if (!axix_x_256) -+ goto axix_x_256_alloc_fail; -+ coeff128_oem = dm_alloc(sizeof(*coeff128_oem) * (256 + 3)); -+ if (!coeff128_oem) -+ goto coeff128_oem_alloc_fail; -+ coeff128 = dm_alloc(sizeof(*coeff128) * (256 + 3)); -+ if (!coeff128) -+ goto coeff128_alloc_fail; - - dividers.divider1 = dal_fixed31_32_from_fraction(3, 2); - dividers.divider2 = dal_fixed31_32_from_int(2); -@@ -1334,5 +1359,24 @@ void calculate_regamma_params(struct pwl_params *params, - - convert_to_custom_float(rgb_resulted, arr_points, - params->hw_points_num); -+ -+ ret = true; -+ -+ dm_free(coeff128); -+coeff128_alloc_fail: -+ dm_free(coeff128_oem); -+coeff128_oem_alloc_fail: -+ dm_free(axix_x_256); -+axix_x_256_alloc_fail: -+ dm_free(rgb_oem); -+rgb_oem_alloc_fail: -+ dm_free(rgb_regamma); -+rgb_regamma_alloc_fail: -+ dm_free(rgb_user); -+rgb_user_alloc_fail: -+ dm_free(coordinates_x); -+coordinates_x_alloc_fail: -+ return ret; -+ - } - -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 80faa98..fae2f8a 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 -@@ -512,7 +512,6 @@ static bool set_gamma_ramp( - { - struct ipp_prescale_params *prescale_params; - struct pwl_params *regamma_params; -- struct temp_params *temp_params; - bool result = false; - - prescale_params = dm_alloc(sizeof(struct ipp_prescale_params)); -@@ -524,11 +523,6 @@ static bool set_gamma_ramp( - if (regamma_params == NULL) - goto regamma_alloc_fail; - -- temp_params = dm_alloc(sizeof(struct temp_params)); -- -- if (temp_params == NULL) -- goto temp_alloc_fail; -- - regamma_params->hw_points_num = GAMMA_HW_POINTS_NUM; - - opp->funcs->opp_power_on_regamma_lut(opp, true); -@@ -538,9 +532,8 @@ static bool set_gamma_ramp( - ipp->funcs->ipp_program_prescale(ipp, prescale_params); - } - -- if (ramp) { -- calculate_regamma_params(regamma_params, -- temp_params, ramp, surface); -+ if (ramp && calculate_regamma_params(regamma_params, ramp, surface)) { -+ - opp->funcs->opp_program_regamma_pwl(opp, regamma_params); - if (ipp) - ipp->funcs->ipp_set_degamma(ipp, IPP_DEGAMMA_MODE_HW_sRGB); -@@ -553,12 +546,10 @@ static bool set_gamma_ramp( - - opp->funcs->opp_power_on_regamma_lut(opp, false); - -- dm_free(temp_params); -- - result = true; - --temp_alloc_fail: - dm_free(regamma_params); -+ - regamma_alloc_fail: - dm_free(prescale_params); - prescale_alloc_fail: -diff --git a/drivers/gpu/drm/amd/dal/dc/inc/gamma_calcs.h b/drivers/gpu/drm/amd/dal/dc/inc/gamma_calcs.h -index baab77a..2064f28 100644 ---- a/drivers/gpu/drm/amd/dal/dc/inc/gamma_calcs.h -+++ b/drivers/gpu/drm/amd/dal/dc/inc/gamma_calcs.h -@@ -12,19 +12,7 @@ - #include "core_types.h" - #include "dc.h" - --struct temp_params { -- struct hw_x_point coordinates_x[256 + 3]; -- struct pwl_float_data rgb_user[FLOAT_GAMMA_RAMP_MAX + 3]; -- struct pwl_float_data_ex rgb_regamma[256 + 3]; -- struct pwl_float_data rgb_oem[FLOAT_GAMMA_RAMP_MAX + 3]; -- struct gamma_pixel axix_x_256[256]; -- struct pixel_gamma_point coeff128_oem[256 + 3]; -- struct pixel_gamma_point coeff128[256 + 3]; -- --}; -- --void calculate_regamma_params(struct pwl_params *params, -- struct temp_params *temp_params, -+bool calculate_regamma_params(struct pwl_params *params, - const struct core_gamma *ramp, - const struct core_surface *surface); - --- -2.7.4 - |