Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/gma500: Use new drm_fb_helper functions

Use the newly created wrapper drm_fb_helper functions instead of calling
core fbdev functions directly. They also simplify the fb_info creation.

v2:
- removed unused variable 'device' in psbfb_create

Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>

Signed-off-by: Archit Taneja <architt@codeaurora.org>
Reviewed-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

authored by

Archit Taneja and committed by
Daniel Vetter
546187c8 7c7d4507

+19 -35
+3 -3
drivers/gpu/drm/gma500/accel_2d.c
··· 276 276 break; 277 277 default: 278 278 /* software fallback */ 279 - cfb_copyarea(info, a); 279 + drm_fb_helper_cfb_copyarea(info, a); 280 280 return; 281 281 } 282 282 283 283 if (!gma_power_begin(dev, false)) { 284 - cfb_copyarea(info, a); 284 + drm_fb_helper_cfb_copyarea(info, a); 285 285 return; 286 286 } 287 287 psb_accel_2d_copy(dev_priv, ··· 308 308 /* Avoid the 8 pixel erratum */ 309 309 if (region->width == 8 || region->height == 8 || 310 310 (info->flags & FBINFO_HWACCEL_DISABLED)) 311 - return cfb_copyarea(info, region); 311 + return drm_fb_helper_cfb_copyarea(info, region); 312 312 313 313 psbfb_copyarea_accel(info, region); 314 314 }
+16 -32
drivers/gpu/drm/gma500/framebuffer.c
··· 194 194 .fb_set_par = drm_fb_helper_set_par, 195 195 .fb_blank = drm_fb_helper_blank, 196 196 .fb_setcolreg = psbfb_setcolreg, 197 - .fb_fillrect = cfb_fillrect, 197 + .fb_fillrect = drm_fb_helper_cfb_fillrect, 198 198 .fb_copyarea = psbfb_copyarea, 199 - .fb_imageblit = cfb_imageblit, 199 + .fb_imageblit = drm_fb_helper_cfb_imageblit, 200 200 .fb_mmap = psbfb_mmap, 201 201 .fb_sync = psbfb_sync, 202 202 .fb_ioctl = psbfb_ioctl, ··· 208 208 .fb_set_par = drm_fb_helper_set_par, 209 209 .fb_blank = drm_fb_helper_blank, 210 210 .fb_setcolreg = psbfb_setcolreg, 211 - .fb_fillrect = cfb_fillrect, 212 - .fb_copyarea = cfb_copyarea, 213 - .fb_imageblit = cfb_imageblit, 211 + .fb_fillrect = drm_fb_helper_cfb_fillrect, 212 + .fb_copyarea = drm_fb_helper_cfb_copyarea, 213 + .fb_imageblit = drm_fb_helper_cfb_imageblit, 214 214 .fb_pan_display = psbfb_pan, 215 215 .fb_mmap = psbfb_mmap, 216 216 .fb_ioctl = psbfb_ioctl, ··· 222 222 .fb_set_par = drm_fb_helper_set_par, 223 223 .fb_blank = drm_fb_helper_blank, 224 224 .fb_setcolreg = psbfb_setcolreg, 225 - .fb_fillrect = cfb_fillrect, 226 - .fb_copyarea = cfb_copyarea, 227 - .fb_imageblit = cfb_imageblit, 225 + .fb_fillrect = drm_fb_helper_cfb_fillrect, 226 + .fb_copyarea = drm_fb_helper_cfb_copyarea, 227 + .fb_imageblit = drm_fb_helper_cfb_imageblit, 228 228 .fb_mmap = psbfb_mmap, 229 229 .fb_ioctl = psbfb_ioctl, 230 230 }; ··· 343 343 struct drm_framebuffer *fb; 344 344 struct psb_framebuffer *psbfb = &fbdev->pfb; 345 345 struct drm_mode_fb_cmd2 mode_cmd; 346 - struct device *device = &dev->pdev->dev; 347 346 int size; 348 347 int ret; 349 348 struct gtt_range *backing; ··· 408 409 409 410 mutex_lock(&dev->struct_mutex); 410 411 411 - info = framebuffer_alloc(0, device); 412 - if (!info) { 413 - ret = -ENOMEM; 412 + info = drm_fb_helper_alloc_fbi(&fbdev->psb_fb_helper); 413 + if (IS_ERR(info)) { 414 + ret = PTR_ERR(info); 414 415 goto out_err1; 415 416 } 416 417 info->par = fbdev; ··· 425 426 psbfb->fbdev = info; 426 427 427 428 fbdev->psb_fb_helper.fb = fb; 428 - fbdev->psb_fb_helper.fbdev = info; 429 429 430 430 drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth); 431 431 strcpy(info->fix.id, "psbdrmfb"); ··· 438 440 } else /* Software */ 439 441 info->fbops = &psbfb_unaccel_ops; 440 442 441 - ret = fb_alloc_cmap(&info->cmap, 256, 0); 442 - if (ret) { 443 - ret = -ENOMEM; 444 - goto out_unref; 445 - } 446 - 447 443 info->fix.smem_start = dev->mode_config.fb_base; 448 444 info->fix.smem_len = size; 449 445 info->fix.ywrapstep = gtt_roll; ··· 448 456 info->screen_size = size; 449 457 450 458 if (dev_priv->gtt.stolen_size) { 451 - info->apertures = alloc_apertures(1); 452 - if (!info->apertures) { 453 - ret = -ENOMEM; 454 - goto out_unref; 455 - } 456 459 info->apertures->ranges[0].base = dev->mode_config.fb_base; 457 460 info->apertures->ranges[0].size = dev_priv->gtt.stolen_size; 458 461 } ··· 470 483 psb_gtt_free_range(dev, backing); 471 484 else 472 485 drm_gem_object_unreference(&backing->gem); 486 + 487 + drm_fb_helper_release_fbi(&fbdev->psb_fb_helper); 473 488 out_err1: 474 489 mutex_unlock(&dev->struct_mutex); 475 490 psb_gtt_free_range(dev, backing); ··· 559 570 560 571 static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev) 561 572 { 562 - struct fb_info *info; 563 573 struct psb_framebuffer *psbfb = &fbdev->pfb; 564 574 565 - if (fbdev->psb_fb_helper.fbdev) { 566 - info = fbdev->psb_fb_helper.fbdev; 567 - unregister_framebuffer(info); 568 - if (info->cmap.len) 569 - fb_dealloc_cmap(&info->cmap); 570 - framebuffer_release(info); 571 - } 575 + drm_fb_helper_unregister_fbi(&fbdev->psb_fb_helper); 576 + drm_fb_helper_release_fbi(&fbdev->psb_fb_helper); 577 + 572 578 drm_fb_helper_fini(&fbdev->psb_fb_helper); 573 579 drm_framebuffer_unregister_private(&psbfb->base); 574 580 drm_framebuffer_cleanup(&psbfb->base);