Lines Matching refs:qfbdev

104 	struct qxl_fbdev *qfbdev = info->par;  in qxl_fb_dirty_flush()  local
105 struct qxl_device *qdev = qfbdev->qdev; in qxl_fb_dirty_flush()
111 int stride = qfbdev->qfb.base.pitches[0]; in qxl_fb_dirty_flush()
113 x1 = qfbdev->dirty.x1; in qxl_fb_dirty_flush()
114 x2 = qfbdev->dirty.x2; in qxl_fb_dirty_flush()
115 y1 = qfbdev->dirty.y1; in qxl_fb_dirty_flush()
116 y2 = qfbdev->dirty.y2; in qxl_fb_dirty_flush()
135 image->data = qfbdev->shadow + (x1 * 4) + (stride * y1); in qxl_fb_dirty_flush()
139 qfbdev->dirty.x1 = 0; in qxl_fb_dirty_flush()
140 qfbdev->dirty.x2 = 0; in qxl_fb_dirty_flush()
141 qfbdev->dirty.y1 = 0; in qxl_fb_dirty_flush()
142 qfbdev->dirty.y2 = 0; in qxl_fb_dirty_flush()
148 struct qxl_fbdev *qfbdev = info->par; in qxl_deferred_io() local
168 qfbdev->dirty.x1 = 0; in qxl_deferred_io()
169 qfbdev->dirty.y1 = y1; in qxl_deferred_io()
170 qfbdev->dirty.x2 = info->var.xres; in qxl_deferred_io()
171 qfbdev->dirty.y2 = y2; in qxl_deferred_io()
184 static void qxl_fb_delayed_fillrect(struct qxl_fbdev *qfbdev, in qxl_fb_delayed_fillrect() argument
198 spin_lock_irqsave(&qfbdev->delayed_ops_lock, flags); in qxl_fb_delayed_fillrect()
199 list_add_tail(&op->head, &qfbdev->delayed_ops); in qxl_fb_delayed_fillrect()
200 spin_unlock_irqrestore(&qfbdev->delayed_ops_lock, flags); in qxl_fb_delayed_fillrect()
203 static void qxl_fb_delayed_copyarea(struct qxl_fbdev *qfbdev, in qxl_fb_delayed_copyarea() argument
217 spin_lock_irqsave(&qfbdev->delayed_ops_lock, flags); in qxl_fb_delayed_copyarea()
218 list_add_tail(&op->head, &qfbdev->delayed_ops); in qxl_fb_delayed_copyarea()
219 spin_unlock_irqrestore(&qfbdev->delayed_ops_lock, flags); in qxl_fb_delayed_copyarea()
222 static void qxl_fb_delayed_imageblit(struct qxl_fbdev *qfbdev, in qxl_fb_delayed_imageblit() argument
240 spin_lock_irqsave(&qfbdev->delayed_ops_lock, flags); in qxl_fb_delayed_imageblit()
241 list_add_tail(&op->head, &qfbdev->delayed_ops); in qxl_fb_delayed_imageblit()
242 spin_unlock_irqrestore(&qfbdev->delayed_ops_lock, flags); in qxl_fb_delayed_imageblit()
248 struct qxl_fbdev *qfbdev = info->par; in qxl_fb_fillrect_internal() local
249 struct qxl_device *qdev = qfbdev->qdev; in qxl_fb_fillrect_internal()
291 struct qxl_fbdev *qfbdev = info->par; in qxl_fb_fillrect() local
292 struct qxl_device *qdev = qfbdev->qdev; in qxl_fb_fillrect()
295 qxl_fb_delayed_fillrect(qfbdev, fb_rect); in qxl_fb_fillrect()
307 struct qxl_fbdev *qfbdev = info->par; in qxl_fb_copyarea_internal() local
309 qxl_draw_copyarea(qfbdev->qdev, in qxl_fb_copyarea_internal()
318 struct qxl_fbdev *qfbdev = info->par; in qxl_fb_copyarea() local
319 struct qxl_device *qdev = qfbdev->qdev; in qxl_fb_copyarea()
322 qxl_fb_delayed_copyarea(qfbdev, region); in qxl_fb_copyarea()
339 struct qxl_fbdev *qfbdev = info->par; in qxl_fb_imageblit_internal() local
344 qxl_fb_image_init(&qxl_fb_image, qfbdev->qdev, info, image); in qxl_fb_imageblit_internal()
351 struct qxl_fbdev *qfbdev = info->par; in qxl_fb_imageblit() local
352 struct qxl_device *qdev = qfbdev->qdev; in qxl_fb_imageblit()
355 qxl_fb_delayed_imageblit(qfbdev, image); in qxl_fb_imageblit()
369 struct qxl_fbdev *qfbdev = qdev->mode_info.qfbdev; in qxl_fb_work() local
374 spin_lock_irqsave(&qfbdev->delayed_ops_lock, flags); in qxl_fb_work()
375 list_for_each_entry_safe(entry, tmp, &qfbdev->delayed_ops, head) { in qxl_fb_work()
376 spin_unlock_irqrestore(&qfbdev->delayed_ops_lock, flags); in qxl_fb_work()
379 qxl_fb_fillrect_internal(qfbdev->helper.fbdev, &entry->op.fr); in qxl_fb_work()
382 qxl_fb_copyarea_internal(qfbdev->helper.fbdev, &entry->op.ca); in qxl_fb_work()
385 qxl_fb_imageblit_internal(qfbdev->helper.fbdev, &entry->op.ib); in qxl_fb_work()
388 spin_lock_irqsave(&qfbdev->delayed_ops_lock, flags); in qxl_fb_work()
392 spin_unlock_irqrestore(&qfbdev->delayed_ops_lock, flags); in qxl_fb_work()
444 static int qxlfb_create_pinned_object(struct qxl_fbdev *qfbdev, in qxlfb_create_pinned_object() argument
448 struct qxl_device *qdev = qfbdev->qdev; in qxlfb_create_pinned_object()
501 static int qxlfb_create(struct qxl_fbdev *qfbdev, in qxlfb_create() argument
504 struct qxl_device *qdev = qfbdev->qdev; in qxlfb_create()
523 ret = qxlfb_create_pinned_object(qfbdev, &mode_cmd, &gobj); in qxlfb_create()
545 info->par = qfbdev; in qxlfb_create()
547 qxl_framebuffer_init(qdev->ddev, &qfbdev->qfb, &mode_cmd, gobj); in qxlfb_create()
549 fb = &qfbdev->qfb.base; in qxlfb_create()
552 qfbdev->helper.fb = fb; in qxlfb_create()
553 qfbdev->helper.fbdev = info; in qxlfb_create()
554 qfbdev->shadow = shadow; in qxlfb_create()
568 info->screen_base = qfbdev->shadow; in qxlfb_create()
571 drm_fb_helper_fill_var(info, &qfbdev->helper, sizes->fb_width, in qxlfb_create()
601 qdev->fbdev_qfb = &qfbdev->qfb; in qxlfb_create()
628 struct qxl_fbdev *qfbdev = in qxl_fb_find_or_create_single() local
634 ret = qxlfb_create(qfbdev, sizes); in qxl_fb_find_or_create_single()
642 static int qxl_fbdev_destroy(struct drm_device *dev, struct qxl_fbdev *qfbdev) in qxl_fbdev_destroy() argument
645 struct qxl_framebuffer *qfb = &qfbdev->qfb; in qxl_fbdev_destroy()
647 if (qfbdev->helper.fbdev) { in qxl_fbdev_destroy()
648 info = qfbdev->helper.fbdev; in qxl_fbdev_destroy()
657 drm_fb_helper_fini(&qfbdev->helper); in qxl_fbdev_destroy()
658 vfree(qfbdev->shadow); in qxl_fbdev_destroy()
670 struct qxl_fbdev *qfbdev; in qxl_fbdev_init() local
674 qfbdev = kzalloc(sizeof(struct qxl_fbdev), GFP_KERNEL); in qxl_fbdev_init()
675 if (!qfbdev) in qxl_fbdev_init()
678 qfbdev->qdev = qdev; in qxl_fbdev_init()
679 qdev->mode_info.qfbdev = qfbdev; in qxl_fbdev_init()
680 spin_lock_init(&qfbdev->delayed_ops_lock); in qxl_fbdev_init()
681 INIT_LIST_HEAD(&qfbdev->delayed_ops); in qxl_fbdev_init()
683 drm_fb_helper_prepare(qdev->ddev, &qfbdev->helper, in qxl_fbdev_init()
686 ret = drm_fb_helper_init(qdev->ddev, &qfbdev->helper, in qxl_fbdev_init()
692 ret = drm_fb_helper_single_add_all_connectors(&qfbdev->helper); in qxl_fbdev_init()
696 ret = drm_fb_helper_initial_config(&qfbdev->helper, bpp_sel); in qxl_fbdev_init()
703 drm_fb_helper_fini(&qfbdev->helper); in qxl_fbdev_init()
705 kfree(qfbdev); in qxl_fbdev_init()
711 if (!qdev->mode_info.qfbdev) in qxl_fbdev_fini()
714 qxl_fbdev_destroy(qdev->ddev, qdev->mode_info.qfbdev); in qxl_fbdev_fini()
715 kfree(qdev->mode_info.qfbdev); in qxl_fbdev_fini()
716 qdev->mode_info.qfbdev = NULL; in qxl_fbdev_fini()
721 fb_set_suspend(qdev->mode_info.qfbdev->helper.fbdev, state); in qxl_fbdev_set_suspend()
726 if (qobj == gem_to_qxl_bo(qdev->mode_info.qfbdev->qfb.obj)) in qxl_fbdev_qobj_is_fb()