Skip to content

Commit

Permalink
drm/radeon/dp: move sink power control to a separate function
Browse files Browse the repository at this point in the history
This will be used elsewhere.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
  • Loading branch information
Alex Deucher authored and Christian König committed Mar 25, 2014
1 parent f3381df commit 2953da1
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 5 deletions.
26 changes: 21 additions & 5 deletions drivers/gpu/drm/radeon/atombios_dp.c
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,26 @@ bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector)
return true;
}

void radeon_dp_set_rx_power_state(struct drm_connector *connector,
u8 power_state)
{
struct radeon_connector *radeon_connector = to_radeon_connector(connector);
struct radeon_connector_atom_dig *dig_connector;

if (!radeon_connector->con_priv)
return;

dig_connector = radeon_connector->con_priv;

/* power up/down the sink */
if (dig_connector->dpcd[0] >= 0x11) {
radeon_write_dpcd_reg(radeon_connector,
DP_SET_POWER, power_state);
usleep_range(1000, 2000);
}
}


struct radeon_dp_link_train_info {
struct radeon_device *rdev;
struct drm_encoder *encoder;
Expand Down Expand Up @@ -673,11 +693,7 @@ static int radeon_dp_link_train_init(struct radeon_dp_link_train_info *dp_info)
u8 tmp;

/* power up the sink */
if (dp_info->dpcd[0] >= 0x11) {
radeon_write_dpcd_reg(dp_info->radeon_connector,
DP_SET_POWER, DP_SET_POWER_D0);
usleep_range(1000, 2000);
}
radeon_dp_set_rx_power_state(dp_info->connector, DP_SET_POWER_D0);

/* possibly enable downspread on the sink */
if (dp_info->dpcd[3] & 0x1)
Expand Down
2 changes: 2 additions & 0 deletions drivers/gpu/drm/radeon/radeon_mode.h
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,8 @@ extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector);
extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector);
extern int radeon_dp_get_panel_mode(struct drm_encoder *encoder,
struct drm_connector *connector);
extern void radeon_dp_set_rx_power_state(struct drm_connector *connector,
u8 power_state);
extern void atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mode);
extern void radeon_atom_encoder_init(struct radeon_device *rdev);
extern void radeon_atom_disp_eng_pll_init(struct radeon_device *rdev);
Expand Down

0 comments on commit 2953da1

Please sign in to comment.