Skip to content

Commit

Permalink
drm/amd/display: Add new set_fc_enable to struct dwbc_funcs
Browse files Browse the repository at this point in the history
[WHAT]
Add a function to enable and disable DWB's frame captures.

Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
  • Loading branch information
Alex Hung authored and Alex Deucher committed Oct 3, 2023
1 parent 428542d commit b79a00a
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
23 changes: 23 additions & 0 deletions drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.c
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,28 @@ bool dwb3_disable(struct dwbc *dwbc)
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)
{
struct dcn30_dwbc *dwbc30 = TO_DCN30_DWBC(dwbc);
Expand Down Expand Up @@ -226,6 +248,7 @@ static const struct dwbc_funcs dcn30_dwbc_funcs = {
.disable = dwb3_disable,
.update = dwb3_update,
.is_enabled = dwb3_is_enabled,
.set_fc_enable = dwb3_set_fc_enable,
.set_stereo = dwb3_set_stereo,
.set_new_content = dwb3_set_new_content,
.dwb_program_output_csc = NULL,
Expand Down
2 changes: 2 additions & 0 deletions drivers/gpu/drm/amd/display/dc/dcn30/dcn30_dwb.h
Original file line number Diff line number Diff line change
Expand Up @@ -877,6 +877,8 @@ bool dwb3_update(struct dwbc *dwbc, struct dc_dwb_params *params);

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,
struct dwb_stereo_params *stereo_params);

Expand Down
4 changes: 4 additions & 0 deletions drivers/gpu/drm/amd/display/dc/inc/hw/dwb.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,10 @@ struct dwbc_funcs {
bool (*is_enabled)(
struct dwbc *dwbc);

void (*set_fc_enable)(
struct dwbc *dwbc,
enum dwb_frame_capture_enable enable);

void (*set_stereo)(
struct dwbc *dwbc,
struct dwb_stereo_params *stereo_params);
Expand Down

0 comments on commit b79a00a

Please sign in to comment.