aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0527-drm-amd-dal-merged-wm-programming-merged-pixel-durat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0527-drm-amd-dal-merged-wm-programming-merged-pixel-durat.patch')
-rw-r--r--common/recipes-kernel/linux/files/0527-drm-amd-dal-merged-wm-programming-merged-pixel-durat.patch287
1 files changed, 0 insertions, 287 deletions
diff --git a/common/recipes-kernel/linux/files/0527-drm-amd-dal-merged-wm-programming-merged-pixel-durat.patch b/common/recipes-kernel/linux/files/0527-drm-amd-dal-merged-wm-programming-merged-pixel-durat.patch
deleted file mode 100644
index 21ef66e6..00000000
--- a/common/recipes-kernel/linux/files/0527-drm-amd-dal-merged-wm-programming-merged-pixel-durat.patch
+++ /dev/null
@@ -1,287 +0,0 @@
-From 8be7639656718aa9aac85d92bcf5f63ca215e641 Mon Sep 17 00:00:00 2001
-From: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
-Date: Thu, 26 Nov 2015 12:09:08 -0500
-Subject: [PATCH 0527/1110] drm/amd/dal: merged wm programming, merged pixel
- duration with dmif allocation
-
-Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
-Signed-off-by: Harry Wentland <harry.wentland@amd.com>
-Acked-by: Harry Wentland <harry.wentland@amd.com>
----
- .../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 14 +---
- .../gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c | 82 +++++++++++-----------
- .../gpu/drm/amd/dal/dc/dce110/dce110_mem_input.h | 51 ++++++++++----
- 3 files changed, 83 insertions(+), 64 deletions(-)
-
-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 e631593..cb2e3d0 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
-@@ -1271,18 +1271,12 @@ static void set_displaymarks(
- for (j = 0; j < target->stream_count; j++) {
- struct core_stream *stream = target->streams[j];
-
-- dce110_mem_input_program_nbp_watermark(
-+ dce110_mem_input_program_display_marks(
- stream->mi,
- context->bw_results
-- .nbp_state_change_watermark[total_streams]);
--
-- dce110_mem_input_program_stutter_watermark(
-- stream->mi,
-+ .nbp_state_change_watermark[total_streams],
- context->bw_results
-- .stutter_exit_watermark[total_streams]);
--
-- dce110_mem_input_program_urgency_watermark(
-- stream->mi,
-+ .stutter_exit_watermark[total_streams],
- context->bw_results
- .urgent_watermark[total_streams],
- stream->public.timing.h_total,
-@@ -1600,8 +1594,6 @@ static bool set_plane_config(
- PIPE_LOCK_CONTROL_SURFACE,
- true);
-
-- dce110_mem_input_program_pix_dur(mi, dc_crtc_timing->pix_clk_khz);
--
- dce110_timing_generator_program_blanking(tg, dc_crtc_timing);
-
- enable_fe_clock(ctx, controller_idx, true);
-diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c
-index e84a1ae..e1d7e27 100644
---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c
-+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.c
-@@ -467,8 +467,8 @@ bool dce110_mem_input_program_surface_config(
-
- enable(mem_input110);
- program_tiling(mem_input110, &surface->tiling_info, surface->format);
-- program_size_and_rotation(mem_input110,
-- surface->rotation, &surface->plane_size);
-+ program_size_and_rotation(
-+ mem_input110, surface->rotation, &surface->plane_size);
- program_pixel_format(mem_input110, surface->format);
-
- return true;
-@@ -533,12 +533,11 @@ static void program_urgency_watermark(
- dal_write_reg(ctx, urgency_addr, urgency_cntl);
- }
-
--void dce110_mem_input_program_stutter_watermark(
-- struct mem_input *mi,
-+void program_stutter_watermark(
-+ const struct dc_context *ctx,
-+ const uint32_t offset,
- struct bw_watermarks marks)
- {
-- const struct dc_context *ctx = mi->ctx;
-- const uint32_t offset = TO_DCE110_MEM_INPUT(mi)->offsets.dmif;
- /* register value */
- uint32_t stutter_cntl = 0;
- uint32_t wm_mask_cntl = 0;
-@@ -599,12 +598,11 @@ void dce110_mem_input_program_stutter_watermark(
- dal_write_reg(ctx, stutter_addr, stutter_cntl);
- }
-
--void dce110_mem_input_program_nbp_watermark(
-- struct mem_input *mi,
-+void program_nbp_watermark(
-+ const struct dc_context *ctx,
-+ const uint32_t offset,
- struct bw_watermarks marks)
- {
-- const struct dc_context *ctx = mi->ctx;
-- const uint32_t offset = TO_DCE110_MEM_INPUT(mi)->offsets.dmif;
- uint32_t value;
- uint32_t addr;
- /* Write mask to enable reading/writing of watermark set A */
-@@ -692,27 +690,37 @@ void dce110_mem_input_program_safe_display_marks(struct mem_input *mi)
-
- program_urgency_watermark(
- mi->ctx, bm_dce110->offsets.dmif, max_marks, MAX_WATERMARK);
-- dce110_mem_input_program_stutter_watermark(mi, max_marks);
-- dce110_mem_input_program_nbp_watermark(mi, nbp_marks);
-+ program_stutter_watermark(mi->ctx, bm_dce110->offsets.dmif, max_marks);
-+ program_nbp_watermark(mi->ctx, bm_dce110->offsets.dmif, nbp_marks);
-
- }
-
--void dce110_mem_input_program_urgency_watermark(
-- struct mem_input *mi,
-- struct bw_watermarks marks,
-+void dce110_mem_input_program_display_marks(
-+ struct mem_input *mem_input,
-+ struct bw_watermarks nbp,
-+ struct bw_watermarks stutter,
-+ struct bw_watermarks urgent,
- uint32_t h_total,
- uint32_t pixel_clk_in_khz,
- uint32_t pstate_blackout_duration_ns)
- {
-- struct dce110_mem_input *bm_dce110 = TO_DCE110_MEM_INPUT(mi);
-+ struct dce110_mem_input *bm_dce110 = TO_DCE110_MEM_INPUT(mem_input);
- uint32_t total_dest_line_time_ns = 1000000UL * h_total
- / pixel_clk_in_khz + pstate_blackout_duration_ns;
-
- program_urgency_watermark(
-- mi->ctx,
-+ mem_input->ctx,
- bm_dce110->offsets.dmif,
-- marks,
-+ urgent,
- total_dest_line_time_ns);
-+ program_nbp_watermark(
-+ mem_input->ctx,
-+ bm_dce110->offsets.dmif,
-+ nbp);
-+ program_stutter_watermark(
-+ mem_input->ctx,
-+ bm_dce110->offsets.dmif,
-+ stutter);
- }
-
- static uint32_t get_dmif_switch_time_us(struct dc_crtc_timing *timing)
-@@ -770,6 +778,7 @@ void dce110_mem_input_allocate_dmif_buffer(
- uint32_t addr = bm110->offsets.pipe + mmPIPE0_DMIF_BUFFER_CONTROL;
- uint32_t value;
- uint32_t field;
-+ uint32_t pix_dur;
-
- if (bm110->supported_stutter_mode
- & STUTTER_MODE_NO_DMIF_BUFFER_ALLOCATION)
-@@ -812,6 +821,21 @@ void dce110_mem_input_allocate_dmif_buffer(
- "%s: DMIF allocation failed",
- __func__);
-
-+
-+ if (timing->pix_clk_khz != 0) {
-+ addr = mmDPG_PIPE_ARBITRATION_CONTROL1 + bm110->offsets.dmif;
-+ value = dal_read_reg(mi->ctx, addr);
-+ pix_dur = 1000000000ULL / timing->pix_clk_khz;
-+
-+ set_reg_field_value(
-+ value,
-+ pix_dur,
-+ DPG_PIPE_ARBITRATION_CONTROL1,
-+ PIXEL_DURATION);
-+
-+ dal_write_reg(mi->ctx, addr, value);
-+ }
-+
- /*
- * Stella Wong proposed the following change
- *
-@@ -897,28 +921,6 @@ void dce110_mem_input_deallocate_dmif_buffer(
- dal_write_reg(mi->ctx, mmMC_HUB_RDREQ_DMIF_LIMIT, value);
- }
-
--void dce110_mem_input_program_pix_dur(
-- struct mem_input *mi, uint32_t pix_clk_khz)
--{
-- uint64_t pix_dur;
-- uint32_t addr = mmDMIF_PG0_DPG_PIPE_ARBITRATION_CONTROL1
-- + TO_DCE110_MEM_INPUT(mi)->offsets.dmif;
-- uint32_t value = dal_read_reg(mi->ctx, addr);
--
-- if (pix_clk_khz == 0)
-- return;
--
-- pix_dur = 1000000000 / pix_clk_khz;
--
-- set_reg_field_value(
-- value,
-- pix_dur,
-- DPG_PIPE_ARBITRATION_CONTROL1,
-- PIXEL_DURATION);
--
-- dal_write_reg(mi->ctx, addr, value);
--}
--
- /*****************************************/
- /* Constructor, Destructor */
- /*****************************************/
-diff --git a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.h b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.h
-index 0d23c81..88697be 100644
---- a/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.h
-+++ b/drivers/gpu/drm/amd/dal/dc/dce110/dce110_mem_input.h
-@@ -48,39 +48,64 @@ struct mem_input *dce110_mem_input_create(
-
- void dce110_mem_input_destroy(struct mem_input **mem_input);
-
-+/*
-+ * dce110_mem_input_program_display_marks
-+ *
-+ * This function will program nbp stutter and urgency watermarks to maximum
-+ * safe values
-+ */
- void dce110_mem_input_program_safe_display_marks(struct mem_input *mi);
-
--void dce110_mem_input_program_nbp_watermark(
-- struct mem_input *mem_input,
-- struct bw_watermarks marks);
--
--void dce110_mem_input_program_stutter_watermark(
-- struct mem_input *mem_input,
-- struct bw_watermarks marks);
--
--void dce110_mem_input_program_urgency_watermark(
-+/*
-+ * dce110_mem_input_program_display_marks
-+ *
-+ * This function will program nbp stutter and urgency watermarks to minimum
-+ * allowable values
-+ */
-+void dce110_mem_input_program_display_marks(
- struct mem_input *mem_input,
-- struct bw_watermarks marks,
-+ struct bw_watermarks nbp,
-+ struct bw_watermarks stutter,
-+ struct bw_watermarks urgent,
- uint32_t h_total,
- uint32_t pixel_clk_in_khz,
- uint32_t pstate_blackout_duration_ns);
-
-+/*
-+ * dce110_mem_input_allocate_dmif_buffer
-+ *
-+ * This function will allocate a dmif buffer and program required
-+ * pixel duration for pipe
-+ */
- void dce110_mem_input_allocate_dmif_buffer(
- struct mem_input *mem_input,
- struct dc_crtc_timing *timing,
- uint32_t paths_num);
-
-+/*
-+ * dce110_mem_input_deallocate_dmif_buffer
-+ *
-+ * This function will deallocate a dmif buffer from pipe
-+ */
- void dce110_mem_input_deallocate_dmif_buffer(
- struct mem_input *mem_input, uint32_t paths_num);
-
--void dce110_mem_input_program_pix_dur(
-- struct mem_input *mem_input, uint32_t pix_clk_khz);
--
-+/*
-+ * dce110_mem_input_program_surface_flip_and_addr
-+ *
-+ * This function programs hsync/vsync mode and surface address
-+ */
- bool dce110_mem_input_program_surface_flip_and_addr(
- struct mem_input *mem_input,
- const struct dc_plane_address *address,
- bool flip_immediate);
-
-+/*
-+ * dce110_mem_input_program_surface_config
-+ *
-+ * This function will program surface tiling, size, rotation and pixel format
-+ * to corresponding dcp registers.
-+ */
- bool dce110_mem_input_program_surface_config(
- struct mem_input *mem_input,
- const struct dc_surface *surface);
---
-2.7.4
-