[PATCH 3/3] drm/amdgpu: Switch to drm_vblank_on/off

Michel Dänzer michel at daenzer.net
Thu Jan 21 19:23:28 PST 2016


On 21.01.2016 19:08, Daniel Vetter wrote:
> Equivalent change to the radeon driver.
> 
> Note that with radeon this caught a bug in the dri3 DDX
> implementation, which asked for vblank interrupts when the pipe is
> off. That bug needs to be fixed before we can merge this patch (if
> amdgpu is affected too). Michel discovered this one.

This is fixed in xf86-video-amdgpu as well.


> Cc: Michel Dänzer <michel.daenzer at amd.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 4 ++--
>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> index 093599aba64b..d3926d193018 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> @@ -2701,13 +2701,13 @@ static void dce_v10_0_crtc_dpms(struct drm_crtc *crtc, int mode)
>  		type = amdgpu_crtc_idx_to_irq_type(adev, amdgpu_crtc->crtc_id);
>  		amdgpu_irq_update(adev, &adev->crtc_irq, type);
>  		amdgpu_irq_update(adev, &adev->pageflip_irq, type);
> -		drm_vblank_post_modeset(dev, amdgpu_crtc->crtc_id);
> +		drm_vblank_on(dev, amdgpu_crtc->crtc_id);
>  		dce_v10_0_crtc_load_lut(crtc);
>  		break;
>  	case DRM_MODE_DPMS_STANDBY:
>  	case DRM_MODE_DPMS_SUSPEND:
>  	case DRM_MODE_DPMS_OFF:
> -		drm_vblank_pre_modeset(dev, amdgpu_crtc->crtc_id);
> +		drm_vblank_off(dev, amdgpu_crtc->crtc_id);
>  		if (amdgpu_crtc->enabled) {
>  			dce_v10_0_vga_enable(crtc, true);
>  			amdgpu_atombios_crtc_blank(crtc, ATOM_ENABLE);
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> index 8e67249d4367..789c7f9f623a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> @@ -2692,13 +2692,13 @@ static void dce_v11_0_crtc_dpms(struct drm_crtc *crtc, int mode)
>  		type = amdgpu_crtc_idx_to_irq_type(adev, amdgpu_crtc->crtc_id);
>  		amdgpu_irq_update(adev, &adev->crtc_irq, type);
>  		amdgpu_irq_update(adev, &adev->pageflip_irq, type);
> -		drm_vblank_post_modeset(dev, amdgpu_crtc->crtc_id);
> +		drm_vblank_on(dev, amdgpu_crtc->crtc_id);
>  		dce_v11_0_crtc_load_lut(crtc);
>  		break;
>  	case DRM_MODE_DPMS_STANDBY:
>  	case DRM_MODE_DPMS_SUSPEND:
>  	case DRM_MODE_DPMS_OFF:
> -		drm_vblank_pre_modeset(dev, amdgpu_crtc->crtc_id);
> +		drm_vblank_off(dev, amdgpu_crtc->crtc_id);
>  		if (amdgpu_crtc->enabled) {
>  			dce_v11_0_vga_enable(crtc, true);
>  			amdgpu_atombios_crtc_blank(crtc, ATOM_ENABLE);
> 

You missed dce_v8_0.c. With that fixed,

Acked-by: Michel Dänzer <michel.daenzer at amd.com>


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer


More information about the dri-devel mailing list