Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 500b7587 authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie
Browse files

drm/radeon/kms: handle vblanks properly with dpms on



avivo chips

Copied from pre-avivo code.

Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 4e3f9b78
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -241,6 +241,7 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)
{
{
	struct drm_device *dev = crtc->dev;
	struct drm_device *dev = crtc->dev;
	struct radeon_device *rdev = dev->dev_private;
	struct radeon_device *rdev = dev->dev_private;
	struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);


	switch (mode) {
	switch (mode) {
	case DRM_MODE_DPMS_ON:
	case DRM_MODE_DPMS_ON:
@@ -248,20 +249,19 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)
		if (ASIC_IS_DCE3(rdev))
		if (ASIC_IS_DCE3(rdev))
			atombios_enable_crtc_memreq(crtc, 1);
			atombios_enable_crtc_memreq(crtc, 1);
		atombios_blank_crtc(crtc, 0);
		atombios_blank_crtc(crtc, 0);
		drm_vblank_post_modeset(dev, radeon_crtc->crtc_id);
		radeon_crtc_load_lut(crtc);
		break;
		break;
	case DRM_MODE_DPMS_STANDBY:
	case DRM_MODE_DPMS_STANDBY:
	case DRM_MODE_DPMS_SUSPEND:
	case DRM_MODE_DPMS_SUSPEND:
	case DRM_MODE_DPMS_OFF:
	case DRM_MODE_DPMS_OFF:
		drm_vblank_pre_modeset(dev, radeon_crtc->crtc_id);
		atombios_blank_crtc(crtc, 1);
		atombios_blank_crtc(crtc, 1);
		if (ASIC_IS_DCE3(rdev))
		if (ASIC_IS_DCE3(rdev))
			atombios_enable_crtc_memreq(crtc, 0);
			atombios_enable_crtc_memreq(crtc, 0);
		atombios_enable_crtc(crtc, 0);
		atombios_enable_crtc(crtc, 0);
		break;
		break;
	}
	}

	if (mode != DRM_MODE_DPMS_OFF) {
		radeon_crtc_load_lut(crtc);
	}
}
}


static void
static void