[PATCH 11/15] staging: vboxvideo: Fix DPMS support after atomic conversion

Daniel Vetter daniel at ffwll.ch
Mon Oct 1 07:53:44 UTC 2018


On Wed, Sep 26, 2018 at 09:42:02PM +0200, Hans de Goede wrote:
> Atomic modesetting does not use the traditional dpms call backs, instead
> we should check crtc_state->active.
> 
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>

Are you sure this does what you want it to do? Atomic helpers fully shut
down the screen when you do a dpms off, "just blanked" kinda doesn't exist
as a state by default.
-Daniel

> ---
>  drivers/staging/vboxvideo/vbox_drv.h  |  1 -
>  drivers/staging/vboxvideo/vbox_mode.c | 28 ++-------------------------
>  2 files changed, 2 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/staging/vboxvideo/vbox_drv.h b/drivers/staging/vboxvideo/vbox_drv.h
> index fccb3851d6a3..9cc20c182df1 100644
> --- a/drivers/staging/vboxvideo/vbox_drv.h
> +++ b/drivers/staging/vboxvideo/vbox_drv.h
> @@ -139,7 +139,6 @@ struct vbox_connector {
>  
>  struct vbox_crtc {
>  	struct drm_crtc base;
> -	bool blanked;
>  	bool disconnected;
>  	unsigned int crtc_id;
>  	u32 fb_offset;
> diff --git a/drivers/staging/vboxvideo/vbox_mode.c b/drivers/staging/vboxvideo/vbox_mode.c
> index c4ec3fa49782..49ff9c4a6302 100644
> --- a/drivers/staging/vboxvideo/vbox_mode.c
> +++ b/drivers/staging/vboxvideo/vbox_mode.c
> @@ -84,14 +84,13 @@ static void vbox_do_modeset(struct drm_crtc *crtc)
>  	}
>  
>  	flags = VBVA_SCREEN_F_ACTIVE;
> -	flags |= (fb && !vbox_crtc->blanked) ? 0 : VBVA_SCREEN_F_BLANK;
> +	flags |= (fb && crtc->state->active) ? 0 : VBVA_SCREEN_F_BLANK;
>  	flags |= vbox_crtc->disconnected ? VBVA_SCREEN_F_DISABLED : 0;
>  	hgsmi_process_display_info(vbox->guest_pool, vbox_crtc->crtc_id,
>  				   x_offset, y_offset,
>  				   vbox_crtc->x * bpp / 8 +
>  							vbox_crtc->y * pitch,
> -				   pitch, width, height,
> -				   vbox_crtc->blanked ? 0 : bpp, flags);
> +				   pitch, width, height, bpp, flags);
>  }
>  
>  static int vbox_set_view(struct drm_crtc *crtc)
> @@ -128,27 +127,6 @@ static int vbox_set_view(struct drm_crtc *crtc)
>  	return 0;
>  }
>  
> -static void vbox_crtc_dpms(struct drm_crtc *crtc, int mode)
> -{
> -	struct vbox_crtc *vbox_crtc = to_vbox_crtc(crtc);
> -	struct vbox_private *vbox = crtc->dev->dev_private;
> -
> -	switch (mode) {
> -	case DRM_MODE_DPMS_ON:
> -		vbox_crtc->blanked = false;
> -		break;
> -	case DRM_MODE_DPMS_STANDBY:
> -	case DRM_MODE_DPMS_SUSPEND:
> -	case DRM_MODE_DPMS_OFF:
> -		vbox_crtc->blanked = true;
> -		break;
> -	}
> -
> -	mutex_lock(&vbox->hw_mutex);
> -	vbox_do_modeset(crtc);
> -	mutex_unlock(&vbox->hw_mutex);
> -}
> -
>  /*
>   * Try to map the layout of virtual screens to the range of the input device.
>   * Return true if we need to re-set the crtc modes due to screen offset
> @@ -276,7 +254,6 @@ static void vbox_crtc_atomic_flush(struct drm_crtc *crtc,
>  }
>  
>  static const struct drm_crtc_helper_funcs vbox_crtc_helper_funcs = {
> -	.dpms = vbox_crtc_dpms,
>  	.disable = vbox_crtc_disable,
>  	.commit = vbox_crtc_commit,
>  	.atomic_flush = vbox_crtc_atomic_flush,
> @@ -861,7 +838,6 @@ static const struct drm_connector_helper_funcs vbox_connector_helper_funcs = {
>  };
>  
>  static const struct drm_connector_funcs vbox_connector_funcs = {
> -	.dpms = drm_helper_connector_dpms,
>  	.detect = vbox_connector_detect,
>  	.fill_modes = vbox_fill_modes,
>  	.destroy = vbox_connector_destroy,
> -- 
> 2.19.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the devel mailing list