Whoops, sent out an old version of this patch. newer version attached, I can also send out a change against drm-next if you'd prefer. Alex On Fri, May 7, 2010 at 5:05 PM, Alex Deucher <alexdeucher@xxxxxxxxx> wrote: > Previously we just set them to dpms off. This should save > additional power. > > Signed-off-by: Alex Deucher <alexdeucher@xxxxxxxxx> > --- > drivers/gpu/drm/radeon/radeon_encoders.c | 39 ++++++++++++++++++++++++++++++ > 1 files changed, 39 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c > index 559c9ce..607d00b 100644 > --- a/drivers/gpu/drm/radeon/radeon_encoders.c > +++ b/drivers/gpu/drm/radeon/radeon_encoders.c > @@ -1504,10 +1504,49 @@ static void radeon_atom_encoder_commit(struct drm_encoder *encoder) > > static void radeon_atom_encoder_disable(struct drm_encoder *encoder) > { > + struct drm_device *dev = encoder->dev; > + struct radeon_device *rdev = dev->dev_private; > struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); > struct radeon_encoder_atom_dig *dig; > radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); > > + switch (radeon_encoder->encoder_id) { > + case ENCODER_OBJECT_ID_INTERNAL_TMDS1: > + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: > + case ENCODER_OBJECT_ID_INTERNAL_LVDS: > + case ENCODER_OBJECT_ID_INTERNAL_LVTM1: > + atombios_digital_setup(encoder, PANEL_ENCODER_ACTION_DISABLE); > + break; > + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: > + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: > + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: > + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: > + if (ASIC_IS_DCE4(rdev)) > + /* disable the transmitter */ > + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); > + else { > + /* disable the encoder and transmitter */ > + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); > + atombios_dig_encoder_setup(encoder, ATOM_DISABLE); > + } > + break; > + case ENCODER_OBJECT_ID_INTERNAL_DDI: > + atombios_ddia_setup(encoder, ATOM_DISABLE); > + break; > + case ENCODER_OBJECT_ID_INTERNAL_DVO1: > + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1: > + atombios_external_tmds_setup(encoder, ATOM_DISABLE); > + break; > + case ENCODER_OBJECT_ID_INTERNAL_DAC1: > + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: > + case ENCODER_OBJECT_ID_INTERNAL_DAC2: > + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2: > + atombios_dac_setup(encoder, ATOM_DISABLE); > + if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT | ATOM_DEVICE_CV_SUPPORT)) > + atombios_tv_setup(encoder, ATOM_DISABLE); > + break; > + } > + > if (radeon_encoder_is_digital(encoder)) { > if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI) > r600_hdmi_disable(encoder); > -- > 1.5.6.3 > >
Attachment:
0001-drm-radeon-kms-atom-disable-the-encoders-in-encoder.patch
Description: application/mbox
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel