From 233f24686104800f610adc29d7807d56354ec61b Mon Sep 17 00:00:00 2001 From: Xiaojie Yuan Date: Fri, 26 May 2017 12:43:30 +0800 Subject: [PATCH 0816/4131] Revert "drm/amd/display: Clen unused interface." This reverts commit 570c231ad57aa83e4528269c306a124869b779c5. kcl_dm is still a user of dc_flip_surface_addrs() Change-Id: I87c4b1e59f464b40206c46f531812c6849deb649 Signed-off-by: Xiaojie Yuan Reviewed-by: Junwei Zhang --- drivers/gpu/drm/amd/display/dc/core/dc.c | 26 ++++++++++++++++++++++++++ drivers/gpu/drm/amd/display/dc/dc.h | 12 ++++++++++++ 2 files changed, 38 insertions(+) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index c2c379a..2a465b3 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c @@ -1769,6 +1769,32 @@ const struct audio **dc_get_audios(struct dc *dc) return (const struct audio **)core_dc->res_pool->audios; } +void dc_flip_surface_addrs( + 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); + int i, j; + + for (i = 0; i < count; i++) { + struct core_surface *surface = DC_SURFACE_TO_CORE(surfaces[i]); + + surface->public.address = flip_addrs[i].address; + surface->public.flip_immediate = flip_addrs[i].flip_immediate; + + for (j = 0; j < core_dc->res_pool->pipe_count; j++) { + struct pipe_ctx *pipe_ctx = &core_dc->current_context->res_ctx.pipe_ctx[j]; + + if (pipe_ctx->surface != surface) + continue; + + core_dc->hwss.update_plane_addr(core_dc, pipe_ctx); + } + } +} + enum dc_irq_source dc_interrupt_to_irq_source( struct dc *dc, uint32_t src_id, diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h index 4605179..52f132a 100644 --- a/drivers/gpu/drm/amd/display/dc/dc.h +++ b/drivers/gpu/drm/amd/display/dc/dc.h @@ -411,6 +411,18 @@ struct dc_flip_addrs { }; /* + * Optimized flip address update function. + * + * After this call: + * 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 dc *dc, + const struct dc_surface *const surfaces[], + struct dc_flip_addrs flip_addrs[], + uint32_t count); + +/* * Set up surface attributes and associate to a stream * The surfaces parameter is an absolute set of all surface active for the stream. * If no surfaces are provided, the stream will be blanked; no memory read. -- 2.7.4