aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amdfalconx86/recipes-kernel/linux/files/0875-drm-amd-dal-Parse-asic-ID-in-dc-rather-than-AS.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/files/0875-drm-amd-dal-Parse-asic-ID-in-dc-rather-than-AS.patch')
-rw-r--r--meta-amdfalconx86/recipes-kernel/linux/files/0875-drm-amd-dal-Parse-asic-ID-in-dc-rather-than-AS.patch174
1 files changed, 174 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/files/0875-drm-amd-dal-Parse-asic-ID-in-dc-rather-than-AS.patch b/meta-amdfalconx86/recipes-kernel/linux/files/0875-drm-amd-dal-Parse-asic-ID-in-dc-rather-than-AS.patch
new file mode 100644
index 00000000..62384d0b
--- /dev/null
+++ b/meta-amdfalconx86/recipes-kernel/linux/files/0875-drm-amd-dal-Parse-asic-ID-in-dc-rather-than-AS.patch
@@ -0,0 +1,174 @@
+From 5a01917f514b22162da1246cc2de13369f82ca83 Mon Sep 17 00:00:00 2001
+From: Jordan Lazare <Jordan.Lazare@amd.com>
+Date: Wed, 2 Mar 2016 13:44:23 -0500
+Subject: [PATCH 0875/1110] drm/amd/dal: Parse asic ID in dc rather than AS
+
+Signed-off-by: Jordan Lazare <Jordan.Lazare@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/dal/dc/core/dc.c | 25 +++++++++++++----
+ drivers/gpu/drm/amd/dal/dc/core/dc_resource.c | 40 +++++++++++++++++++++++++--
+ drivers/gpu/drm/amd/dal/dc/inc/resource.h | 8 +++++-
+ drivers/gpu/drm/amd/dal/include/dal_types.h | 2 +-
+ 4 files changed, 64 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c b/drivers/gpu/drm/amd/dal/dc/core/dc.c
+index 4a52d43..80339f6 100644
+--- a/drivers/gpu/drm/amd/dal/dc/core/dc.c
++++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c
+@@ -303,6 +303,7 @@ static bool construct(struct core_dc *dc, const struct dc_init_data *init_params
+ struct dal_logger *logger;
+ struct adapter_service *as;
+ struct dc_context *dc_ctx = dm_alloc(sizeof(*dc_ctx));
++ enum dce_version dc_version = DCE_VERSION_UNKNOWN;
+
+ if (!dc_ctx) {
+ dm_error("%s: failed to create ctx\n", __func__);
+@@ -322,7 +323,15 @@ static bool construct(struct core_dc *dc, const struct dc_init_data *init_params
+ goto logger_fail;
+ }
+ dc_ctx->logger = logger;
++ dc->ctx = dc_ctx;
++ dc->ctx->dce_environment = init_params->dce_environment;
++
++
++ resource_parse_asic_id(dc, init_params->asic_id, &dc_version);
+
++
++/* TODO: Refactor DCE code to remove AS and asic caps */
++if (dc_version < DCE_VERSION_MAX) {
+ /* Create adapter service */
+ as = create_as(init_params, dc_ctx);
+
+@@ -340,17 +349,12 @@ static bool construct(struct core_dc *dc, const struct dc_init_data *init_params
+ goto as_fail;
+ }
+
+- dc->ctx = dc_ctx;
+-
+- dc->ctx->dce_environment = dal_adapter_service_get_dce_environment(
+- as);
+-
+ /* Create hardware sequencer */
+ if (!dc_construct_hw_sequencer(as, dc))
+ goto hwss_fail;
+
+ if (!dc_construct_resource_pool(
+- as, dc, init_params->num_virtual_links))
++ as, dc, init_params->num_virtual_links, dc_version))
+ goto construct_resource_fail;
+
+ if (!create_links(dc, as, init_params->num_virtual_links))
+@@ -359,6 +363,15 @@ static bool construct(struct core_dc *dc, const struct dc_init_data *init_params
+ bw_calcs_init(&dc->bw_dceip, &dc->bw_vbios);
+
+ bw_calcs_data_update_from_pplib(dc);
++} else {
++
++ /* Resource should construct all asic specific resources.
++ * This should be the only place where we need to parse the asic id
++ */
++ if (!dc_construct_resource_pool(
++ NULL, dc, init_params->num_virtual_links, dc_version))
++ goto construct_resource_fail;
++}
+
+ return true;
+
+diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_resource.c b/drivers/gpu/drm/amd/dal/dc/core/dc_resource.c
+index 917e6a5..2229699 100644
+--- a/drivers/gpu/drm/amd/dal/dc/core/dc_resource.c
++++ b/drivers/gpu/drm/amd/dal/dc/core/dc_resource.c
+@@ -42,13 +42,47 @@
+ #include "dce110/dce110_resource.h"
+ #endif
+
++bool resource_parse_asic_id(struct core_dc *dc,
++ struct hw_asic_id asic_id,
++ enum dce_version *dc_version)
++{
++ switch (asic_id.chip_family) {
++
++#if defined(CONFIG_DRM_AMD_DAL_DCE8_0)
++ case FAMILY_CI:
++ case FAMILY_KV:
++ *dc_version = DCE_VERSION_8_0;
++ break;
++#endif
++#if defined(CONFIG_DRM_AMD_DAL_DCE11_0)
++ case FAMILY_CZ:
++ *dc_version = DCE_VERSION_11_0;
++ break;
++#endif
++
++ case FAMILY_VI:
++#if defined(CONFIG_DRM_AMD_DAL_DCE10_0)
++ if (ASIC_REV_IS_TONGA_P(asic_id.hw_internal_rev) ||
++ ASIC_REV_IS_FIJI_P(asic_id.hw_internal_rev)) {
++ *dc_version = DCE_VERSION_10_0;
++ break;
++ }
++#endif
++ break;
++ default:
++ *dc_version = DCE_VERSION_UNKNOWN;
++ return false;
++ }
++ return true;
++}
++
+ bool dc_construct_resource_pool(struct adapter_service *adapter_serv,
+ struct core_dc *dc,
+- uint8_t num_virtual_links)
++ uint8_t num_virtual_links,
++ enum dce_version dc_version)
+ {
+- enum dce_version dce_ver = dal_adapter_service_get_dce_version(adapter_serv);
+
+- switch (dce_ver) {
++ switch (dc_version) {
+ #if defined(CONFIG_DRM_AMD_DAL_DCE10_0)
+ case DCE_VERSION_10_0:
+ return dce100_construct_resource_pool(
+diff --git a/drivers/gpu/drm/amd/dal/dc/inc/resource.h b/drivers/gpu/drm/amd/dal/dc/inc/resource.h
+index 0836e41..9aefe9e 100644
+--- a/drivers/gpu/drm/amd/dal/dc/inc/resource.h
++++ b/drivers/gpu/drm/amd/dal/dc/inc/resource.h
+@@ -28,14 +28,20 @@
+ #include "core_types.h"
+ #include "core_status.h"
+ #include "core_dc.h"
++#include "dal_asic_id.h"
+
+ /* TODO unhardcode, 4 for CZ*/
+ #define MEMORY_TYPE_MULTIPLIER 4
+ #define DCE110_UNDERLAY_IDX 3
+
++bool resource_parse_asic_id(struct core_dc *dc,
++ struct hw_asic_id asic_id,
++ enum dce_version *dc_version);
++
+ bool dc_construct_resource_pool(struct adapter_service *adapter_serv,
+ struct core_dc *dc,
+- uint8_t num_virtual_links);
++ uint8_t num_virtual_links,
++ enum dce_version dc_version);
+
+ enum dc_status resource_map_pool_resources(
+ const struct core_dc *dc,
+diff --git a/drivers/gpu/drm/amd/dal/include/dal_types.h b/drivers/gpu/drm/amd/dal/include/dal_types.h
+index eea3306..bcf83e9 100644
+--- a/drivers/gpu/drm/amd/dal/include/dal_types.h
++++ b/drivers/gpu/drm/amd/dal/include/dal_types.h
+@@ -43,7 +43,7 @@ enum dce_version {
+ #if defined(CONFIG_DRM_AMD_DAL_DCE11_0)
+ DCE_VERSION_11_0,
+ #endif
+- DCE_VERSION_MAX
++ DCE_VERSION_MAX,
+ };
+
+ /* Wireless display structs */
+--
+2.7.4
+