aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1788-drm-amd-display-Add-fast_validate-parameter.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1788-drm-amd-display-Add-fast_validate-parameter.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1788-drm-amd-display-Add-fast_validate-parameter.patch213
1 files changed, 213 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1788-drm-amd-display-Add-fast_validate-parameter.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1788-drm-amd-display-Add-fast_validate-parameter.patch
new file mode 100644
index 00000000..d6174bb4
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/1788-drm-amd-display-Add-fast_validate-parameter.patch
@@ -0,0 +1,213 @@
+From 9481af7a5a830bb60415ae2df72f8acffbf186a4 Mon Sep 17 00:00:00 2001
+From: Joshua Aberback <joshua.aberback@amd.com>
+Date: Mon, 1 Apr 2019 15:18:29 -0400
+Subject: [PATCH 1788/2940] drm/amd/display: Add fast_validate parameter
+
+Add a fast_validate parameter in dc_validate_global_state for future use
+
+Change-Id: If7a7ea618ba85bdddc8ee4419cd01e2fae3fda93
+Signed-off-by: Joshua Aberback <joshua.aberback@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet Lakha@amd.com>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +-
+ drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c | 6 ++++--
+ drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 6 ++++--
+ drivers/gpu/drm/amd/display/dc/dc.h | 7 ++++++-
+ drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c | 3 ++-
+ drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c | 3 ++-
+ drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c | 3 ++-
+ drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.h | 3 ++-
+ drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c | 3 ++-
+ drivers/gpu/drm/amd/display/dc/inc/core_types.h | 3 ++-
+ drivers/gpu/drm/amd/display/dc/inc/dcn_calcs.h | 3 ++-
+ 11 files changed, 29 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index 86405f4acc50..b007a3d9b24f 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -6754,7 +6754,7 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
+ if (ret)
+ goto fail;
+
+- if (dc_validate_global_state(dc, dm_state->context) != DC_OK) {
++ if (dc_validate_global_state(dc, dm_state->context, false) != DC_OK) {
+ ret = -EINVAL;
+ goto fail;
+ }
+diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
+index 8843361e842d..d7aece82e4fe 100644
+--- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
++++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c
+@@ -701,7 +701,8 @@ static void hack_bounding_box(struct dcn_bw_internal_vars *v,
+
+ bool dcn_validate_bandwidth(
+ struct dc *dc,
+- struct dc_state *context)
++ struct dc_state *context,
++ bool fast_validate)
+ {
+ const struct resource_pool *pool = dc->res_pool;
+ struct dcn_bw_internal_vars *v = &context->dcn_bw_vars;
+@@ -1013,8 +1014,9 @@ bool dcn_validate_bandwidth(
+ mode_support_and_system_configuration(v);
+ }
+
+- if (v->voltage_level != 5) {
++ if (v->voltage_level != number_of_states_plus_one && !fast_validate) {
+ float bw_consumed = v->total_bandwidth_consumed_gbyte_per_second;
++
+ if (bw_consumed < v->fabric_and_dram_bandwidth_vmin0p65)
+ bw_consumed = v->fabric_and_dram_bandwidth_vmin0p65;
+ else if (bw_consumed < v->fabric_and_dram_bandwidth_vmid0p72)
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+index 79d17b9013b7..eb43ecdc867c 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+@@ -2067,12 +2067,14 @@ void dc_resource_state_construct(
+ * Checks HW resource availability and bandwidth requirement.
+ * @dc: dc struct for this driver
+ * @new_ctx: state to be validated
++ * @fast_validate: set to true if only yes/no to support matters
+ *
+ * Return: DC_OK if the result can be programmed. Otherwise, an error code.
+ */
+ enum dc_status dc_validate_global_state(
+ struct dc *dc,
+- struct dc_state *new_ctx)
++ struct dc_state *new_ctx,
++ bool fast_validate)
+ {
+ enum dc_status result = DC_ERROR_UNEXPECTED;
+ int i, j;
+@@ -2127,7 +2129,7 @@ enum dc_status dc_validate_global_state(
+ result = resource_build_scaling_params_for_context(dc, new_ctx);
+
+ if (result == DC_OK)
+- if (!dc->res_pool->funcs->validate_bandwidth(dc, new_ctx))
++ if (!dc->res_pool->funcs->validate_bandwidth(dc, new_ctx, fast_validate))
+ result = DC_FAIL_BANDWIDTH_VALIDATE;
+
+ return result;
+diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
+index 3c69b8cbb554..df433d2dac5e 100644
+--- a/drivers/gpu/drm/amd/display/dc/dc.h
++++ b/drivers/gpu/drm/amd/display/dc/dc.h
+@@ -675,9 +675,14 @@ enum dc_status dc_validate_plane(struct dc *dc, const struct dc_plane_state *pla
+
+ void get_clock_requirements_for_state(struct dc_state *state, struct AsicStateEx *info);
+
++/*
++ * fast_validate: we return after determining if we can support the new state,
++ * but before we populate the programming info
++ */
+ enum dc_status dc_validate_global_state(
+ struct dc *dc,
+- struct dc_state *new_ctx);
++ struct dc_state *new_ctx,
++ bool fast_validate);
+
+
+ void dc_resource_state_construct(
+diff --git a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
+index f38ea29b3377..e938bf9986d3 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/dce100/dce100_resource.c
+@@ -778,7 +778,8 @@ static enum dc_status build_mapped_resource(
+
+ bool dce100_validate_bandwidth(
+ struct dc *dc,
+- struct dc_state *context)
++ struct dc_state *context,
++ bool fast_validate)
+ {
+ int i;
+ bool at_least_one_pipe = false;
+diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
+index d5ebc4538711..dcd04e9ea76b 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c
+@@ -903,7 +903,8 @@ static enum dc_status build_mapped_resource(
+
+ static bool dce110_validate_bandwidth(
+ struct dc *dc,
+- struct dc_state *context)
++ struct dc_state *context,
++ bool fast_validate)
+ {
+ bool result = false;
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
+index afbc82b87982..a480b15f6885 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c
+@@ -826,7 +826,8 @@ static enum dc_status build_mapped_resource(
+
+ bool dce112_validate_bandwidth(
+ struct dc *dc,
+- struct dc_state *context)
++ struct dc_state *context,
++ bool fast_validate)
+ {
+ bool result = false;
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.h b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.h
+index 95a403396219..1f57ebc6f9b4 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.h
++++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.h
+@@ -44,7 +44,8 @@ enum dc_status dce112_validate_with_context(
+
+ bool dce112_validate_bandwidth(
+ struct dc *dc,
+- struct dc_state *context);
++ struct dc_state *context,
++ bool fast_validate);
+
+ enum dc_status dce112_add_stream_to_ctx(
+ struct dc *dc,
+diff --git a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
+index 9569f3af12a3..27d0cc394963 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c
+@@ -812,7 +812,8 @@ static void destruct(struct dce110_resource_pool *pool)
+
+ bool dce80_validate_bandwidth(
+ struct dc *dc,
+- struct dc_state *context)
++ struct dc_state *context,
++ bool fast_validate)
+ {
+ int i;
+ bool at_least_one_pipe = false;
+diff --git a/drivers/gpu/drm/amd/display/dc/inc/core_types.h b/drivers/gpu/drm/amd/display/dc/inc/core_types.h
+index 69fd902da086..51e29a0f111d 100644
+--- a/drivers/gpu/drm/amd/display/dc/inc/core_types.h
++++ b/drivers/gpu/drm/amd/display/dc/inc/core_types.h
+@@ -97,7 +97,8 @@ struct resource_funcs {
+ const struct encoder_init_data *init);
+ bool (*validate_bandwidth)(
+ struct dc *dc,
+- struct dc_state *context);
++ struct dc_state *context,
++ bool fast_validate);
+
+ enum dc_status (*validate_global)(
+ struct dc *dc,
+diff --git a/drivers/gpu/drm/amd/display/dc/inc/dcn_calcs.h b/drivers/gpu/drm/amd/display/dc/inc/dcn_calcs.h
+index 86ec3f69c765..263c09630c06 100644
+--- a/drivers/gpu/drm/amd/display/dc/inc/dcn_calcs.h
++++ b/drivers/gpu/drm/amd/display/dc/inc/dcn_calcs.h
+@@ -621,7 +621,8 @@ extern const struct dcn_ip_params dcn10_ip_defaults;
+
+ bool dcn_validate_bandwidth(
+ struct dc *dc,
+- struct dc_state *context);
++ struct dc_state *context,
++ bool fast_validate);
+
+ unsigned int dcn_find_dcfclk_suits_all(
+ const struct dc *dc,
+--
+2.17.1
+