[PATCH 23/76] drm/amd/dal: remove dal_adapter_service_get_integrated_info
Harry Wentland
harry.wentland at amd.com
Mon Nov 21 23:00:43 UTC 2016
From: Tony Cheng <tony.cheng at amd.com>
- cache integrated_info in bios.
- fix dGPU crash as dGPU does not have integrated_info
Signed-off-by: Tony Cheng <tony.cheng at amd.com>
Acked-by: Harry Wentland <harry.wentland at amd.com>
---
.../gpu/drm/amd/dal/dc/adapter/adapter_service.c | 32 ++++------------------
drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c | 24 ++++------------
drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 6 ++--
drivers/gpu/drm/amd/dal/dc/dc_bios_types.h | 7 -----
.../amd/dal/dc/gpu/dce110/display_clock_dce110.c | 6 ++--
.../drm/amd/dal/dc/gpu/dce80/display_clock_dce80.c | 3 +-
.../amd/dal/include/adapter_service_interface.h | 7 -----
7 files changed, 19 insertions(+), 66 deletions(-)
diff --git a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
index 328cc8a41770..f2e633e3ab74 100644
--- a/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
+++ b/drivers/gpu/drm/amd/dal/dc/adapter/adapter_service.c
@@ -599,8 +599,6 @@ static void adapter_service_destruct(
dal_i2caux_destroy(&as->i2caux);
dal_asic_capability_destroy(&as->asic_cap);
-
- dcb->funcs->destroy_integrated_info(dcb, &as->integrated_info);
}
/*
@@ -669,10 +667,6 @@ static bool adapter_service_construct(
goto failed_to_create_i2caux;
}
- /* Integrated info is not provided on discrete ASIC. NULL is allowed */
- if (dcb->funcs->create_integrated_info)
- as->integrated_info = dcb->funcs->create_integrated_info(dcb);
-
dcb->funcs->post_init(dcb, as);
/* Generate backlight translation table and initializes
@@ -881,23 +875,6 @@ bool dal_adapter_service_get_ss_info(
}
/*
- * dal_adapter_service_get_integrated_info
- *
- * Get integrated information on BIOS
- */
-bool dal_adapter_service_get_integrated_info(
- struct adapter_service *as,
- struct integrated_info *info)
-{
- if (info == NULL || as->integrated_info == NULL)
- return false;
-
- memmove(info, as->integrated_info, sizeof(struct integrated_info));
-
- return true;
-}
-
-/*
* dal_adapter_service_is_dfs_bypass_enabled
*
* Check if DFS bypass is enabled
@@ -905,9 +882,11 @@ bool dal_adapter_service_get_integrated_info(
bool dal_adapter_service_is_dfs_bypass_enabled(
struct adapter_service *as)
{
- if (as->integrated_info == NULL)
+ struct dc_bios *bp = as->ctx->dc_bios;
+
+ if (bp->integrated_info == NULL)
return false;
- if ((as->integrated_info->gpu_cap_info & DFS_BYPASS_ENABLE) &&
+ if ((bp->integrated_info->gpu_cap_info & DFS_BYPASS_ENABLE) &&
dal_adapter_service_is_feature_supported(as,
FEATURE_ENABLE_DFS_BYPASS))
return true;
@@ -1031,6 +1010,7 @@ bool dal_adapter_service_should_optimize(
{
uint32_t supported_optimization = 0;
struct dal_asic_runtime_flags flags;
+ struct dc_bios *bp = as->ctx->dc_bios;
if (!dal_adapter_service_get_feature_value(as, FEATURE_OPTIMIZATION,
&supported_optimization, sizeof(uint32_t)))
@@ -1047,7 +1027,7 @@ bool dal_adapter_service_should_optimize(
break;
case OF_SKIP_RESET_OF_ALL_HW_ON_S3RESUME:
- if (as->integrated_info == NULL ||
+ if (bp->integrated_info == NULL ||
!flags.flags.bits.SKIP_POWER_DOWN_ON_RESUME)
return false;
break;
diff --git a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
index eae92f53694f..41093c21ce30 100644
--- a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
+++ b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
@@ -135,6 +135,9 @@ static void destruct(struct bios_parser *bp)
{
if (bp->base.bios_local_image)
dm_free(bp->base.bios_local_image);
+
+ if (bp->base.integrated_info)
+ dm_free(bp->base.integrated_info);
}
static void bios_parser_destroy(struct dc_bios **dcb)
@@ -4063,21 +4066,6 @@ static struct integrated_info *bios_parser_create_integrated_info(
return NULL;
}
-static void bios_parser_destroy_integrated_info(
- struct dc_bios *dcb,
- struct integrated_info **info)
-{
- if (info == NULL) {
- ASSERT_CRITICAL(0);
- return;
- }
-
- if (*info != NULL) {
- dm_free(*info);
- *info = NULL;
- }
-}
-
/******************************************************************************/
static const struct dc_vbios_funcs vbios_funcs = {
@@ -4156,10 +4144,6 @@ static const struct dc_vbios_funcs vbios_funcs = {
/* SW init and patch */
.post_init = bios_parser_post_init, /* patch vbios table for mxm module by reading i2c */
- .create_integrated_info = bios_parser_create_integrated_info,
-
- .destroy_integrated_info = bios_parser_destroy_integrated_info,
-
.bios_parser_destroy = bios_parser_destroy,
};
@@ -4241,6 +4225,8 @@ static bool bios_parser_construct(
dal_bios_parser_init_cmd_tbl(bp);
dal_bios_parser_init_cmd_tbl_helper(&bp->cmd_helper, dce_version);
+ bp->base.integrated_info = bios_parser_create_integrated_info(&bp->base);
+
return true;
}
diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
index d86817606f39..1eb1089a8288 100644
--- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
@@ -1050,9 +1050,6 @@ static bool construct(
link->public.link_enc_hw_inst = link->link_enc->transmitter;
- /* TODO: refactor dal_adapter_service_get_integrated_info(as, &info); */
- memmove(&info, dc_ctx->dc_bios->integrated_info, sizeof(struct integrated_info));
-
for (i = 0; ; i++) {
if (BP_RESULT_OK !=
bp_funcs->get_device_tag(dc_ctx->dc_bios, link->link_id, i, &link->device_tag)) {
@@ -1077,6 +1074,9 @@ static bool construct(
break;
}
+ if (bios->integrated_info)
+ info = *bios->integrated_info;
+
/* Look for channel mapping corresponding to connector and device tag */
for (i = 0; i < MAX_NUMBER_OF_EXT_DISPLAY_PATH; i++) {
struct external_display_path *path =
diff --git a/drivers/gpu/drm/amd/dal/dc/dc_bios_types.h b/drivers/gpu/drm/amd/dal/dc/dc_bios_types.h
index 7c1f9d817f9c..4771e415e33e 100644
--- a/drivers/gpu/drm/amd/dal/dc/dc_bios_types.h
+++ b/drivers/gpu/drm/amd/dal/dc/dc_bios_types.h
@@ -202,13 +202,6 @@ struct dc_vbios_funcs {
void (*post_init)(struct dc_bios *bios,
struct adapter_service *as);
- struct integrated_info *(*create_integrated_info)(
- struct dc_bios *bios);
-
- void (*destroy_integrated_info)(
- struct dc_bios *dcb,
- struct integrated_info **info);
-
void (*bios_parser_destroy)(struct dc_bios **dcb);
};
diff --git a/drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c b/drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c
index 8b9d984f3bb9..9aa9b8fc927f 100644
--- a/drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c
+++ b/drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c
@@ -675,12 +675,12 @@ static bool display_clock_integrated_info_construct(
struct firmware_info fw_info;
uint32_t i;
struct display_clock *base = &disp_clk->disp_clk_base;
- bool res;
memset(&info, 0, sizeof(struct integrated_info));
memset(&fw_info, 0, sizeof(struct firmware_info));
- res = dal_adapter_service_get_integrated_info(as, &info);
+ if (bp->integrated_info)
+ info = *bp->integrated_info;
disp_clk->dentist_vco_freq_khz = info.dentist_vco_freq;
if (disp_clk->dentist_vco_freq_khz == 0) {
@@ -694,7 +694,7 @@ static bool display_clock_integrated_info_construct(
base->min_display_clk_threshold_khz =
disp_clk->dentist_vco_freq_khz / 64;
- if (!res)
+ if (bp->integrated_info == NULL)
return false;
/*update the maximum display clock for each power state*/
diff --git a/drivers/gpu/drm/amd/dal/dc/gpu/dce80/display_clock_dce80.c b/drivers/gpu/drm/amd/dal/dc/gpu/dce80/display_clock_dce80.c
index b69e40493e27..0741139db8b5 100644
--- a/drivers/gpu/drm/amd/dal/dc/gpu/dce80/display_clock_dce80.c
+++ b/drivers/gpu/drm/amd/dal/dc/gpu/dce80/display_clock_dce80.c
@@ -758,7 +758,8 @@ static bool display_clock_integrated_info_construct(
struct firmware_info fw_info = { { 0 } };
uint32_t i;
- dal_adapter_service_get_integrated_info(as, &info);
+ if (bp->integrated_info)
+ info = *bp->integrated_info;
disp_clk->dentist_vco_freq_khz = info.dentist_vco_freq;
if (disp_clk->dentist_vco_freq_khz == 0) {
diff --git a/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h b/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h
index 9de495532eb1..7b001f0aa9db 100644
--- a/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h
+++ b/drivers/gpu/drm/amd/dal/include/adapter_service_interface.h
@@ -298,7 +298,6 @@ struct adapter_service {
struct asic_capability *asic_cap;
enum dce_environment dce_environment;
struct i2caux *i2caux;
- struct integrated_info *integrated_info;
uint32_t platform_methods_mask;
uint32_t ac_level_percentage;
uint32_t dc_level_percentage;
@@ -356,12 +355,6 @@ bool dal_adapter_service_is_dfs_bypass_enabled(struct adapter_service *as);
uint32_t dal_adapter_service_get_asic_vram_bit_width(
struct adapter_service *as);
-
-/* Get integrated information on BIOS */
-bool dal_adapter_service_get_integrated_info(
- struct adapter_service *as,
- struct integrated_info *info);
-
/* Return if a given feature is supported by the ASIC */
bool dal_adapter_service_is_feature_supported(struct adapter_service *as,
enum adapter_feature_id feature_id);
--
2.10.1
More information about the amd-gfx
mailing list