Commit 65111f25 authored by Bhawanpreet Lakha's avatar Bhawanpreet Lakha Committed by Alex Deucher

drm/amd/display: change dcn_ip and dcn_soc into pointers

-Change dcn_ip into pointer
-Change dcn_soc into pointer

This is needed for flattening of core_dc into dc, as without
this the diags build fails
Signed-off-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent e771aae0
...@@ -440,6 +440,13 @@ static void destruct(struct core_dc *dc) ...@@ -440,6 +440,13 @@ static void destruct(struct core_dc *dc)
dm_free(dc->bw_dceip); dm_free(dc->bw_dceip);
dc->bw_dceip = NULL; dc->bw_dceip = NULL;
#ifdef CONFIG_DRM_AMD_DC_DCN1_0
dm_free(dc->dcn_soc);
dc->dcn_soc = NULL;
dm_free(dc->dcn_ip);
dc->dcn_ip = NULL;
#endif
} }
static bool construct(struct core_dc *dc, static bool construct(struct core_dc *dc,
...@@ -449,33 +456,52 @@ static bool construct(struct core_dc *dc, ...@@ -449,33 +456,52 @@ static bool construct(struct core_dc *dc,
struct dc_context *dc_ctx = dm_alloc(sizeof(*dc_ctx)); struct dc_context *dc_ctx = dm_alloc(sizeof(*dc_ctx));
struct bw_calcs_dceip *dc_dceip = dm_alloc(sizeof(*dc_dceip)); struct bw_calcs_dceip *dc_dceip = dm_alloc(sizeof(*dc_dceip));
struct bw_calcs_vbios *dc_vbios = dm_alloc(sizeof(*dc_vbios)); struct bw_calcs_vbios *dc_vbios = dm_alloc(sizeof(*dc_vbios));
#ifdef CONFIG_DRM_AMD_DC_DCN1_0
struct dcn_soc_bounding_box *dcn_soc = dm_alloc(sizeof(*dcn_soc));
struct dcn_ip_params *dcn_ip = dm_alloc(sizeof(*dcn_ip));
#endif
enum dce_version dc_version = DCE_VERSION_UNKNOWN; enum dce_version dc_version = DCE_VERSION_UNKNOWN;
if (!dc_dceip) { if (!dc_dceip) {
dm_error("%s: failed to create dceip\n", __func__); dm_error("%s: failed to create dceip\n", __func__);
goto dceip_fail; goto fail;
} }
dc->bw_dceip = dc_dceip; dc->bw_dceip = dc_dceip;
if (!dc_vbios) { if (!dc_vbios) {
dm_error("%s: failed to create vbios\n", __func__); dm_error("%s: failed to create vbios\n", __func__);
goto vbios_fail; goto fail;
} }
dc->bw_vbios = dc_vbios; dc->bw_vbios = dc_vbios;
#ifdef CONFIG_DRM_AMD_DC_DCN1_0
if (!dcn_soc) {
dm_error("%s: failed to create dcn_soc\n", __func__);
goto fail;
}
dc->dcn_soc = dcn_soc;
if (!dcn_ip) {
dm_error("%s: failed to create dcn_ip\n", __func__);
goto fail;
}
dc->dcn_ip = dcn_ip;
#endif
if (!dc_ctx) { if (!dc_ctx) {
dm_error("%s: failed to create ctx\n", __func__); dm_error("%s: failed to create ctx\n", __func__);
goto ctx_fail; goto fail;
} }
dc->current_context = dm_alloc(sizeof(*dc->current_context)); dc->current_context = dm_alloc(sizeof(*dc->current_context));
if (!dc->current_context) { if (!dc->current_context) {
dm_error("%s: failed to create validate ctx\n", __func__); dm_error("%s: failed to create validate ctx\n", __func__);
goto val_ctx_fail; goto fail;
} }
atomic_inc(&dc->current_context->ref_count); atomic_inc(&dc->current_context->ref_count);
...@@ -491,7 +517,7 @@ static bool construct(struct core_dc *dc, ...@@ -491,7 +517,7 @@ static bool construct(struct core_dc *dc,
if (!logger) { if (!logger) {
/* can *not* call logger. call base driver 'print error' */ /* can *not* call logger. call base driver 'print error' */
dm_error("%s: failed to create Logger!\n", __func__); dm_error("%s: failed to create Logger!\n", __func__);
goto logger_fail; goto fail;
} }
dc_ctx->logger = logger; dc_ctx->logger = logger;
dc->ctx = dc_ctx; dc->ctx = dc_ctx;
...@@ -519,7 +545,7 @@ static bool construct(struct core_dc *dc, ...@@ -519,7 +545,7 @@ static bool construct(struct core_dc *dc,
if (!dc_ctx->dc_bios) { if (!dc_ctx->dc_bios) {
ASSERT_CRITICAL(false); ASSERT_CRITICAL(false);
goto bios_fail; goto fail;
} }
dc_ctx->created_bios = true; dc_ctx->created_bios = true;
...@@ -530,7 +556,7 @@ static bool construct(struct core_dc *dc, ...@@ -530,7 +556,7 @@ static bool construct(struct core_dc *dc,
if (!dc_ctx->i2caux) { if (!dc_ctx->i2caux) {
ASSERT_CRITICAL(false); ASSERT_CRITICAL(false);
goto failed_to_create_i2caux; goto fail;
} }
/* Create GPIO service */ /* Create GPIO service */
...@@ -541,7 +567,7 @@ static bool construct(struct core_dc *dc, ...@@ -541,7 +567,7 @@ static bool construct(struct core_dc *dc,
if (!dc_ctx->gpio_service) { if (!dc_ctx->gpio_service) {
ASSERT_CRITICAL(false); ASSERT_CRITICAL(false);
goto gpio_fail; goto fail;
} }
dc->res_pool = dc_create_resource_pool( dc->res_pool = dc_create_resource_pool(
...@@ -550,26 +576,17 @@ static bool construct(struct core_dc *dc, ...@@ -550,26 +576,17 @@ static bool construct(struct core_dc *dc,
dc_version, dc_version,
init_params->asic_id); init_params->asic_id);
if (!dc->res_pool) if (!dc->res_pool)
goto create_resource_fail; goto fail;
if (!create_links(dc, init_params->num_virtual_links)) if (!create_links(dc, init_params->num_virtual_links))
goto create_links_fail; goto fail;
allocate_dc_stream_funcs(dc); allocate_dc_stream_funcs(dc);
return true; return true;
/**** error handling here ****/ fail:
create_links_fail:
create_resource_fail:
gpio_fail:
failed_to_create_i2caux:
bios_fail:
logger_fail:
val_ctx_fail:
ctx_fail:
dceip_fail:
vbios_fail:
destruct(dc); destruct(dc);
return false; return false;
} }
......
...@@ -1322,28 +1322,28 @@ static bool construct( ...@@ -1322,28 +1322,28 @@ static bool construct(
} }
dml_init_instance(&dc->dml, DML_PROJECT_RAVEN1); dml_init_instance(&dc->dml, DML_PROJECT_RAVEN1);
dc->dcn_ip = dcn10_ip_defaults; memcpy(dc->dcn_ip, &dcn10_ip_defaults, sizeof(dcn10_ip_defaults));
dc->dcn_soc = dcn10_soc_defaults; memcpy(dc->dcn_soc, &dcn10_soc_defaults, sizeof(dcn10_soc_defaults));
if (ASICREV_IS_RV1_F0(dc->ctx->asic_id.hw_internal_rev)) { if (ASICREV_IS_RV1_F0(dc->ctx->asic_id.hw_internal_rev)) {
dc->dcn_soc.urgent_latency = 3; dc->dcn_soc->urgent_latency = 3;
dc->public.debug.disable_dmcu = true; dc->public.debug.disable_dmcu = true;
dc->dcn_soc.fabric_and_dram_bandwidth_vmax0p9 = 41.60f; dc->dcn_soc->fabric_and_dram_bandwidth_vmax0p9 = 41.60f;
} }
dc->dcn_soc.number_of_channels = dc->ctx->asic_id.vram_width / ddr4_dram_width; dc->dcn_soc->number_of_channels = dc->ctx->asic_id.vram_width / ddr4_dram_width;
ASSERT(dc->dcn_soc.number_of_channels < 3); ASSERT(dc->dcn_soc->number_of_channels < 3);
if (dc->dcn_soc.number_of_channels == 0)/*old sbios bug*/ if (dc->dcn_soc->number_of_channels == 0)/*old sbios bug*/
dc->dcn_soc.number_of_channels = 2; dc->dcn_soc->number_of_channels = 2;
if (dc->dcn_soc.number_of_channels == 1) { if (dc->dcn_soc->number_of_channels == 1) {
dc->dcn_soc.fabric_and_dram_bandwidth_vmax0p9 = 19.2f; dc->dcn_soc->fabric_and_dram_bandwidth_vmax0p9 = 19.2f;
dc->dcn_soc.fabric_and_dram_bandwidth_vnom0p8 = 17.066f; dc->dcn_soc->fabric_and_dram_bandwidth_vnom0p8 = 17.066f;
dc->dcn_soc.fabric_and_dram_bandwidth_vmid0p72 = 14.933f; dc->dcn_soc->fabric_and_dram_bandwidth_vmid0p72 = 14.933f;
dc->dcn_soc.fabric_and_dram_bandwidth_vmin0p65 = 12.8f; dc->dcn_soc->fabric_and_dram_bandwidth_vmin0p65 = 12.8f;
if (ASICREV_IS_RV1_F0(dc->ctx->asic_id.hw_internal_rev)) { if (ASICREV_IS_RV1_F0(dc->ctx->asic_id.hw_internal_rev)) {
dc->dcn_soc.fabric_and_dram_bandwidth_vmax0p9 = 20.80f; dc->dcn_soc->fabric_and_dram_bandwidth_vmax0p9 = 20.80f;
} }
} }
......
...@@ -32,8 +32,8 @@ struct core_dc { ...@@ -32,8 +32,8 @@ struct core_dc {
struct bw_calcs_dceip *bw_dceip; struct bw_calcs_dceip *bw_dceip;
struct bw_calcs_vbios *bw_vbios; struct bw_calcs_vbios *bw_vbios;
#ifdef CONFIG_DRM_AMD_DC_DCN1_0 #ifdef CONFIG_DRM_AMD_DC_DCN1_0
struct dcn_soc_bounding_box dcn_soc; struct dcn_soc_bounding_box *dcn_soc;
struct dcn_ip_params dcn_ip; struct dcn_ip_params *dcn_ip;
struct display_mode_lib dml; struct display_mode_lib dml;
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment