Commit 2a06e0a5 authored by Harry Wentland's avatar Harry Wentland Committed by Alex Deucher

drm/amd/display: Remove unnecessary dc_stream vtable

There's no need to have this as a vtable. The vtable was initially
used for stream_adjust_vmin_vmax but the condition checked here
(set_drr) is always true, hence we don't need to assign this
dynamically anymore.
Signed-off-by: default avatarHarry Wentland <harry.wentland@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Acked-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2e5fa5ba
...@@ -164,7 +164,7 @@ static bool create_links( ...@@ -164,7 +164,7 @@ static bool create_links(
return false; return false;
} }
static bool stream_adjust_vmin_vmax(struct dc *dc, bool dc_stream_adjust_vmin_vmax(struct dc *dc,
struct dc_stream_state **streams, int num_streams, struct dc_stream_state **streams, int num_streams,
int vmin, int vmax) int vmin, int vmax)
{ {
...@@ -189,7 +189,7 @@ static bool stream_adjust_vmin_vmax(struct dc *dc, ...@@ -189,7 +189,7 @@ static bool stream_adjust_vmin_vmax(struct dc *dc,
return ret; return ret;
} }
static bool stream_get_crtc_position(struct dc *dc, bool dc_stream_get_crtc_position(struct dc *dc,
struct dc_stream_state **streams, int num_streams, struct dc_stream_state **streams, int num_streams,
unsigned int *v_pos, unsigned int *nom_v_pos) unsigned int *v_pos, unsigned int *nom_v_pos)
{ {
...@@ -214,45 +214,7 @@ static bool stream_get_crtc_position(struct dc *dc, ...@@ -214,45 +214,7 @@ static bool stream_get_crtc_position(struct dc *dc,
return ret; return ret;
} }
static bool set_gamut_remap(struct dc *dc, const struct dc_stream_state *stream) void dc_stream_set_static_screen_events(struct dc *dc,
{
int i = 0;
bool ret = false;
struct pipe_ctx *pipes;
for (i = 0; i < MAX_PIPES; i++) {
if (dc->current_state->res_ctx.pipe_ctx[i].stream == stream) {
pipes = &dc->current_state->res_ctx.pipe_ctx[i];
dc->hwss.program_gamut_remap(pipes);
ret = true;
}
}
return ret;
}
static bool program_csc_matrix(struct dc *dc, struct dc_stream_state *stream)
{
int i = 0;
bool ret = false;
struct pipe_ctx *pipes;
for (i = 0; i < MAX_PIPES; i++) {
if (dc->current_state->res_ctx.pipe_ctx[i].stream
== stream) {
pipes = &dc->current_state->res_ctx.pipe_ctx[i];
dc->hwss.program_csc_matrix(pipes,
stream->output_color_space,
stream->csc_color_matrix.matrix);
ret = true;
}
}
return ret;
}
static void set_static_screen_events(struct dc *dc,
struct dc_stream_state **streams, struct dc_stream_state **streams,
int num_streams, int num_streams,
const struct dc_static_screen_events *events) const struct dc_static_screen_events *events)
...@@ -343,100 +305,8 @@ static void set_test_pattern( ...@@ -343,100 +305,8 @@ static void set_test_pattern(
cust_pattern_size); cust_pattern_size);
} }
static void set_dither_option(struct dc_stream_state *stream,
enum dc_dither_option option)
{
struct bit_depth_reduction_params params;
struct dc_link *link = stream->status.link;
struct pipe_ctx *pipes = NULL;
int i;
for (i = 0; i < MAX_PIPES; i++) {
if (link->dc->current_state->res_ctx.pipe_ctx[i].stream ==
stream) {
pipes = &link->dc->current_state->res_ctx.pipe_ctx[i];
break;
}
}
memset(&params, 0, sizeof(params));
if (!pipes)
return;
if (option > DITHER_OPTION_MAX)
return;
stream->dither_option = option;
resource_build_bit_depth_reduction_params(stream,
&params);
stream->bit_depth_params = params;
pipes->stream_res.opp->funcs->
opp_program_bit_depth_reduction(pipes->stream_res.opp, &params);
}
void set_dpms(
struct dc *dc,
struct dc_stream_state *stream,
bool dpms_off)
{
struct pipe_ctx *pipe_ctx = NULL;
int i;
for (i = 0; i < MAX_PIPES; i++) {
if (dc->current_state->res_ctx.pipe_ctx[i].stream == stream) {
pipe_ctx = &dc->current_state->res_ctx.pipe_ctx[i];
break;
}
}
if (!pipe_ctx) {
ASSERT(0);
return;
}
if (stream->dpms_off != dpms_off) {
stream->dpms_off = dpms_off;
if (dpms_off) {
core_link_disable_stream(pipe_ctx,
KEEP_ACQUIRED_RESOURCE);
dc->hwss.pplib_apply_display_requirements(
dc, dc->current_state);
} else {
dc->hwss.pplib_apply_display_requirements(
dc, dc->current_state);
core_link_enable_stream(dc->current_state, pipe_ctx);
}
}
}
static void allocate_dc_stream_funcs(struct dc *dc) static void allocate_dc_stream_funcs(struct dc *dc)
{ {
if (dc->hwss.set_drr != NULL) {
dc->stream_funcs.adjust_vmin_vmax =
stream_adjust_vmin_vmax;
}
dc->stream_funcs.set_static_screen_events =
set_static_screen_events;
dc->stream_funcs.get_crtc_position =
stream_get_crtc_position;
dc->stream_funcs.set_gamut_remap =
set_gamut_remap;
dc->stream_funcs.program_csc_matrix =
program_csc_matrix;
dc->stream_funcs.set_dither_option =
set_dither_option;
dc->stream_funcs.set_dpms =
set_dpms;
dc->link_funcs.set_drive_settings = dc->link_funcs.set_drive_settings =
set_drive_settings; set_drive_settings;
......
...@@ -251,6 +251,24 @@ bool dc_stream_set_cursor_position( ...@@ -251,6 +251,24 @@ bool dc_stream_set_cursor_position(
struct dc_stream_state *stream, struct dc_stream_state *stream,
const struct dc_cursor_position *position); const struct dc_cursor_position *position);
bool dc_stream_adjust_vmin_vmax(struct dc *dc,
struct dc_stream_state **stream,
int num_streams,
int vmin,
int vmax);
bool dc_stream_get_crtc_position(struct dc *dc,
struct dc_stream_state **stream,
int num_streams,
unsigned int *v_pos,
unsigned int *nom_v_pos);
void dc_stream_set_static_screen_events(struct dc *dc,
struct dc_stream_state **stream,
int num_streams,
const struct dc_static_screen_events *events);
bool dc_stream_adjust_vmin_vmax(struct dc *dc, bool dc_stream_adjust_vmin_vmax(struct dc *dc,
struct dc_stream_state **stream, struct dc_stream_state **stream,
int num_streams, int num_streams,
......
...@@ -132,14 +132,6 @@ struct core_freesync { ...@@ -132,14 +132,6 @@ struct core_freesync {
#define MOD_FREESYNC_TO_CORE(mod_freesync)\ #define MOD_FREESYNC_TO_CORE(mod_freesync)\
container_of(mod_freesync, struct core_freesync, public) container_of(mod_freesync, struct core_freesync, public)
static bool check_dc_support(const struct dc *dc)
{
if (dc->stream_funcs.adjust_vmin_vmax == NULL)
return false;
return true;
}
struct mod_freesync *mod_freesync_create(struct dc *dc) struct mod_freesync *mod_freesync_create(struct dc *dc)
{ {
struct core_freesync *core_freesync = struct core_freesync *core_freesync =
...@@ -169,9 +161,6 @@ struct mod_freesync *mod_freesync_create(struct dc *dc) ...@@ -169,9 +161,6 @@ struct mod_freesync *mod_freesync_create(struct dc *dc)
core_freesync->dc = dc; core_freesync->dc = dc;
if (!check_dc_support(dc))
goto fail_construct;
/* Create initial module folder in registry for freesync enable data */ /* Create initial module folder in registry for freesync enable data */
flag.save_per_edid = true; flag.save_per_edid = true;
flag.save_per_link = false; flag.save_per_link = false;
...@@ -599,10 +588,9 @@ static bool set_freesync_on_streams(struct core_freesync *core_freesync, ...@@ -599,10 +588,9 @@ static bool set_freesync_on_streams(struct core_freesync *core_freesync,
update_stream_freesync_context(core_freesync, update_stream_freesync_context(core_freesync,
streams[stream_idx]); streams[stream_idx]);
core_freesync->dc->stream_funcs. dc_stream_adjust_vmin_vmax(core_freesync->dc, streams,
adjust_vmin_vmax(core_freesync->dc, streams, num_streams, v_total_min,
num_streams, v_total_min, v_total_max);
v_total_max);
return true; return true;
...@@ -625,8 +613,7 @@ static bool set_freesync_on_streams(struct core_freesync *core_freesync, ...@@ -625,8 +613,7 @@ static bool set_freesync_on_streams(struct core_freesync *core_freesync,
core_freesync, core_freesync,
streams[stream_idx]); streams[stream_idx]);
core_freesync->dc->stream_funcs. dc_stream_adjust_vmin_vmax(
adjust_vmin_vmax(
core_freesync->dc, streams, core_freesync->dc, streams,
num_streams, v_total_nominal, num_streams, v_total_nominal,
v_total_nominal); v_total_nominal);
...@@ -645,11 +632,9 @@ static bool set_freesync_on_streams(struct core_freesync *core_freesync, ...@@ -645,11 +632,9 @@ static bool set_freesync_on_streams(struct core_freesync *core_freesync,
core_freesync, core_freesync,
streams[stream_idx]); streams[stream_idx]);
core_freesync->dc->stream_funcs. dc_stream_adjust_vmin_vmax(core_freesync->dc, streams,
adjust_vmin_vmax( num_streams, v_total_nominal,
core_freesync->dc, streams, v_total_nominal);
num_streams, v_total_nominal,
v_total_nominal);
/* Reset the cached variables */ /* Reset the cached variables */
reset_freesync_state_variables(state); reset_freesync_state_variables(state);
...@@ -665,11 +650,9 @@ static bool set_freesync_on_streams(struct core_freesync *core_freesync, ...@@ -665,11 +650,9 @@ static bool set_freesync_on_streams(struct core_freesync *core_freesync,
* not support freesync because a former stream has * not support freesync because a former stream has
* be programmed * be programmed
*/ */
core_freesync->dc->stream_funcs. dc_stream_adjust_vmin_vmax(core_freesync->dc, streams,
adjust_vmin_vmax( num_streams, v_total_nominal,
core_freesync->dc, streams, v_total_nominal);
num_streams, v_total_nominal,
v_total_nominal);
/* Reset the cached variables */ /* Reset the cached variables */
reset_freesync_state_variables(state); reset_freesync_state_variables(state);
} }
...@@ -786,9 +769,8 @@ void mod_freesync_handle_v_update(struct mod_freesync *mod_freesync, ...@@ -786,9 +769,8 @@ void mod_freesync_handle_v_update(struct mod_freesync *mod_freesync,
vmin = inserted_frame_v_total; vmin = inserted_frame_v_total;
/* Program V_TOTAL */ /* Program V_TOTAL */
core_freesync->dc->stream_funcs.adjust_vmin_vmax( dc_stream_adjust_vmin_vmax(core_freesync->dc, streams,
core_freesync->dc, streams, num_streams, vmin, vmax);
num_streams, vmin, vmax);
} }
if (state->btr.frame_counter > 0) if (state->btr.frame_counter > 0)
...@@ -822,17 +804,15 @@ void mod_freesync_handle_v_update(struct mod_freesync *mod_freesync, ...@@ -822,17 +804,15 @@ void mod_freesync_handle_v_update(struct mod_freesync *mod_freesync,
update_stream_freesync_context(core_freesync, streams[0]); update_stream_freesync_context(core_freesync, streams[0]);
/* Program static screen ramp values */ /* Program static screen ramp values */
core_freesync->dc->stream_funcs.adjust_vmin_vmax( dc_stream_adjust_vmin_vmax(core_freesync->dc, streams,
core_freesync->dc, streams, num_streams, v_total,
num_streams, v_total, v_total);
v_total);
triggers.overlay_update = true; triggers.overlay_update = true;
triggers.surface_update = true; triggers.surface_update = true;
core_freesync->dc->stream_funcs.set_static_screen_events( dc_stream_set_static_screen_events(core_freesync->dc, streams,
core_freesync->dc, streams, num_streams, num_streams, &triggers);
&triggers);
} }
} }
...@@ -916,9 +896,8 @@ void mod_freesync_update_state(struct mod_freesync *mod_freesync, ...@@ -916,9 +896,8 @@ void mod_freesync_update_state(struct mod_freesync *mod_freesync,
triggers.overlay_update = true; triggers.overlay_update = true;
triggers.surface_update = true; triggers.surface_update = true;
core_freesync->dc->stream_funcs.set_static_screen_events( dc_stream_set_static_screen_events(core_freesync->dc, streams,
core_freesync->dc, streams, num_streams, num_streams, &triggers);
&triggers);
if (freesync_program_required) if (freesync_program_required)
/* Program freesync according to current state*/ /* Program freesync according to current state*/
...@@ -1084,10 +1063,9 @@ bool mod_freesync_override_min_max(struct mod_freesync *mod_freesync, ...@@ -1084,10 +1063,9 @@ bool mod_freesync_override_min_max(struct mod_freesync *mod_freesync,
max_refresh); max_refresh);
/* Program vtotal min/max */ /* Program vtotal min/max */
core_freesync->dc->stream_funcs.adjust_vmin_vmax( dc_stream_adjust_vmin_vmax(core_freesync->dc, &streams, 1,
core_freesync->dc, &streams, 1, state->freesync_range.vmin,
state->freesync_range.vmin, state->freesync_range.vmax);
state->freesync_range.vmax);
} }
if (min_refresh != 0 && if (min_refresh != 0 &&
...@@ -1163,9 +1141,9 @@ bool mod_freesync_get_v_position(struct mod_freesync *mod_freesync, ...@@ -1163,9 +1141,9 @@ bool mod_freesync_get_v_position(struct mod_freesync *mod_freesync,
core_freesync = MOD_FREESYNC_TO_CORE(mod_freesync); core_freesync = MOD_FREESYNC_TO_CORE(mod_freesync);
index = map_index_from_stream(core_freesync, stream); index = map_index_from_stream(core_freesync, stream);
if (core_freesync->dc->stream_funcs.get_crtc_position( if (dc_stream_get_crtc_position(core_freesync->dc, &stream, 1,
core_freesync->dc, &stream, 1, &position.vertical_count,
&position.vertical_count, &position.nominal_vcount)) { &position.nominal_vcount)) {
*nom_v_pos = position.nominal_vcount; *nom_v_pos = position.nominal_vcount;
*v_pos = position.vertical_count; *v_pos = position.vertical_count;
...@@ -1223,9 +1201,9 @@ void mod_freesync_notify_mode_change(struct mod_freesync *mod_freesync, ...@@ -1223,9 +1201,9 @@ void mod_freesync_notify_mode_change(struct mod_freesync *mod_freesync,
triggers.overlay_update = true; triggers.overlay_update = true;
triggers.surface_update = true; triggers.surface_update = true;
core_freesync->dc->stream_funcs.set_static_screen_events( dc_stream_set_static_screen_events(core_freesync->dc,
core_freesync->dc, streams, num_streams, streams, num_streams,
&triggers); &triggers);
} }
} }
...@@ -1424,10 +1402,8 @@ static void apply_fixed_refresh(struct core_freesync *core_freesync, ...@@ -1424,10 +1402,8 @@ static void apply_fixed_refresh(struct core_freesync *core_freesync,
vmax = vmin; vmax = vmin;
core_freesync->dc->stream_funcs.adjust_vmin_vmax( dc_stream_adjust_vmin_vmax(core_freesync->dc, &stream,
core_freesync->dc, &stream, 1, vmin, vmax);
1, vmin,
vmax);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment