1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
From 6c1d0e9992aea089e866a3fa1e4e6c1cfa08de1a Mon Sep 17 00:00:00 2001
From: Jordan Lazare <Jordan.Lazare@amd.com>
Date: Thu, 28 Jan 2016 14:06:37 -0500
Subject: [PATCH 0746/1110] drm/amd/dal: Use max clocks/safemarks for dce10
Signed-off-by: Jordan Lazare <Jordan.Lazare@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
---
.../drm/amd/dal/dc/dce100/dce100_hw_sequencer.c | 36 +++++++++++++++++++++-
.../drm/amd/dal/dc/dce110/dce110_hw_sequencer.c | 8 +++--
drivers/gpu/drm/amd/dal/dc/inc/hw_sequencer.h | 6 ++++
3 files changed, 46 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/dal/dc/dce100/dce100_hw_sequencer.c b/drivers/gpu/drm/amd/dal/dc/dce100/dce100_hw_sequencer.c
index b76c8ee..75aff2a 100644
--- a/drivers/gpu/drm/amd/dal/dc/dce100/dce100_hw_sequencer.c
+++ b/drivers/gpu/drm/amd/dal/dc/dce100/dce100_hw_sequencer.c
@@ -335,6 +335,39 @@ static void dal_dc_clock_gating_dce100_power_up(struct dc_context *ctx, bool ena
}
}
+/**
+ * Call display_engine_clock_dce80 to perform the Dclk programming.
+ */
+static void set_display_clock(struct validate_context *context)
+{
+ /* Program the display engine clock.
+ * Check DFS bypass mode support or not. DFSbypass feature is only when
+ * BIOS GPU info table reports support. */
+
+ if (/*dal_adapter_service_is_dfs_bypass_enabled()*/ false) {
+ /*TODO: set_display_clock_dfs_bypass(
+ hws,
+ path_set,
+ context->res_ctx.pool.display_clock,
+ context->res_ctx.min_clocks.min_dclk_khz);*/
+ } else
+ dal_display_clock_set_clock(context->res_ctx.pool.display_clock,
+ 681000);
+
+ /* TODO: When changing display engine clock, DMCU WaitLoop must be
+ * reconfigured in order to maintain the same delays within DMCU
+ * programming sequences. */
+
+ /* TODO: Start GTC counter */
+}
+
+
+static void set_displaymarks(
+ const struct dc *dc, struct validate_context *context)
+{
+ /* Do nothing until we have proper bandwitdth calcs */
+}
+
/**************************************************************************/
bool dce100_hw_sequencer_construct(struct dc *dc)
@@ -348,7 +381,8 @@ bool dce100_hw_sequencer_construct(struct dc *dc)
dc->hwss.enable_fe_clock = dce100_enable_fe_clock;
dc->hwss.pipe_control_lock = dce100_pipe_control_lock;
dc->hwss.set_blender_mode = dce100_set_blender_mode;
-
+ dc->hwss.set_display_clock = set_display_clock;
+ dc->hwss.set_displaymarks = set_displaymarks;
return true;
}
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 9158955..2981307 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
@@ -1148,8 +1148,8 @@ static void program_bw(struct dc *dc, struct validate_context *context)
/*TODO: when pplib works*/
/*dc_set_clocks_and_clock_state(context);*/
- set_display_clock(context);
- set_displaymarks(dc, context);
+ dc->hwss.set_display_clock(context);
+ dc->hwss.set_displaymarks(dc, context);
}
static void switch_dp_clock_sources(
@@ -1238,7 +1238,7 @@ static enum dc_status apply_ctx_to_hw(
if (DC_OK != status)
return status;
}
- set_displaymarks(dc, context);
+ dc->hwss.set_displaymarks(dc, context);
update_bios_scratch_critical_state(context->res_ctx.pool.adapter_srv,
false);
@@ -1646,6 +1646,8 @@ static const struct hw_sequencer_funcs dce110_funcs = {
.pipe_control_lock = dce110_pipe_control_lock,
.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,
};
bool dce110_hw_sequencer_construct(struct dc *dc)
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 bbb39e4..8460dd7 100644
--- a/drivers/gpu/drm/amd/dal/dc/inc/hw_sequencer.h
+++ b/drivers/gpu/drm/amd/dal/dc/inc/hw_sequencer.h
@@ -110,6 +110,12 @@ struct hw_sequencer_funcs {
struct dc_context *ctx,
uint8_t controller_id,
uint32_t mode);
+
+ void (*set_displaymarks)(
+ const struct dc *dc,
+ struct validate_context *context);
+
+ void (*set_display_clock)(struct validate_context *context);
};
bool dc_construct_hw_sequencer(
--
2.7.4
|