Commit b79a00a4 authored by Alex Hung's avatar Alex Hung Committed by Alex Deucher

drm/amd/display: Add new set_fc_enable to struct dwbc_funcs

[WHAT]
Add a function to enable and disable DWB's frame captures.
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Hung <alex.hung@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 428542d9
...@@ -130,6 +130,28 @@ bool dwb3_disable(struct dwbc *dwbc) ...@@ -130,6 +130,28 @@ bool dwb3_disable(struct dwbc *dwbc)
return true; return true;
} }
void dwb3_set_fc_enable(struct dwbc *dwbc, enum dwb_frame_capture_enable enable)
{
struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
unsigned int pre_locked;
REG_GET(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, &pre_locked);
/* Lock DWB registers */
if (pre_locked == 0)
REG_UPDATE(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, 1);
/* Disable FC */
REG_UPDATE(FC_MODE_CTRL, FC_FRAME_CAPTURE_EN, enable);
/* Unlock DWB registers */
if (pre_locked == 0)
REG_UPDATE(DWB_UPDATE_CTRL, DWB_UPDATE_LOCK, 0);
DC_LOG_DWB("%s dwb3_fc_disabled at inst = %d", __func__, dwbc->inst);
}
bool dwb3_update(struct dwbc *dwbc, struct dc_dwb_params *params) bool dwb3_update(struct dwbc *dwbc, struct dc_dwb_params *params)
{ {
struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc); struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
...@@ -226,6 +248,7 @@ static const struct dwbc_funcs dcn30_dwbc_funcs = { ...@@ -226,6 +248,7 @@ static const struct dwbc_funcs dcn30_dwbc_funcs = {
.disable = dwb3_disable, .disable = dwb3_disable,
.update = dwb3_update, .update = dwb3_update,
.is_enabled = dwb3_is_enabled, .is_enabled = dwb3_is_enabled,
.set_fc_enable = dwb3_set_fc_enable,
.set_stereo = dwb3_set_stereo, .set_stereo = dwb3_set_stereo,
.set_new_content = dwb3_set_new_content, .set_new_content = dwb3_set_new_content,
.dwb_program_output_csc = NULL, .dwb_program_output_csc = NULL,
......
...@@ -877,6 +877,8 @@ bool dwb3_update(struct dwbc *dwbc, struct dc_dwb_params *params); ...@@ -877,6 +877,8 @@ bool dwb3_update(struct dwbc *dwbc, struct dc_dwb_params *params);
bool dwb3_is_enabled(struct dwbc *dwbc); bool dwb3_is_enabled(struct dwbc *dwbc);
void dwb3_set_fc_enable(struct dwbc *dwbc, enum dwb_frame_capture_enable enable);
void dwb3_set_stereo(struct dwbc *dwbc, void dwb3_set_stereo(struct dwbc *dwbc,
struct dwb_stereo_params *stereo_params); struct dwb_stereo_params *stereo_params);
......
...@@ -188,6 +188,10 @@ struct dwbc_funcs { ...@@ -188,6 +188,10 @@ struct dwbc_funcs {
bool (*is_enabled)( bool (*is_enabled)(
struct dwbc *dwbc); struct dwbc *dwbc);
void (*set_fc_enable)(
struct dwbc *dwbc,
enum dwb_frame_capture_enable enable);
void (*set_stereo)( void (*set_stereo)(
struct dwbc *dwbc, struct dwbc *dwbc,
struct dwb_stereo_params *stereo_params); struct dwb_stereo_params *stereo_params);
......
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