mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	drm: zte: use vblank hooks in struct drm_crtc_funcs
The vblank hooks in struct drm_driver are deprecated and only meant for legacy drivers. For modern drivers with DRIVER_MODESET flag, the hooks in struct drm_crtc_funcs should be used instead. The functions are moved around to save forward declaration. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Reviewed-by: Sean Paul <seanpaul@chromium.org> Link: http://patchwork.freedesktop.org/patch/msgid/1486458995-31018-24-git-send-email-shawnguo@kernel.org
This commit is contained in:
		
							parent
							
								
									0d5f46fa4c
								
							
						
					
					
						commit
						e5b8afbe34
					
				
					 3 changed files with 23 additions and 43 deletions
				
			
		|  | @ -71,8 +71,6 @@ static struct drm_driver zx_drm_driver = { | |||
| 	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | | ||||
| 			   DRIVER_ATOMIC, | ||||
| 	.lastclose = zx_drm_lastclose, | ||||
| 	.enable_vblank = zx_vou_enable_vblank, | ||||
| 	.disable_vblank = zx_vou_disable_vblank, | ||||
| 	.gem_free_object = drm_gem_cma_free_object, | ||||
| 	.gem_vm_ops = &drm_gem_cma_vm_ops, | ||||
| 	.dumb_create = drm_gem_cma_dumb_create, | ||||
|  |  | |||
|  | @ -470,6 +470,27 @@ static const struct drm_crtc_helper_funcs zx_crtc_helper_funcs = { | |||
| 	.atomic_flush = zx_crtc_atomic_flush, | ||||
| }; | ||||
| 
 | ||||
| static int zx_vou_enable_vblank(struct drm_crtc *crtc) | ||||
| { | ||||
| 	struct zx_crtc *zcrtc = to_zx_crtc(crtc); | ||||
| 	struct zx_vou_hw *vou = crtc_to_vou(crtc); | ||||
| 	u32 int_frame_mask = zcrtc->bits->int_frame_mask; | ||||
| 
 | ||||
| 	zx_writel_mask(vou->timing + TIMING_INT_CTRL, int_frame_mask, | ||||
| 		       int_frame_mask); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static void zx_vou_disable_vblank(struct drm_crtc *crtc) | ||||
| { | ||||
| 	struct zx_crtc *zcrtc = to_zx_crtc(crtc); | ||||
| 	struct zx_vou_hw *vou = crtc_to_vou(crtc); | ||||
| 
 | ||||
| 	zx_writel_mask(vou->timing + TIMING_INT_CTRL, | ||||
| 		       zcrtc->bits->int_frame_mask, 0); | ||||
| } | ||||
| 
 | ||||
| static const struct drm_crtc_funcs zx_crtc_funcs = { | ||||
| 	.destroy = drm_crtc_cleanup, | ||||
| 	.set_config = drm_atomic_helper_set_config, | ||||
|  | @ -477,6 +498,8 @@ static const struct drm_crtc_funcs zx_crtc_funcs = { | |||
| 	.reset = drm_atomic_helper_crtc_reset, | ||||
| 	.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, | ||||
| 	.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, | ||||
| 	.enable_vblank = zx_vou_enable_vblank, | ||||
| 	.disable_vblank = zx_vou_disable_vblank, | ||||
| }; | ||||
| 
 | ||||
| static int zx_crtc_init(struct drm_device *drm, struct zx_vou_hw *vou, | ||||
|  | @ -553,44 +576,6 @@ static int zx_crtc_init(struct drm_device *drm, struct zx_vou_hw *vou, | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int zx_vou_enable_vblank(struct drm_device *drm, unsigned int pipe) | ||||
| { | ||||
| 	struct drm_crtc *crtc; | ||||
| 	struct zx_crtc *zcrtc; | ||||
| 	struct zx_vou_hw *vou; | ||||
| 	u32 int_frame_mask; | ||||
| 
 | ||||
| 	crtc = drm_crtc_from_index(drm, pipe); | ||||
| 	if (!crtc) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	vou = crtc_to_vou(crtc); | ||||
| 	zcrtc = to_zx_crtc(crtc); | ||||
| 	int_frame_mask = zcrtc->bits->int_frame_mask; | ||||
| 
 | ||||
| 	zx_writel_mask(vou->timing + TIMING_INT_CTRL, int_frame_mask, | ||||
| 		       int_frame_mask); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| void zx_vou_disable_vblank(struct drm_device *drm, unsigned int pipe) | ||||
| { | ||||
| 	struct drm_crtc *crtc; | ||||
| 	struct zx_crtc *zcrtc; | ||||
| 	struct zx_vou_hw *vou; | ||||
| 
 | ||||
| 	crtc = drm_crtc_from_index(drm, pipe); | ||||
| 	if (!crtc) | ||||
| 		return; | ||||
| 
 | ||||
| 	vou = crtc_to_vou(crtc); | ||||
| 	zcrtc = to_zx_crtc(crtc); | ||||
| 
 | ||||
| 	zx_writel_mask(vou->timing + TIMING_INT_CTRL, | ||||
| 		       zcrtc->bits->int_frame_mask, 0); | ||||
| } | ||||
| 
 | ||||
| void zx_vou_layer_enable(struct drm_plane *plane) | ||||
| { | ||||
| 	struct zx_crtc *zcrtc = to_zx_crtc(plane->state->crtc); | ||||
|  |  | |||
|  | @ -61,9 +61,6 @@ struct vou_div_config { | |||
| void zx_vou_config_dividers(struct drm_crtc *crtc, | ||||
| 			    struct vou_div_config *configs, int num); | ||||
| 
 | ||||
| int zx_vou_enable_vblank(struct drm_device *drm, unsigned int pipe); | ||||
| void zx_vou_disable_vblank(struct drm_device *drm, unsigned int pipe); | ||||
| 
 | ||||
| void zx_vou_layer_enable(struct drm_plane *plane); | ||||
| void zx_vou_layer_disable(struct drm_plane *plane); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Shawn Guo
						Shawn Guo