diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 27 | 
1 files changed, 11 insertions, 16 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c index 9fb8aa4d6bae..24629bec181a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c @@ -75,27 +75,21 @@ amdgpufb_release(struct fb_info *info, int user)  static struct fb_ops amdgpufb_ops = {  	.owner = THIS_MODULE, +	DRM_FB_HELPER_DEFAULT_OPS,  	.fb_open = amdgpufb_open,  	.fb_release = amdgpufb_release, -	.fb_check_var = drm_fb_helper_check_var, -	.fb_set_par = drm_fb_helper_set_par,  	.fb_fillrect = drm_fb_helper_cfb_fillrect,  	.fb_copyarea = drm_fb_helper_cfb_copyarea,  	.fb_imageblit = drm_fb_helper_cfb_imageblit, -	.fb_pan_display = drm_fb_helper_pan_display, -	.fb_blank = drm_fb_helper_blank, -	.fb_setcmap = drm_fb_helper_setcmap, -	.fb_debug_enter = drm_fb_helper_debug_enter, -	.fb_debug_leave = drm_fb_helper_debug_leave,  }; -int amdgpu_align_pitch(struct amdgpu_device *adev, int width, int bpp, bool tiled) +int amdgpu_align_pitch(struct amdgpu_device *adev, int width, int cpp, bool tiled)  {  	int aligned = width;  	int pitch_mask = 0; -	switch (bpp / 8) { +	switch (cpp) {  	case 1:  		pitch_mask = 255;  		break; @@ -110,7 +104,7 @@ int amdgpu_align_pitch(struct amdgpu_device *adev, int width, int bpp, bool tile  	aligned += pitch_mask;  	aligned &= ~pitch_mask; -	return aligned; +	return aligned * cpp;  }  static void amdgpufb_destroy_pinned_object(struct drm_gem_object *gobj) @@ -139,20 +133,21 @@ static int amdgpufb_create_pinned_object(struct amdgpu_fbdev *rfbdev,  	int ret;  	int aligned_size, size;  	int height = mode_cmd->height; -	u32 bpp, depth; +	u32 cpp; -	drm_fb_get_bpp_depth(mode_cmd->pixel_format, &depth, &bpp); +	cpp = drm_format_plane_cpp(mode_cmd->pixel_format, 0);  	/* need to align pitch with crtc limits */ -	mode_cmd->pitches[0] = amdgpu_align_pitch(adev, mode_cmd->width, bpp, -						  fb_tiled) * ((bpp + 1) / 8); +	mode_cmd->pitches[0] = amdgpu_align_pitch(adev, mode_cmd->width, cpp, +						  fb_tiled);  	height = ALIGN(mode_cmd->height, 8);  	size = mode_cmd->pitches[0] * height;  	aligned_size = ALIGN(size, PAGE_SIZE);  	ret = amdgpu_gem_object_create(adev, aligned_size, 0,  				       AMDGPU_GEM_DOMAIN_VRAM, -				       AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED, +				       AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | +				       AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS,  				       true, &gobj);  	if (ret) {  		printk(KERN_ERR "failed to allocate framebuffer (%d)\n", @@ -176,7 +171,7 @@ static int amdgpufb_create_pinned_object(struct amdgpu_fbdev *rfbdev,  	} -	ret = amdgpu_bo_pin_restricted(abo, AMDGPU_GEM_DOMAIN_VRAM, 0, 0, NULL); +	ret = amdgpu_bo_pin(abo, AMDGPU_GEM_DOMAIN_VRAM, NULL);  	if (ret) {  		amdgpu_bo_unreserve(abo);  		goto out_unref; |