Lines Matching refs:fb_update
100 } fb_update; member
186 gm12u320->fb_update.workq = create_singlethread_workqueue(DRIVER_NAME); in gm12u320_usb_alloc()
187 if (!gm12u320->fb_update.workq) in gm12u320_usb_alloc()
197 if (gm12u320->fb_update.workq) in gm12u320_usb_free()
198 destroy_workqueue(gm12u320->fb_update.workq); in gm12u320_usb_free()
270 mutex_lock(&gm12u320->fb_update.lock); in gm12u320_copy_fb_to_blocks()
272 if (!gm12u320->fb_update.fb) in gm12u320_copy_fb_to_blocks()
275 fb = gm12u320->fb_update.fb; in gm12u320_copy_fb_to_blocks()
276 x1 = gm12u320->fb_update.rect.x1; in gm12u320_copy_fb_to_blocks()
277 x2 = gm12u320->fb_update.rect.x2; in gm12u320_copy_fb_to_blocks()
278 y1 = gm12u320->fb_update.rect.y1; in gm12u320_copy_fb_to_blocks()
279 y2 = gm12u320->fb_update.rect.y2; in gm12u320_copy_fb_to_blocks()
340 gm12u320->fb_update.fb = NULL; in gm12u320_copy_fb_to_blocks()
342 mutex_unlock(&gm12u320->fb_update.lock); in gm12u320_copy_fb_to_blocks()
348 container_of(work, struct gm12u320_device, fb_update.work); in gm12u320_fb_update_work()
354 while (gm12u320->fb_update.run) { in gm12u320_fb_update_work()
417 wait_event_timeout(gm12u320->fb_update.waitq, in gm12u320_fb_update_work()
418 !gm12u320->fb_update.run || in gm12u320_fb_update_work()
419 gm12u320->fb_update.fb != NULL, in gm12u320_fb_update_work()
436 mutex_lock(&gm12u320->fb_update.lock); in gm12u320_fb_mark_dirty()
438 if (gm12u320->fb_update.fb != fb) { in gm12u320_fb_mark_dirty()
439 old_fb = gm12u320->fb_update.fb; in gm12u320_fb_mark_dirty()
441 gm12u320->fb_update.fb = fb; in gm12u320_fb_mark_dirty()
442 gm12u320->fb_update.rect = *dirty; in gm12u320_fb_mark_dirty()
445 struct drm_rect *rect = &gm12u320->fb_update.rect; in gm12u320_fb_mark_dirty()
453 mutex_unlock(&gm12u320->fb_update.lock); in gm12u320_fb_mark_dirty()
456 wake_up(&gm12u320->fb_update.waitq); in gm12u320_fb_mark_dirty()
464 mutex_lock(&gm12u320->fb_update.lock); in gm12u320_start_fb_update()
465 gm12u320->fb_update.run = true; in gm12u320_start_fb_update()
466 mutex_unlock(&gm12u320->fb_update.lock); in gm12u320_start_fb_update()
468 queue_work(gm12u320->fb_update.workq, &gm12u320->fb_update.work); in gm12u320_start_fb_update()
473 mutex_lock(&gm12u320->fb_update.lock); in gm12u320_stop_fb_update()
474 gm12u320->fb_update.run = false; in gm12u320_stop_fb_update()
475 mutex_unlock(&gm12u320->fb_update.lock); in gm12u320_stop_fb_update()
477 wake_up(&gm12u320->fb_update.waitq); in gm12u320_stop_fb_update()
478 cancel_work_sync(&gm12u320->fb_update.work); in gm12u320_stop_fb_update()
480 mutex_lock(&gm12u320->fb_update.lock); in gm12u320_stop_fb_update()
481 if (gm12u320->fb_update.fb) { in gm12u320_stop_fb_update()
482 drm_framebuffer_put(gm12u320->fb_update.fb); in gm12u320_stop_fb_update()
483 gm12u320->fb_update.fb = NULL; in gm12u320_stop_fb_update()
485 mutex_unlock(&gm12u320->fb_update.lock); in gm12u320_stop_fb_update()
693 INIT_WORK(&gm12u320->fb_update.work, gm12u320_fb_update_work); in gm12u320_usb_probe()
694 mutex_init(&gm12u320->fb_update.lock); in gm12u320_usb_probe()
695 init_waitqueue_head(&gm12u320->fb_update.waitq); in gm12u320_usb_probe()