diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0882-drm-amd-dal-Move-hw_init-into-hwss.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0882-drm-amd-dal-Move-hw_init-into-hwss.patch | 291 |
1 files changed, 0 insertions, 291 deletions
diff --git a/common/recipes-kernel/linux/files/0882-drm-amd-dal-Move-hw_init-into-hwss.patch b/common/recipes-kernel/linux/files/0882-drm-amd-dal-Move-hw_init-into-hwss.patch deleted file mode 100644 index 13174eb2..00000000 --- a/common/recipes-kernel/linux/files/0882-drm-amd-dal-Move-hw_init-into-hwss.patch +++ /dev/null @@ -1,291 +0,0 @@ -From 8bea7ee56f14f0cfcc25373b35cc5907a1f03f79 Mon Sep 17 00:00:00 2001 -From: Jordan Lazare <Jordan.Lazare@amd.com> -Date: Mon, 7 Mar 2016 13:53:12 -0500 -Subject: [PATCH 0882/1110] drm/amd/dal: Move hw_init into hwss - -Also move hwss creation to the bottom of dc_resource - -Signed-off-by: Jordan Lazare <Jordan.Lazare@amd.com> -Acked-by: Harry Wentland <harry.wentland@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/dal/dc/core/dc.c | 81 ++++------------------ - .../gpu/drm/amd/dal/dc/dce100/dce100_resource.c | 4 ++ - .../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 57 ++++++++++++++- - .../gpu/drm/amd/dal/dc/dce110/dce110_resource.c | 4 ++ - drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c | 4 ++ - drivers/gpu/drm/amd/dal/dc/inc/hw_sequencer.h | 2 + - 6 files changed, 82 insertions(+), 70 deletions(-) - -diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c b/drivers/gpu/drm/amd/dal/dc/core/dc.c -index 3a6d0c1..f6eccbd 100644 ---- a/drivers/gpu/drm/amd/dal/dc/core/dc.c -+++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c -@@ -163,59 +163,7 @@ failed_alloc: - return false; - } - --static void init_hw(struct core_dc *dc) --{ -- int i; -- struct dc_bios *bp; -- struct transform *xfm; -- -- bp = dc->ctx->dc_bios; -- for (i = 0; i < dc->res_pool.pipe_count; i++) { -- xfm = dc->res_pool.transforms[i]; -- -- dc->hwss.enable_display_power_gating( -- dc->ctx, i, bp, -- PIPE_GATING_CONTROL_INIT); -- dc->hwss.enable_display_power_gating( -- dc->ctx, i, bp, -- PIPE_GATING_CONTROL_DISABLE); -- xfm->funcs->transform_power_up(xfm); -- dc->hwss.enable_display_pipe_clock_gating( -- dc->ctx, -- true); -- } -- -- dc->hwss.clock_gating_power_up(dc->ctx, false); -- bp->funcs->power_up(bp); -- /***************************************/ - -- for (i = 0; i < dc->link_count; i++) { -- /****************************************/ -- /* Power up AND update implementation according to the -- * required signal (which may be different from the -- * default signal on connector). */ -- struct core_link *link = dc->links[i]; -- link->link_enc->funcs->hw_init(link->link_enc); -- } -- -- for (i = 0; i < dc->res_pool.pipe_count; i++) { -- struct timing_generator *tg = dc->res_pool.timing_generators[i]; -- -- tg->funcs->disable_vga(tg); -- -- /* Blank controller using driver code instead of -- * command table. */ -- tg->funcs->set_blank(tg, true); -- } -- -- for(i = 0; i < dc->res_pool.audio_count; i++) { -- struct audio *audio = dc->res_pool.audios[i]; -- -- if (dal_audio_power_up(audio) != AUDIO_RESULT_OK) -- dm_error("Failed audio power up!\n"); -- } -- --} - - static struct adapter_service *create_as( - const struct dc_init_data *init, -@@ -351,10 +299,6 @@ static bool construct(struct core_dc *dc, const struct dc_init_data *init_params - - dc_ctx->dc_bios = dal_adapter_service_get_bios_parser(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, dc_version)) - goto construct_resource_fail; -@@ -388,7 +332,6 @@ create_links_fail: - as_fail: - dal_logger_destroy(&dc_ctx->logger); - logger_fail: --hwss_fail: - dm_free(dc_ctx); - ctx_fail: - return false; -@@ -480,31 +423,31 @@ struct dc *dc_create(const struct dc_init_data *init_params) - .driver_context = init_params->driver, - .cgs_device = init_params->cgs_device - }; -- struct core_dc *dc = dm_alloc(sizeof(*dc)); -+ struct core_dc *core_dc = dm_alloc(sizeof(*core_dc)); - -- if (NULL == dc) -+ if (NULL == core_dc) - goto alloc_fail; - -- ctx.dc = &dc->public; -- if (false == construct(dc, init_params)) -+ ctx.dc = &core_dc->public; -+ if (false == construct(core_dc, init_params)) - goto construct_fail; - - /*TODO: separate HW and SW initialization*/ -- init_hw(dc); -+ core_dc->hwss.init_hw(core_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; -+ core_dc->public.caps.max_targets = core_dc->res_pool.pipe_count; -+ core_dc->public.caps.max_links = core_dc->link_count; -+ core_dc->public.caps.max_audios = core_dc->res_pool.audio_count; - -- dal_logger_write(dc->ctx->logger, -+ dal_logger_write(core_dc->ctx->logger, - LOG_MAJOR_INTERFACE_TRACE, - LOG_MINOR_COMPONENT_DC, - "Display Core initialized\n"); - -- return &dc->public; -+ return &core_dc->public; - - construct_fail: -- dm_free(dc); -+ dm_free(core_dc); - - alloc_fail: - return NULL; -@@ -1182,7 +1125,7 @@ void dc_set_power_state( - - switch (power_state) { - case DC_ACPI_CM_POWER_STATE_D0: -- init_hw(core_dc); -+ core_dc->hwss.init_hw(core_dc); - break; - default: - /* NULL means "reset/release all DC targets" */ -diff --git a/drivers/gpu/drm/amd/dal/dc/dce100/dce100_resource.c b/drivers/gpu/drm/amd/dal/dc/dce100/dce100_resource.c -index 6b8ae77..1911bbb 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce100/dce100_resource.c -+++ b/drivers/gpu/drm/amd/dal/dc/dce100/dce100_resource.c -@@ -1050,6 +1050,10 @@ bool dce100_construct_resource_pool( - pool->stream_enc_count++; - } - -+ /* Create hardware sequencer */ -+ if (!dc_construct_hw_sequencer(as, dc)) -+ goto stream_enc_create_fail; -+ - return true; - - stream_enc_create_fail: -diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -index e6d1c3a..defaac4 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_hw_sequencer.c -@@ -1593,7 +1593,62 @@ static void enable_timing_synchronization( - DC_SYNC_INFO("GSL: Set-up complete.\n"); - } - -+static void init_hw(struct core_dc *dc) -+{ -+ int i; -+ struct dc_bios *bp; -+ struct transform *xfm; -+ -+ bp = dc->ctx->dc_bios; -+ for (i = 0; i < dc->res_pool.pipe_count; i++) { -+ xfm = dc->res_pool.transforms[i]; -+ -+ dc->hwss.enable_display_power_gating( -+ dc->ctx, i, bp, -+ PIPE_GATING_CONTROL_INIT); -+ dc->hwss.enable_display_power_gating( -+ dc->ctx, i, bp, -+ PIPE_GATING_CONTROL_DISABLE); -+ xfm->funcs->transform_power_up(xfm); -+ dc->hwss.enable_display_pipe_clock_gating( -+ dc->ctx, -+ true); -+ } -+ -+ dc->hwss.clock_gating_power_up(dc->ctx, false); -+ bp->funcs->power_up(bp); -+ /***************************************/ -+ -+ for (i = 0; i < dc->link_count; i++) { -+ /****************************************/ -+ /* Power up AND update implementation according to the -+ * required signal (which may be different from the -+ * default signal on connector). */ -+ struct core_link *link = dc->links[i]; -+ link->link_enc->funcs->hw_init(link->link_enc); -+ } -+ -+ for (i = 0; i < dc->res_pool.pipe_count; i++) { -+ struct timing_generator *tg = dc->res_pool.timing_generators[i]; -+ -+ tg->funcs->disable_vga(tg); -+ -+ /* Blank controller using driver code instead of -+ * command table. */ -+ tg->funcs->set_blank(tg, true); -+ } -+ -+ for (i = 0; i < dc->res_pool.audio_count; i++) { -+ struct audio *audio = dc->res_pool.audios[i]; -+ -+ if (dal_audio_power_up(audio) != AUDIO_RESULT_OK) -+ dm_error("Failed audio power up!\n"); -+ } -+ -+} -+ - static const struct hw_sequencer_funcs dce110_funcs = { -+ .init_hw = init_hw, - .apply_ctx_to_hw = apply_ctx_to_hw, - .reset_hw_ctx = reset_hw_ctx, - .set_plane_config = set_plane_config, -@@ -1613,7 +1668,7 @@ static const struct hw_sequencer_funcs dce110_funcs = { - .set_blender_mode = dce110_set_blender_mode, - .clock_gating_power_up = dal_dc_clock_gating_dce110_power_up,/*todo*/ - .set_display_clock = set_display_clock, -- .set_displaymarks = set_displaymarks, -+ .set_displaymarks = set_displaymarks - }; - - bool dce110_hw_sequencer_construct(struct core_dc *dc) -diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_resource.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_resource.c -index b39e2af..ef3f502 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_resource.c -+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_resource.c -@@ -1188,6 +1188,10 @@ bool dce110_construct_resource_pool( - pool->stream_enc_count++; - } - -+ /* Create hardware sequencer */ -+ if (!dc_construct_hw_sequencer(as, dc)) -+ goto stream_enc_create_fail; -+ - return true; - - stream_enc_create_fail: -diff --git a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c -index 3b70643..078183b 100644 ---- a/drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c -+++ b/drivers/gpu/drm/amd/dal/dc/dce80/dce80_resource.c -@@ -1157,6 +1157,10 @@ bool dce80_construct_resource_pool( - pool->stream_enc_count++; - } - -+ /* Create hardware sequencer */ -+ if (!dc_construct_hw_sequencer(as, dc)) -+ goto stream_enc_create_fail; -+ - return true; - - stream_enc_create_fail: -diff --git a/drivers/gpu/drm/amd/dal/dc/inc/hw_sequencer.h b/drivers/gpu/drm/amd/dal/dc/inc/hw_sequencer.h -index 490ee10..d801a60 100644 ---- a/drivers/gpu/drm/amd/dal/dc/inc/hw_sequencer.h -+++ b/drivers/gpu/drm/amd/dal/dc/inc/hw_sequencer.h -@@ -37,6 +37,8 @@ enum pipe_gating_control { - - struct hw_sequencer_funcs { - -+ void (*init_hw)(struct core_dc *dc); -+ - enum dc_status (*apply_ctx_to_hw)( - struct core_dc *dc, struct validate_context *context); - --- -2.7.4 - |