Re: [PATCH] drm/radeon/kms/atom: disable the encoders in encoder_disable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux