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

drm/vboxvideo: Replace prepare_fb()/cleanup_fb() with GEM VRAM helpers

GEM VRAM provides an implementation for prepare_fb() and cleanup_fb()
of struct drm_plane_helper_funcs. Switch over vboxvideo.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20191024081404.6978-5-tzimmermann@suse.de

+4 -57
+4 -57
drivers/gpu/drm/vboxvideo/vbox_mode.c
··· 334 334 old_state->src_y >> 16); 335 335 } 336 336 337 - static int vbox_primary_prepare_fb(struct drm_plane *plane, 338 - struct drm_plane_state *new_state) 339 - { 340 - struct drm_gem_vram_object *gbo; 341 - int ret; 342 - 343 - if (!new_state->fb) 344 - return 0; 345 - 346 - gbo = drm_gem_vram_of_gem(new_state->fb->obj[0]); 347 - ret = drm_gem_vram_pin(gbo, DRM_GEM_VRAM_PL_FLAG_VRAM); 348 - if (ret) 349 - DRM_WARN("Error %d pinning new fb, out of video mem?\n", ret); 350 - 351 - return ret; 352 - } 353 - 354 - static void vbox_primary_cleanup_fb(struct drm_plane *plane, 355 - struct drm_plane_state *old_state) 356 - { 357 - struct drm_gem_vram_object *gbo; 358 - 359 - if (!old_state->fb) 360 - return; 361 - 362 - gbo = drm_gem_vram_of_gem(old_state->fb->obj[0]); 363 - drm_gem_vram_unpin(gbo); 364 - } 365 - 366 337 static int vbox_cursor_atomic_check(struct drm_plane *plane, 367 338 struct drm_plane_state *new_state) 368 339 { ··· 463 492 mutex_unlock(&vbox->hw_mutex); 464 493 } 465 494 466 - static int vbox_cursor_prepare_fb(struct drm_plane *plane, 467 - struct drm_plane_state *new_state) 468 - { 469 - struct drm_gem_vram_object *gbo; 470 - 471 - if (!new_state->fb) 472 - return 0; 473 - 474 - gbo = drm_gem_vram_of_gem(new_state->fb->obj[0]); 475 - return drm_gem_vram_pin(gbo, DRM_GEM_VRAM_PL_FLAG_SYSTEM); 476 - } 477 - 478 - static void vbox_cursor_cleanup_fb(struct drm_plane *plane, 479 - struct drm_plane_state *old_state) 480 - { 481 - struct drm_gem_vram_object *gbo; 482 - 483 - if (!plane->state->fb) 484 - return; 485 - 486 - gbo = drm_gem_vram_of_gem(plane->state->fb->obj[0]); 487 - drm_gem_vram_unpin(gbo); 488 - } 489 - 490 495 static const u32 vbox_cursor_plane_formats[] = { 491 496 DRM_FORMAT_ARGB8888, 492 497 }; ··· 471 524 .atomic_check = vbox_cursor_atomic_check, 472 525 .atomic_update = vbox_cursor_atomic_update, 473 526 .atomic_disable = vbox_cursor_atomic_disable, 474 - .prepare_fb = vbox_cursor_prepare_fb, 475 - .cleanup_fb = vbox_cursor_cleanup_fb, 527 + .prepare_fb = drm_gem_vram_plane_helper_prepare_fb, 528 + .cleanup_fb = drm_gem_vram_plane_helper_cleanup_fb, 476 529 }; 477 530 478 531 static const struct drm_plane_funcs vbox_cursor_plane_funcs = { ··· 493 546 .atomic_check = vbox_primary_atomic_check, 494 547 .atomic_update = vbox_primary_atomic_update, 495 548 .atomic_disable = vbox_primary_atomic_disable, 496 - .prepare_fb = vbox_primary_prepare_fb, 497 - .cleanup_fb = vbox_primary_cleanup_fb, 549 + .prepare_fb = drm_gem_vram_plane_helper_prepare_fb, 550 + .cleanup_fb = drm_gem_vram_plane_helper_cleanup_fb, 498 551 }; 499 552 500 553 static const struct drm_plane_funcs vbox_primary_plane_funcs = {