diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/files/0864-drm-amd-dal-Create-struct-dc-as-public-version-of-dc.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/files/0864-drm-amd-dal-Create-struct-dc-as-public-version-of-dc.patch | 1212 |
1 files changed, 0 insertions, 1212 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/files/0864-drm-amd-dal-Create-struct-dc-as-public-version-of-dc.patch b/meta-amdfalconx86/recipes-kernel/linux/files/0864-drm-amd-dal-Create-struct-dc-as-public-version-of-dc.patch deleted file mode 100644 index 7b95d2c3..00000000 --- a/meta-amdfalconx86/recipes-kernel/linux/files/0864-drm-amd-dal-Create-struct-dc-as-public-version-of-dc.patch +++ /dev/null @@ -1,1212 +0,0 @@ -From 43f8163624df6de327571c0d5cd6a4cbd517058c Mon Sep 17 00:00:00 2001 -From: Jun Lei <Jun.Lei@amd.com> -Date: Sat, 27 Feb 2016 16:31:53 -0500 -Subject: [PATCH 0864/1110] drm/amd/dal: Create struct dc as public version of - dc handle rather than forward declare pointer to struct core_dc - -Signed-off-by: Jun Lei <Jun.Lei@amd.com> -Acked-by: Harry Wentland <harry.wentland@amd.com> ---- - drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 17 +- - drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h | 2 +- - .../drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +- - .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 6 +- - drivers/gpu/drm/amd/dal/dc/core/dc.c | 235 +++++++++++---------- - drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 16 +- - drivers/gpu/drm/amd/dal/dc/core/dc_surface.c | 11 +- - drivers/gpu/drm/amd/dal/dc/core/dc_target.c | 19 +- - drivers/gpu/drm/amd/dal/dc/dc.h | 60 +++--- - drivers/gpu/drm/amd/dal/dc/dc_types.h | 3 +- - drivers/gpu/drm/amd/dal/dc/inc/core_dc.h | 4 + - 11 files changed, 205 insertions(+), 170 deletions(-) - -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -index ed2cdc5..2f2077e1 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -@@ -162,7 +162,7 @@ static void dm_pflip_high_irq(void *interrupt_params) - struct common_irq_params *irq_params = interrupt_params; - struct amdgpu_device *adev = irq_params->adev; - unsigned long flags; -- const struct core_dc *dc = irq_params->adev->dm.dc; -+ const struct dc *dc = irq_params->adev->dm.dc; - const struct dc_target *dc_target = - dc_get_target_on_irq_source(dc, irq_params->irq_src); - -@@ -204,7 +204,7 @@ static void dm_crtc_high_irq(void *interrupt_params) - { - struct common_irq_params *irq_params = interrupt_params; - struct amdgpu_device *adev = irq_params->adev; -- const struct core_dc *dc = irq_params->adev->dm.dc; -+ const struct dc *dc = irq_params->adev->dm.dc; - const struct dc_target *dc_target = - dc_get_target_on_irq_source(dc, irq_params->irq_src); - uint8_t crtc_index = 0; -@@ -759,14 +759,11 @@ static void register_hpd_handlers(struct amdgpu_device *adev) - /* Register IRQ sources and initialize IRQ callbacks */ - static int dce110_register_irq_handlers(struct amdgpu_device *adev) - { -- struct core_dc *dc = adev->dm.dc; -+ struct dc *dc = adev->dm.dc; - struct common_irq_params *c_irq_params; - struct dc_interrupt_params int_params = {0}; - int r; - int i; -- struct dc_caps caps = { 0 }; -- -- dc_get_caps(dc, &caps); - - int_params.requested_polarity = INTERRUPT_POLARITY_DEFAULT; - int_params.current_polarity = INTERRUPT_POLARITY_DEFAULT; -@@ -928,18 +925,16 @@ int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev) - struct amdgpu_connector *aconnector; - struct amdgpu_encoder *aencoder; - struct amdgpu_crtc *acrtc; -- struct dc_caps caps = { 0 }; - uint32_t link_cnt; - -- dc_get_caps(dm->dc, &caps); -- link_cnt = caps.max_links; -+ link_cnt = dm->dc->caps.max_links; - - if (amdgpu_dm_mode_config_init(dm->adev)) { - DRM_ERROR("DM: Failed to initialize mode config\n"); - return -1; - } - -- for (i = 0; i < caps.max_targets; i++) { -+ for (i = 0; i < dm->dc->caps.max_targets; i++) { - acrtc = kzalloc(sizeof(struct amdgpu_crtc), GFP_KERNEL); - if (!acrtc) - goto fail; -@@ -954,7 +949,7 @@ int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev) - } - } - -- dm->display_indexes_num = caps.max_targets; -+ dm->display_indexes_num = dm->dc->caps.max_targets; - - /* loops over all connectors on the board */ - for (i = 0; i < link_cnt; i++) { -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h -index 4f3bf97..94c20d5 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h -@@ -74,7 +74,7 @@ struct irq_list_head { - - struct amdgpu_display_manager { - struct dal *dal; -- struct core_dc *dc; -+ struct dc *dc; - void *cgs_device; - /* lock to be used when DAL is called from SYNC IRQ context */ - spinlock_t dal_lock; -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c -index ed0b9d7..2ab2703 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c -@@ -80,7 +80,7 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg - struct pci_dev *pdev = to_pci_dev(aux->dev); - struct drm_device *drm_dev = pci_get_drvdata(pdev); - struct amdgpu_device *adev = drm_dev->dev_private; -- struct core_dc *dc = adev->dm.dc; -+ struct dc *dc = adev->dm.dc; - bool res; - - switch (msg->request) { -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -index 1c767f3..a8a2e10 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -@@ -622,7 +622,7 @@ static void calculate_stream_scaling_settings( - } - - static void dm_dc_surface_commit( -- struct core_dc *dc, -+ struct dc *dc, - struct drm_crtc *crtc, - struct dm_connector_state *dm_state) - { -@@ -1873,7 +1873,7 @@ int amdgpu_dm_connector_init( - { - int res = 0; - int connector_type; -- struct core_dc *dc = dm->dc; -+ struct dc *dc = dm->dc; - const struct dc_link *link = dc_get_link_at_index(dc, link_index); - struct amdgpu_i2c_adapter *i2c; - -@@ -2488,7 +2488,7 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, - struct dc_validation_set set[MAX_TARGET_NUM] = {{ 0 }}; - struct dc_target *new_targets[MAX_TARGET_NUM] = { 0 }; - struct amdgpu_device *adev = dev->dev_private; -- struct core_dc *dc = adev->dm.dc; -+ struct dc *dc = adev->dm.dc; - bool need_to_validate = false; - - ret = drm_atomic_helper_check(dev, state); -diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c b/drivers/gpu/drm/amd/dal/dc/core/dc.c -index 9ae1bc7..339c82f 100644 ---- a/drivers/gpu/drm/amd/dal/dc/core/dc.c -+++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c -@@ -304,7 +304,6 @@ static bool construct(struct core_dc *dc, const struct dc_init_data *init_params - struct adapter_service *as; - struct dc_context *dc_ctx = dm_alloc(sizeof(*dc_ctx)); - -- - if (!dc_ctx) { - dm_error("%s: failed to create ctx\n", __func__); - goto ctx_fail; -@@ -312,7 +311,7 @@ static bool construct(struct core_dc *dc, const struct dc_init_data *init_params - - dc_ctx->cgs_device = init_params->cgs_device; - dc_ctx->driver_context = init_params->driver; -- dc_ctx->dc = dc; -+ dc_ctx->dc = &dc->public; - - /* Create logger */ - logger = dal_logger_create(dc_ctx); -@@ -409,7 +408,8 @@ void ProgramPixelDurationV(unsigned int pixelClockInKHz ) - */ - static int8_t acquire_first_free_underlay( - struct resource_context *res_ctx, -- struct core_stream *stream) -+ struct core_stream *stream, -+ struct core_dc* core_dc) - { - if (!res_ctx->pipe_ctx[DCE110_UNDERLAY_IDX].stream) { - struct dc_bios *dcb; -@@ -426,8 +426,8 @@ static int8_t acquire_first_free_underlay( - dcb = dal_adapter_service_get_bios_parser( - res_ctx->pool.adapter_srv); - -- stream->ctx->dc->hwss.enable_display_power_gating( -- stream->ctx->dc->ctx, -+ core_dc->hwss.enable_display_power_gating( -+ core_dc->ctx, - DCE110_UNDERLAY_IDX, - dcb, PIPE_GATING_CONTROL_DISABLE); - -@@ -454,7 +454,7 @@ static int8_t acquire_first_free_underlay( - * Public functions - ******************************************************************************/ - --struct core_dc *dc_create(const struct dc_init_data *init_params) -+struct dc *dc_create(const struct dc_init_data *init_params) - { - struct dc_context ctx = { - .driver_context = init_params->driver, -@@ -465,14 +465,18 @@ struct core_dc *dc_create(const struct dc_init_data *init_params) - if (NULL == dc) - goto alloc_fail; - -- ctx.dc = dc; -+ ctx.dc = &dc->public; - if (false == construct(dc, init_params)) - goto construct_fail; - - /*TODO: separate HW and SW initialization*/ - init_hw(dc); - -- return dc; -+ dc->public.caps.max_targets = dc->res_pool.pipe_count; -+ dc->public.caps.max_links = dc->link_count; -+ dc->public.caps.max_audios = dc->res_pool.audio_count; -+ -+ return &dc->public; - - construct_fail: - dm_free(dc); -@@ -481,18 +485,20 @@ alloc_fail: - return NULL; - } - --void dc_destroy(struct core_dc **dc) -+void dc_destroy(struct dc **dc) - { -- destruct(*dc); -- dm_free(*dc); -+ struct core_dc *core_dc = DC_TO_CORE(*dc); -+ destruct(core_dc); -+ dm_free(core_dc); - *dc = NULL; - } - - bool dc_validate_resources( -- const struct core_dc *dc, -+ const struct dc *dc, - const struct dc_validation_set set[], - uint8_t set_count) - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); - enum dc_status result = DC_ERROR_UNEXPECTED; - struct validate_context *context; - -@@ -500,8 +506,8 @@ bool dc_validate_resources( - if(context == NULL) - goto context_alloc_fail; - -- result = dc->res_pool.funcs->validate_with_context( -- dc, set, set_count, context); -+ result = core_dc->res_pool.funcs->validate_with_context( -+ core_dc, set, set_count, context); - - val_ctx_destruct(context); - dm_free(context); -@@ -512,7 +518,7 @@ context_alloc_fail: - } - - static void program_timing_sync( -- struct dc_context *dc_ctx, -+ struct core_dc *core_dc, - struct validate_context *ctx) - { - uint8_t i; -@@ -552,7 +558,7 @@ static void program_timing_sync( - } - - if(group_size > 1) { -- dc_ctx->dc->hwss.enable_timing_synchronization(dc_ctx, group_size, tg_set); -+ core_dc->hwss.enable_timing_synchronization(core_dc->ctx, group_size, tg_set); - } - } - -@@ -574,12 +580,11 @@ static bool targets_changed( - return false; - } - --static void target_enable_memory_requests(struct dc_target *dc_target) -+static void target_enable_memory_requests(struct dc_target *dc_target, -+ struct resource_context *res_ctx) - { - uint8_t i, j; - struct core_target *target = DC_TARGET_TO_CORE(dc_target); -- struct resource_context *res_ctx = -- &target->ctx->dc->current_context.res_ctx; - - for (i = 0; i < target->public.stream_count; i++) { - for (j = 0; j < MAX_PIPES; j++) { -@@ -597,12 +602,11 @@ static void target_enable_memory_requests(struct dc_target *dc_target) - } - } - --static void target_disable_memory_requests(struct dc_target *dc_target) -+static void target_disable_memory_requests(struct dc_target *dc_target, -+ struct resource_context *res_ctx) - { - uint8_t i, j; - struct core_target *target = DC_TARGET_TO_CORE(dc_target); -- struct resource_context *res_ctx = -- &target->ctx->dc->current_context.res_ctx; - - for (i = 0; i < target->public.stream_count; i++) { - for (j = 0; j < MAX_PIPES; j++) { -@@ -621,19 +625,20 @@ static void target_disable_memory_requests(struct dc_target *dc_target) - } - - bool dc_commit_targets( -- struct core_dc *dc, -+ struct dc *dc, - struct dc_target *targets[], - uint8_t target_count) - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); - enum dc_status result = DC_ERROR_UNEXPECTED; - struct validate_context *context; - struct dc_validation_set set[4]; - uint8_t i; - -- if (false == targets_changed(dc, targets, target_count)) -+ if (false == targets_changed(core_dc, targets, target_count)) - return DC_OK; - -- dal_logger_write(dc->ctx->logger, -+ dal_logger_write(core_dc->ctx->logger, - LOG_MAJOR_INTERFACE_TRACE, - LOG_MINOR_COMPONENT_DC, - "%s: %d targets\n", -@@ -644,7 +649,7 @@ bool dc_commit_targets( - struct dc_target *target = targets[i]; - - dc_target_log(target, -- dc->ctx->logger, -+ core_dc->ctx->logger, - LOG_MAJOR_INTERFACE_TRACE, - LOG_MINOR_COMPONENT_DC); - -@@ -657,46 +662,46 @@ bool dc_commit_targets( - if (context == NULL) - goto context_alloc_fail; - -- result = dc->res_pool.funcs->validate_with_context(dc, set, target_count, context); -+ result = core_dc->res_pool.funcs->validate_with_context(core_dc, set, target_count, context); - if (result != DC_OK){ - BREAK_TO_DEBUGGER(); - val_ctx_destruct(context); - goto fail; - } - -- pplib_apply_safe_state(dc); -+ pplib_apply_safe_state(core_dc); - - if (!dal_adapter_service_is_in_accelerated_mode( -- dc->res_pool.adapter_srv)) { -- dc->hwss.enable_accelerated_mode(dc); -+ core_dc->res_pool.adapter_srv)) { -+ core_dc->hwss.enable_accelerated_mode(core_dc); - } - -- for (i = 0; i < dc->current_context.target_count; i++) { -+ for (i = 0; i < core_dc->current_context.target_count; i++) { - /*TODO: optimize this to happen only when necessary*/ - target_disable_memory_requests( -- &dc->current_context.targets[i]->public); -+ &core_dc->current_context.targets[i]->public, &core_dc->current_context.res_ctx); - } - - if (result == DC_OK) { -- dc->hwss.reset_hw_ctx(dc, context); -+ core_dc->hwss.reset_hw_ctx(core_dc, context); - - if (context->target_count > 0) -- result = dc->hwss.apply_ctx_to_hw(dc, context); -+ result = core_dc->hwss.apply_ctx_to_hw(core_dc, context); - } - - for (i = 0; i < context->target_count; i++) { - struct dc_target *dc_target = &context->targets[i]->public; - if (context->target_status[i].surface_count > 0) -- target_enable_memory_requests(dc_target); -+ target_enable_memory_requests(dc_target, &core_dc->current_context.res_ctx); - } - -- program_timing_sync(dc->ctx, context); -+ program_timing_sync(core_dc, context); - -- pplib_apply_display_requirements(dc, context, &context->pp_display_cfg); -+ pplib_apply_display_requirements(core_dc, context, &context->pp_display_cfg); - -- val_ctx_destruct(&dc->current_context); -+ val_ctx_destruct(&core_dc->current_context); - -- dc->current_context = *context; -+ core_dc->current_context = *context; - - fail: - dm_free(context); -@@ -706,14 +711,16 @@ context_alloc_fail: - } - - bool dc_commit_surfaces_to_target( -- struct core_dc *dc, -+ struct dc *dc, - struct dc_surface *new_surfaces[], - uint8_t new_surface_count, - struct dc_target *dc_target) - - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ - int i, j; -- uint32_t prev_disp_clk = dc->current_context.bw_results.dispclk_khz; -+ uint32_t prev_disp_clk = core_dc->current_context.bw_results.dispclk_khz; - struct core_target *target = DC_TARGET_TO_CORE(dc_target); - struct dc_target_status *target_status = NULL; - struct validate_context *context; -@@ -723,7 +730,7 @@ bool dc_commit_surfaces_to_target( - - context = dm_alloc(sizeof(struct validate_context)); - -- val_ctx_copy_construct(&dc->current_context, context); -+ val_ctx_copy_construct(&core_dc->current_context, context); - - /* Cannot commit surface to a target that is not commited */ - for (i = 0; i < context->target_count; i++) -@@ -733,7 +740,7 @@ bool dc_commit_surfaces_to_target( - target_status = &context->target_status[i]; - - if (!dal_adapter_service_is_in_accelerated_mode( -- dc->res_pool.adapter_srv) -+ core_dc->res_pool.adapter_srv) - || i == context->target_count) { - BREAK_TO_DEBUGGER(); - goto unexpected_fail; -@@ -750,14 +757,14 @@ bool dc_commit_surfaces_to_target( - /* TODO unhack mpo */ - if (new_surface_count == 2 && target_status->surface_count < 2) { - acquire_first_free_underlay(&context->res_ctx, -- DC_STREAM_TO_CORE(dc_target->streams[0])); -+ DC_STREAM_TO_CORE(dc_target->streams[0]), core_dc); - is_mpo_turning_on = true; - } else if (new_surface_count < 2 && target_status->surface_count == 2) { - context->res_ctx.pipe_ctx[DCE110_UNDERLAY_IDX].stream = NULL; - context->res_ctx.pipe_ctx[DCE110_UNDERLAY_IDX].surface = NULL; - } - -- dal_logger_write(dc->ctx->logger, -+ dal_logger_write(core_dc->ctx->logger, - LOG_MAJOR_INTERFACE_TRACE, - LOG_MINOR_COMPONENT_DC, - "%s: commit %d surfaces to target 0x%x\n", -@@ -782,7 +789,7 @@ bool dc_commit_surfaces_to_target( - new_surfaces[i], &context->res_ctx.pipe_ctx[j]); - } - -- if (dc->res_pool.funcs->validate_bandwidth(dc, context) != DC_OK) { -+ if (core_dc->res_pool.funcs->validate_bandwidth(core_dc, context) != DC_OK) { - BREAK_TO_DEBUGGER(); - goto unexpected_fail; - } -@@ -790,13 +797,13 @@ bool dc_commit_surfaces_to_target( - if (prev_disp_clk < context->bw_results.dispclk_khz || - (is_mpo_turning_on && - prev_disp_clk == context->bw_results.dispclk_khz)) { -- dc->hwss.program_bw(dc, context); -- pplib_apply_display_requirements(dc, context, -+ core_dc->hwss.program_bw(core_dc, context); -+ pplib_apply_display_requirements(core_dc, context, - &context->pp_display_cfg); - } - - if (current_enabled_surface_count > 0 && new_enabled_surface_count == 0) -- target_disable_memory_requests(dc_target); -+ target_disable_memory_requests(dc_target, &core_dc->current_context.res_ctx); - - for (i = 0; i < new_surface_count; i++) - for (j = 0; j < MAX_PIPES; j++) { -@@ -811,7 +818,7 @@ bool dc_commit_surfaces_to_target( - DC_SURFACE_TO_CORE(new_surfaces[i])) - continue; - -- dal_logger_write(dc->ctx->logger, -+ dal_logger_write(core_dc->ctx->logger, - LOG_MAJOR_INTERFACE_TRACE, - LOG_MINOR_COMPONENT_DC, - "Pipe:%d 0x%x: src: %d, %d, %d," -@@ -831,26 +838,26 @@ bool dc_commit_surfaces_to_target( - gamma = DC_GAMMA_TO_CORE( - surface->public.gamma_correction); - -- dc->hwss.set_gamma_correction( -+ core_dc->hwss.set_gamma_correction( - pipe_ctx->ipp, - pipe_ctx->opp, - gamma, surface); - -- dc->hwss.set_plane_config( -- dc, pipe_ctx, &context->res_ctx); -+ core_dc->hwss.set_plane_config( -+ core_dc, pipe_ctx, &context->res_ctx); - } - -- dc->hwss.update_plane_addrs(dc, &context->res_ctx); -+ core_dc->hwss.update_plane_addrs(core_dc, &context->res_ctx); - - /* Lower display clock if necessary */ - if (prev_disp_clk > context->bw_results.dispclk_khz) { -- dc->hwss.program_bw(dc, context); -- pplib_apply_display_requirements(dc, context, -+ core_dc->hwss.program_bw(core_dc, context); -+ pplib_apply_display_requirements(core_dc, context, - &context->pp_display_cfg); - } - -- val_ctx_destruct(&dc->current_context); -- dc->current_context = *context; -+ val_ctx_destruct(&(core_dc->current_context)); -+ core_dc->current_context = *context; - dm_free(context); - return true; - -@@ -862,59 +869,61 @@ unexpected_fail: - return false; - } - --uint8_t dc_get_current_target_count(const struct core_dc *dc) -+uint8_t dc_get_current_target_count(const struct dc *dc) - { -- return dc->current_context.target_count; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ return core_dc->current_context.target_count; - } - --struct dc_target *dc_get_target_at_index(const struct core_dc *dc, uint8_t i) -+struct dc_target *dc_get_target_at_index(const struct dc *dc, uint8_t i) - { -- if (i < dc->current_context.target_count) -- return &dc->current_context.targets[i]->public; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ if (i < core_dc->current_context.target_count) -+ return &(core_dc->current_context.targets[i]->public); - return NULL; - } - --const struct dc_link *dc_get_link_at_index(struct core_dc *dc, uint32_t link_index) -+const struct dc_link *dc_get_link_at_index(struct dc *dc, uint32_t link_index) - { -- return &dc->links[link_index]->public; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ return &core_dc->links[link_index]->public; - } - - const struct graphics_object_id dc_get_link_id_at_index( -- struct core_dc *dc, uint32_t link_index) -+ struct dc *dc, uint32_t link_index) - { -- return dc->links[link_index]->link_id; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ return core_dc->links[link_index]->link_id; - } - - const struct ddc_service *dc_get_ddc_at_index( -- struct core_dc *dc, uint32_t link_index) -+ struct dc *dc, uint32_t link_index) - { -- return dc->links[link_index]->ddc; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ return core_dc->links[link_index]->ddc; - } - - const enum dc_irq_source dc_get_hpd_irq_source_at_index( -- struct core_dc *dc, uint32_t link_index) -+ struct dc *dc, uint32_t link_index) - { -- return dc->links[link_index]->public.irq_source_hpd; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ return core_dc->links[link_index]->public.irq_source_hpd; - } - --const struct audio **dc_get_audios(struct core_dc *dc) -+const struct audio **dc_get_audios(struct dc *dc) - { -- return (const struct audio **)dc->res_pool.audios; --} -- --void dc_get_caps(const struct core_dc *dc, struct dc_caps *caps) --{ -- caps->max_targets = dc->res_pool.pipe_count; -- caps->max_links = dc->link_count; -- caps->max_audios = dc->res_pool.audio_count; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ return (const struct audio **)core_dc->res_pool.audios; - } - - void dc_flip_surface_addrs( -- struct core_dc *dc, -+ struct dc *dc, - const struct dc_surface *const surfaces[], - struct dc_flip_addrs flip_addrs[], - uint32_t count) - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ - uint8_t i; - for (i = 0; i < count; i++) { - struct core_surface *surface = DC_SURFACE_TO_CORE(surfaces[i]); -@@ -925,31 +934,36 @@ void dc_flip_surface_addrs( - surface->public.address = flip_addrs[i].address; - surface->public.flip_immediate = flip_addrs[i].flip_immediate; - } -- dc->hwss.update_plane_addrs(dc, &dc->current_context.res_ctx); -+ core_dc->hwss.update_plane_addrs(core_dc, &core_dc->current_context.res_ctx); - } - - enum dc_irq_source dc_interrupt_to_irq_source( -- struct core_dc *dc, -+ struct dc *dc, - uint32_t src_id, - uint32_t ext_id) - { -- return dal_irq_service_to_irq_source(dc->res_pool.irqs, src_id, ext_id); -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ return dal_irq_service_to_irq_source(core_dc->res_pool.irqs, src_id, ext_id); - } - --void dc_interrupt_set(const struct core_dc *dc, enum dc_irq_source src, bool enable) -+void dc_interrupt_set(const struct dc *dc, enum dc_irq_source src, bool enable) - { -- dal_irq_service_set(dc->res_pool.irqs, src, enable); -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ dal_irq_service_set(core_dc->res_pool.irqs, src, enable); - } - --void dc_interrupt_ack(struct core_dc *dc, enum dc_irq_source src) -+void dc_interrupt_ack(struct dc *dc, enum dc_irq_source src) - { -- dal_irq_service_ack(dc->res_pool.irqs, src); -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ dal_irq_service_ack(core_dc->res_pool.irqs, src); - } - - const struct dc_target *dc_get_target_on_irq_source( -- const struct core_dc *dc, -+ const struct dc *dc, - enum dc_irq_source src) - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ - uint8_t i, j; - uint8_t crtc_idx; - -@@ -976,15 +990,15 @@ const struct dc_target *dc_get_target_on_irq_source( - return NULL; - } - -- for (i = 0; i < dc->current_context.target_count; i++) { -- struct core_target *target = dc->current_context.targets[i]; -+ for (i = 0; i < core_dc->current_context.target_count; i++) { -+ struct core_target *target = core_dc->current_context.targets[i]; - struct dc_target *dc_target = &target->public; - - for (j = 0; j < target->public.stream_count; j++) { - const struct core_stream *stream = - DC_STREAM_TO_CORE(dc_target->streams[j]); - -- if (dc->current_context.res_ctx. -+ if (core_dc->current_context.res_ctx. - pipe_ctx[crtc_idx].stream == stream) - return dc_target; - } -@@ -995,44 +1009,49 @@ const struct dc_target *dc_get_target_on_irq_source( - } - - void dc_set_power_state( -- struct core_dc *dc, -+ struct dc *dc, - enum dc_acpi_cm_power_state power_state, - enum dc_video_power_state video_power_state) - { -- dc->previous_power_state = dc->current_power_state; -- dc->current_power_state = video_power_state; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ -+ core_dc->previous_power_state = core_dc->current_power_state; -+ core_dc->current_power_state = video_power_state; - - switch (power_state) { - case DC_ACPI_CM_POWER_STATE_D0: -- init_hw(dc); -+ init_hw(core_dc); - break; - default: - /* NULL means "reset/release all DC targets" */ - dc_commit_targets(dc, NULL, 0); - -- dc->hwss.power_down(dc); -+ core_dc->hwss.power_down(core_dc); - break; - } - - } - --void dc_resume(const struct core_dc *dc) -+void dc_resume(const struct dc *dc) - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ - uint32_t i; - -- for (i = 0; i < dc->link_count; i++) -- core_link_resume(dc->links[i]); -+ for (i = 0; i < core_dc->link_count; i++) -+ core_link_resume(core_dc->links[i]); - } - - bool dc_read_dpcd( -- struct core_dc *dc, -+ struct dc *dc, - uint32_t link_index, - uint32_t address, - uint8_t *data, - uint32_t size) - { -- struct core_link *link = dc->links[link_index]; -+ struct core_dc *core_dc = DC_TO_CORE(dc); - -+ struct core_link *link = core_dc->links[link_index]; - enum ddc_result r = dal_ddc_service_read_dpcd_data( - link->ddc, - address, -@@ -1042,13 +1061,15 @@ bool dc_read_dpcd( - } - - bool dc_write_dpcd( -- struct core_dc *dc, -+ struct dc *dc, - uint32_t link_index, - uint32_t address, - const uint8_t *data, - uint32_t size) - { -- struct core_link *link = dc->links[link_index]; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ -+ struct core_link *link = core_dc->links[link_index]; - - enum ddc_result r = dal_ddc_service_write_dpcd_data( - link->ddc, -@@ -1059,11 +1080,13 @@ bool dc_write_dpcd( - } - - bool dc_submit_i2c( -- struct core_dc *dc, -+ struct dc *dc, - uint32_t link_index, - struct i2c_command *cmd) - { -- struct core_link *link = dc->links[link_index]; -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ -+ struct core_link *link = core_dc->links[link_index]; - struct ddc_service *ddc = link->ddc; - - return dal_i2caux_submit_i2c_command( -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 58c7d43..01c28f2 100644 ---- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c -+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c -@@ -58,11 +58,13 @@ enum { - ******************************************************************************/ - static void destruct(struct core_link *link) - { -+ struct core_dc *core_dc = DC_TO_CORE(link->ctx->dc); -+ - if (link->ddc) - dal_ddc_service_destroy(&link->ddc); - - if(link->link_enc) -- link->ctx->dc->res_pool.funcs->link_enc_destroy(&link->link_enc); -+ core_dc->res_pool.funcs->link_enc_destroy(&link->link_enc); - } - - /* -@@ -988,7 +990,7 @@ static bool construct( - enc_init_data.hpd_source = get_hpd_line(link, as); - enc_init_data.transmitter = - translate_encoder_to_transmitter(enc_init_data.encoder); -- link->link_enc = dc_ctx->dc->res_pool.funcs->link_enc_create( -+ link->link_enc = link->dc->res_pool.funcs->link_enc_create( - &enc_init_data); - - if( link->link_enc == NULL) { -@@ -1049,7 +1051,7 @@ static bool construct( - - return true; - device_tag_fail: -- link->ctx->dc->res_pool.funcs->link_enc_destroy(&link->link_enc); -+ link->dc->res_pool.funcs->link_enc_destroy(&link->link_enc); - link_enc_create_fail: - dal_ddc_service_destroy(&link->ddc); - ddc_create_fail: -@@ -1621,14 +1623,14 @@ static enum dc_status deallocate_mst_payload(struct pipe_ctx *pipe_ctx) - - void core_link_enable_stream(struct pipe_ctx *pipe_ctx) - { -- struct core_dc *dc = pipe_ctx->stream->ctx->dc; -+ struct core_dc *core_dc = DC_TO_CORE(pipe_ctx->stream->ctx->dc); - - if (DC_OK != enable_link(pipe_ctx)) { - BREAK_TO_DEBUGGER(); - return; - } - -- dc->hwss.enable_stream(pipe_ctx); -+ core_dc->hwss.enable_stream(pipe_ctx); - - pipe_ctx->stream->status.link = &pipe_ctx->stream->sink->link->public; - -@@ -1638,13 +1640,13 @@ void core_link_enable_stream(struct pipe_ctx *pipe_ctx) - - void core_link_disable_stream(struct pipe_ctx *pipe_ctx) - { -- struct core_dc *dc = pipe_ctx->stream->ctx->dc; -+ struct core_dc *core_dc = DC_TO_CORE(pipe_ctx->stream->ctx->dc); - - pipe_ctx->stream->status.link = NULL; - if (pipe_ctx->signal == SIGNAL_TYPE_DISPLAY_PORT_MST) - deallocate_mst_payload(pipe_ctx); - -- dc->hwss.disable_stream(pipe_ctx); -+ core_dc->hwss.disable_stream(pipe_ctx); - - pipe_ctx->stream->status.link = NULL; - -diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_surface.c b/drivers/gpu/drm/amd/dal/dc/core/dc_surface.c -index 4a3d18d..5c586ba 100644 ---- a/drivers/gpu/drm/amd/dal/dc/core/dc_surface.c -+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_surface.c -@@ -79,14 +79,16 @@ void enable_surface_flip_reporting(struct dc_surface *dc_surface, - /*register_flip_interrupt(surface);*/ - } - --struct dc_surface *dc_create_surface(const struct core_dc *dc) -+struct dc_surface *dc_create_surface(const struct dc *dc) - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ - struct surface *surface = dm_alloc(sizeof(*surface)); - - if (NULL == surface) - goto alloc_fail; - -- if (false == construct(dc->ctx, surface)) -+ if (false == construct(core_dc->ctx, surface)) - goto construct_fail; - - dc_surface_retain(&surface->protected.public); -@@ -146,14 +148,15 @@ void dc_gamma_release(const struct dc_gamma *dc_gamma) - } - } - --struct dc_gamma *dc_create_gamma(const struct core_dc *dc) -+struct dc_gamma *dc_create_gamma(const struct dc *dc) - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); - struct gamma *gamma = dm_alloc(sizeof(*gamma)); - - if (gamma == NULL) - goto alloc_fail; - -- if (false == construct_gamma(dc->ctx, gamma)) -+ if (false == construct_gamma(core_dc->ctx, gamma)) - goto construct_fail; - - dc_gamma_retain(&gamma->protected.public); -diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_target.c b/drivers/gpu/drm/amd/dal/dc/core/dc_target.c -index c697a5e..44fe442 100644 ---- a/drivers/gpu/drm/amd/dal/dc/core/dc_target.c -+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_target.c -@@ -92,7 +92,7 @@ const struct dc_target_status *dc_target_get_status( - { - uint8_t i; - struct core_target* target = DC_TARGET_TO_CORE(dc_target); -- struct core_dc *dc = target->ctx->dc; -+ struct core_dc *dc = DC_TO_CORE(target->ctx->dc); - - for (i = 0; i < dc->current_context.target_count; i++) - if (target == dc->current_context.targets[i]) -@@ -151,6 +151,7 @@ bool dc_target_set_cursor_attributes( - { - uint8_t i, j; - struct core_target *target; -+ struct core_dc *core_dc; - struct resource_context *res_ctx; - - if (NULL == dc_target) { -@@ -165,7 +166,8 @@ bool dc_target_set_cursor_attributes( - } - - target = DC_TARGET_TO_CORE(dc_target); -- res_ctx = &target->ctx->dc->current_context.res_ctx; -+ core_dc = DC_TO_CORE(target->ctx->dc); -+ res_ctx = &core_dc->current_context.res_ctx; - - for (i = 0; i < target->public.stream_count; i++) { - for (j = 0; j < MAX_PIPES; j++) { -@@ -195,6 +197,7 @@ bool dc_target_set_cursor_position( - { - uint8_t i, j; - struct core_target *target; -+ struct core_dc *core_dc; - struct resource_context *res_ctx; - - if (NULL == dc_target) { -@@ -208,7 +211,8 @@ bool dc_target_set_cursor_position( - } - - target = DC_TARGET_TO_CORE(dc_target); -- res_ctx = &target->ctx->dc->current_context.res_ctx; -+ core_dc = DC_TO_CORE(target->ctx->dc); -+ res_ctx = &core_dc->current_context.res_ctx; - - for (i = 0; i < target->public.stream_count; i++) { - for (j = 0; j < MAX_PIPES; j++) { -@@ -235,8 +239,9 @@ uint32_t dc_target_get_vblank_counter(const struct dc_target *dc_target) - { - uint8_t i, j; - struct core_target *target = DC_TARGET_TO_CORE(dc_target); -+ struct core_dc *core_dc = DC_TO_CORE(target->ctx->dc); - struct resource_context *res_ctx = -- &target->ctx->dc->current_context.res_ctx; -+ &core_dc->current_context.res_ctx; - - for (i = 0; i < target->public.stream_count; i++) { - for (j = 0; j < MAX_PIPES; j++) { -@@ -254,17 +259,19 @@ uint32_t dc_target_get_vblank_counter(const struct dc_target *dc_target) - } - - enum dc_irq_source dc_target_get_irq_src( -- const struct core_dc *dc, -+ const struct dc *dc, - const struct dc_target *dc_target, - const enum irq_type irq_type) - { -+ struct core_dc *core_dc = DC_TO_CORE(dc); -+ - uint8_t i; - struct core_target *core_target = DC_TARGET_TO_CORE(dc_target); - struct core_stream *stream = - DC_STREAM_TO_CORE(core_target->public.streams[0]); - - for (i = 0; i < MAX_PIPES; i++) -- if (dc->current_context.res_ctx.pipe_ctx[i].stream == stream) -+ if (core_dc->current_context.res_ctx.pipe_ctx[i].stream == stream) - return irq_type + i; - - return irq_type; -diff --git a/drivers/gpu/drm/amd/dal/dc/dc.h b/drivers/gpu/drm/amd/dal/dc/dc.h -index 41010f7..5660790 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dc.h -+++ b/drivers/gpu/drm/amd/dal/dc/dc.h -@@ -45,7 +45,9 @@ struct dc_caps { - uint32_t max_audios; - }; - --void dc_get_caps(const struct core_dc *dc, struct dc_caps *caps); -+struct dc { -+ struct dc_caps caps; -+}; - - struct dc_init_data { - struct hw_asic_id asic_id; -@@ -62,8 +64,8 @@ struct dc_init_data { - enum dce_environment dce_environment; - }; - --struct core_dc *dc_create(const struct dc_init_data *init_params); --void dc_destroy(struct core_dc **dc); -+struct dc *dc_create(const struct dc_init_data *init_params); -+void dc_destroy(struct dc **dc); - - /******************************************************************************* - * Surface Interfaces -@@ -140,7 +142,7 @@ struct dc_surface_status { - /* - * Create a new surface with default parameters; - */ --struct dc_surface *dc_create_surface(const struct core_dc *dc); -+struct dc_surface *dc_create_surface(const struct dc *dc); - const struct dc_surface_status* dc_surface_get_status( - struct dc_surface *dc_surface); - -@@ -148,7 +150,7 @@ void dc_surface_retain(const struct dc_surface *dc_surface); - void dc_surface_release(const struct dc_surface *dc_surface); - - void dc_gamma_release(const struct dc_gamma *dc_gamma); --struct dc_gamma *dc_create_gamma(const struct core_dc *dc); -+struct dc_gamma *dc_create_gamma(const struct dc *dc); - - /* - * This structure holds a surface address. There could be multiple addresses -@@ -169,7 +171,7 @@ struct dc_flip_addrs { - * Surface addresses and flip attributes are programmed. - * Surface flip occur at next configured time (h_sync or v_sync flip) - */ --void dc_flip_surface_addrs(struct core_dc *dc, -+void dc_flip_surface_addrs(struct dc *dc, - const struct dc_surface *const surfaces[], - struct dc_flip_addrs flip_addrs[], - uint32_t count); -@@ -185,7 +187,7 @@ void dc_flip_surface_addrs(struct core_dc *dc, - * This does not trigger a flip. No surface address is programmed. - */ - bool dc_commit_surfaces_to_target( -- struct core_dc *dc, -+ struct dc *dc, - struct dc_surface *dc_surfaces[], - uint8_t surface_count, - struct dc_target *dc_target); -@@ -230,8 +232,8 @@ void dc_target_log( - enum log_major log_major, - enum log_minor log_minor); - --uint8_t dc_get_current_target_count(const struct core_dc *dc); --struct dc_target *dc_get_target_at_index(const struct core_dc *dc, uint8_t i); -+uint8_t dc_get_current_target_count(const struct dc *dc); -+struct dc_target *dc_get_target_at_index(const struct dc *dc, uint8_t i); - - bool dc_target_is_connected_to_sink( - const struct dc_target *dc_target, -@@ -241,7 +243,7 @@ uint8_t dc_target_get_controller_id(const struct dc_target *dc_target); - - uint32_t dc_target_get_vblank_counter(const struct dc_target *dc_target); - enum dc_irq_source dc_target_get_irq_src( -- const struct core_dc *dc, -+ const struct dc *dc, - const struct dc_target *dc_target, - const enum irq_type irq_type); - -@@ -261,7 +263,7 @@ struct dc_validation_set { - * No hardware is programmed for call. Only validation is done. - */ - bool dc_validate_resources( -- const struct core_dc *dc, -+ const struct dc *dc, - const struct dc_validation_set set[], - uint8_t set_count); - -@@ -274,7 +276,7 @@ bool dc_validate_resources( - * New targets are enabled with blank stream; no memory read. - */ - bool dc_commit_targets( -- struct core_dc *dc, -+ struct dc *dc, - struct dc_target *targets[], - uint8_t target_count); - -@@ -355,11 +357,11 @@ struct dc_link { - * boot time. They cannot be created or destroyed. - * Use dc_get_caps() to get number of links. - */ --const struct dc_link *dc_get_link_at_index(struct core_dc *dc, uint32_t link_index); -+const struct dc_link *dc_get_link_at_index(struct dc *dc, uint32_t link_index); - - /* Return id of physical connector represented by a dc_link at link_index.*/ - const struct graphics_object_id dc_get_link_id_at_index( -- struct core_dc *dc, uint32_t link_index); -+ struct dc *dc, uint32_t link_index); - - /* Set backlight level of an embedded panel (eDP, LVDS). */ - bool dc_link_set_backlight_level(const struct dc_link *dc_link, uint32_t level); -@@ -405,7 +407,7 @@ struct dc_sink { - void dc_sink_retain(const struct dc_sink *sink); - void dc_sink_release(const struct dc_sink *sink); - --const struct audio **dc_get_audios(struct core_dc *dc); -+const struct audio **dc_get_audios(struct dc *dc); - - struct dc_sink_init_data { - enum signal_type sink_signal; -@@ -438,7 +440,7 @@ struct dc_cursor { - * Create a new cursor with default values for a given target. - */ - struct dc_cursor *dc_create_cursor_for_target( -- const struct core_dc *dc, -+ const struct dc *dc, - struct dc_target *dc_target); - - /** -@@ -450,7 +452,7 @@ struct dc_cursor *dc_create_cursor_for_target( - * Cursor position is unmodified. - */ - bool dc_commit_cursor( -- const struct core_dc *dc, -+ const struct dc *dc, - struct dc_cursor *cursor); - - /* -@@ -460,7 +462,7 @@ bool dc_commit_cursor( - * Cursor position will be programmed as well as enable/disable bit. - */ - bool dc_set_cursor_position( -- const struct core_dc *dc, -+ const struct dc *dc, - struct dc_cursor *cursor, - struct dc_cursor_position *pos); - -@@ -468,15 +470,15 @@ bool dc_set_cursor_position( - * Interrupt interfaces - ******************************************************************************/ - enum dc_irq_source dc_interrupt_to_irq_source( -- struct core_dc *dc, -+ struct dc *dc, - uint32_t src_id, - uint32_t ext_id); --void dc_interrupt_set(const struct core_dc *dc, enum dc_irq_source src, bool enable); --void dc_interrupt_ack(struct core_dc *dc, enum dc_irq_source src); -+void dc_interrupt_set(const struct dc *dc, enum dc_irq_source src, bool enable); -+void dc_interrupt_ack(struct dc *dc, enum dc_irq_source src); - const enum dc_irq_source dc_get_hpd_irq_source_at_index( -- struct core_dc *dc, uint32_t link_index); -+ struct dc *dc, uint32_t link_index); - const struct dc_target *dc_get_target_on_irq_source( -- const struct core_dc *dc, -+ const struct dc *dc, - enum dc_irq_source src); - - /******************************************************************************* -@@ -484,38 +486,38 @@ const struct dc_target *dc_get_target_on_irq_source( - ******************************************************************************/ - - void dc_set_power_state( -- struct core_dc *dc, -+ struct dc *dc, - enum dc_acpi_cm_power_state power_state, - enum dc_video_power_state video_power_state); --void dc_resume(const struct core_dc *dc); -+void dc_resume(const struct dc *dc); - - /******************************************************************************* - * DDC Interfaces - ******************************************************************************/ - - const struct ddc_service *dc_get_ddc_at_index( -- struct core_dc *dc, uint32_t link_index); -+ struct dc *dc, uint32_t link_index); - - /* - * DPCD access interfaces - */ - - bool dc_read_dpcd( -- struct core_dc *dc, -+ struct dc *dc, - uint32_t link_index, - uint32_t address, - uint8_t *data, - uint32_t size); - - bool dc_write_dpcd( -- struct core_dc *dc, -+ struct dc *dc, - uint32_t link_index, - uint32_t address, - const uint8_t *data, - uint32_t size); - - bool dc_submit_i2c( -- struct core_dc *dc, -+ struct dc *dc, - uint32_t link_index, - struct i2c_command *cmd); - -diff --git a/drivers/gpu/drm/amd/dal/dc/dc_types.h b/drivers/gpu/drm/amd/dal/dc/dc_types.h -index 0fb4822..e849972 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dc_types.h -+++ b/drivers/gpu/drm/amd/dal/dc/dc_types.h -@@ -33,7 +33,6 @@ - #include "signal_types.h" - - /* forward declarations */ --struct core_dc; - struct dc_surface; - struct dc_target; - struct dc_stream; -@@ -69,7 +68,7 @@ enum dce_environment { - /********************************/ - - struct dc_context { -- struct core_dc *dc; -+ struct dc *dc; - - #if defined(BUILD_DAL_TEST) - struct test_driver_context *driver_context; -diff --git a/drivers/gpu/drm/amd/dal/dc/inc/core_dc.h b/drivers/gpu/drm/amd/dal/dc/inc/core_dc.h -index 6d20575..21860e4 100644 ---- a/drivers/gpu/drm/amd/dal/dc/inc/core_dc.h -+++ b/drivers/gpu/drm/amd/dal/dc/inc/core_dc.h -@@ -11,7 +11,11 @@ - #include "core_types.h" - #include "hw_sequencer.h" - -+#define DC_TO_CORE(dc)\ -+ container_of(dc, struct core_dc, public) -+ - struct core_dc { -+ struct dc public; - struct dc_context *ctx; - - uint8_t link_count; --- -2.7.4 - |