Lines Matching refs:front_info

38 static int dbuf_add_to_list(struct xen_drm_front_info *front_info,  in dbuf_add_to_list()  argument
49 list_add(&dbuf->list, &front_info->dbuf_list); in dbuf_add_to_list()
138 struct xen_drm_front_info *front_info; in xen_drm_front_mode_set() local
143 front_info = pipeline->drm_info->front_info; in xen_drm_front_mode_set()
144 evtchnl = &front_info->evt_pairs[pipeline->index].req; in xen_drm_front_mode_set()
150 spin_lock_irqsave(&front_info->io_lock, flags); in xen_drm_front_mode_set()
160 spin_unlock_irqrestore(&front_info->io_lock, flags); in xen_drm_front_mode_set()
169 int xen_drm_front_dbuf_create(struct xen_drm_front_info *front_info, in xen_drm_front_dbuf_create() argument
180 evtchnl = &front_info->evt_pairs[GENERIC_OP_EVT_CHNL].req; in xen_drm_front_dbuf_create()
185 buf_cfg.xb_dev = front_info->xb_dev; in xen_drm_front_dbuf_create()
188 buf_cfg.be_alloc = front_info->cfg.be_alloc; in xen_drm_front_dbuf_create()
194 ret = dbuf_add_to_list(front_info, shbuf, dbuf_cookie); in xen_drm_front_dbuf_create()
202 spin_lock_irqsave(&front_info->io_lock, flags); in xen_drm_front_dbuf_create()
215 spin_unlock_irqrestore(&front_info->io_lock, flags); in xen_drm_front_dbuf_create()
233 dbuf_free(&front_info->dbuf_list, dbuf_cookie); in xen_drm_front_dbuf_create()
237 static int xen_drm_front_dbuf_destroy(struct xen_drm_front_info *front_info, in xen_drm_front_dbuf_destroy() argument
246 evtchnl = &front_info->evt_pairs[GENERIC_OP_EVT_CHNL].req; in xen_drm_front_dbuf_destroy()
250 be_alloc = front_info->cfg.be_alloc; in xen_drm_front_dbuf_destroy()
257 dbuf_free(&front_info->dbuf_list, dbuf_cookie); in xen_drm_front_dbuf_destroy()
261 spin_lock_irqsave(&front_info->io_lock, flags); in xen_drm_front_dbuf_destroy()
266 spin_unlock_irqrestore(&front_info->io_lock, flags); in xen_drm_front_dbuf_destroy()
276 dbuf_free(&front_info->dbuf_list, dbuf_cookie); in xen_drm_front_dbuf_destroy()
282 int xen_drm_front_fb_attach(struct xen_drm_front_info *front_info, in xen_drm_front_fb_attach() argument
292 evtchnl = &front_info->evt_pairs[GENERIC_OP_EVT_CHNL].req; in xen_drm_front_fb_attach()
296 buf = dbuf_get(&front_info->dbuf_list, dbuf_cookie); in xen_drm_front_fb_attach()
304 spin_lock_irqsave(&front_info->io_lock, flags); in xen_drm_front_fb_attach()
313 spin_unlock_irqrestore(&front_info->io_lock, flags); in xen_drm_front_fb_attach()
322 int xen_drm_front_fb_detach(struct xen_drm_front_info *front_info, in xen_drm_front_fb_detach() argument
330 evtchnl = &front_info->evt_pairs[GENERIC_OP_EVT_CHNL].req; in xen_drm_front_fb_detach()
336 spin_lock_irqsave(&front_info->io_lock, flags); in xen_drm_front_fb_detach()
341 spin_unlock_irqrestore(&front_info->io_lock, flags); in xen_drm_front_fb_detach()
350 int xen_drm_front_page_flip(struct xen_drm_front_info *front_info, in xen_drm_front_page_flip() argument
358 if (unlikely(conn_idx >= front_info->num_evt_pairs)) in xen_drm_front_page_flip()
361 dbuf_flush_fb(&front_info->dbuf_list, fb_cookie); in xen_drm_front_page_flip()
362 evtchnl = &front_info->evt_pairs[conn_idx].req; in xen_drm_front_page_flip()
366 spin_lock_irqsave(&front_info->io_lock, flags); in xen_drm_front_page_flip()
371 spin_unlock_irqrestore(&front_info->io_lock, flags); in xen_drm_front_page_flip()
380 void xen_drm_front_on_frame_done(struct xen_drm_front_info *front_info, in xen_drm_front_on_frame_done() argument
383 struct xen_drm_front_drm_info *drm_info = front_info->drm_info; in xen_drm_front_on_frame_done()
385 if (unlikely(conn_idx >= front_info->cfg.num_connectors)) in xen_drm_front_on_frame_done()
418 ret = xen_drm_front_dbuf_create(drm_info->front_info, in xen_drm_drv_dumb_create()
436 xen_drm_front_dbuf_destroy(drm_info->front_info, in xen_drm_drv_dumb_create()
452 xen_drm_front_dbuf_destroy(drm_info->front_info, in xen_drm_drv_free_object_unlocked()
456 dbuf_free(&drm_info->front_info->dbuf_list, in xen_drm_drv_free_object_unlocked()
466 struct xen_drm_front_info *front_info = drm_info->front_info; in xen_drm_drv_release() local
476 if (front_info->cfg.be_alloc) in xen_drm_drv_release()
477 xenbus_switch_state(front_info->xb_dev, in xen_drm_drv_release()
527 static int xen_drm_drv_init(struct xen_drm_front_info *front_info) in xen_drm_drv_init() argument
529 struct device *dev = &front_info->xb_dev->dev; in xen_drm_drv_init()
542 drm_info->front_info = front_info; in xen_drm_drv_init()
543 front_info->drm_info = drm_info; in xen_drm_drv_init()
582 static void xen_drm_drv_fini(struct xen_drm_front_info *front_info) in xen_drm_drv_fini() argument
584 struct xen_drm_front_drm_info *drm_info = front_info->drm_info; in xen_drm_drv_fini()
601 front_info->drm_info = NULL; in xen_drm_drv_fini()
603 xen_drm_front_evtchnl_free_all(front_info); in xen_drm_drv_fini()
604 dbuf_free_all(&front_info->dbuf_list); in xen_drm_drv_fini()
611 if (!front_info->cfg.be_alloc) in xen_drm_drv_fini()
612 xenbus_switch_state(front_info->xb_dev, in xen_drm_drv_fini()
616 static int displback_initwait(struct xen_drm_front_info *front_info) in displback_initwait() argument
618 struct xen_drm_front_cfg *cfg = &front_info->cfg; in displback_initwait()
621 cfg->front_info = front_info; in displback_initwait()
622 ret = xen_drm_front_cfg_card(front_info, cfg); in displback_initwait()
628 ret = xen_drm_front_evtchnl_create_all(front_info); in displback_initwait()
632 return xen_drm_front_evtchnl_publish_all(front_info); in displback_initwait()
635 static int displback_connect(struct xen_drm_front_info *front_info) in displback_connect() argument
637 xen_drm_front_evtchnl_set_state(front_info, EVTCHNL_STATE_CONNECTED); in displback_connect()
638 return xen_drm_drv_init(front_info); in displback_connect()
641 static void displback_disconnect(struct xen_drm_front_info *front_info) in displback_disconnect() argument
643 if (!front_info->drm_info) in displback_disconnect()
647 xenbus_switch_state(front_info->xb_dev, XenbusStateReconfiguring); in displback_disconnect()
649 xen_drm_drv_fini(front_info); in displback_disconnect()
655 struct xen_drm_front_info *front_info = dev_get_drvdata(&xb_dev->dev); in displback_changed() local
675 displback_disconnect(front_info); in displback_changed()
683 displback_disconnect(front_info); in displback_changed()
687 ret = displback_initwait(front_info); in displback_changed()
698 ret = displback_connect(front_info); in displback_changed()
700 displback_disconnect(front_info); in displback_changed()
721 displback_disconnect(front_info); in displback_changed()
729 struct xen_drm_front_info *front_info; in xen_drv_probe() local
747 front_info = devm_kzalloc(&xb_dev->dev, in xen_drv_probe()
748 sizeof(*front_info), GFP_KERNEL); in xen_drv_probe()
749 if (!front_info) in xen_drv_probe()
752 front_info->xb_dev = xb_dev; in xen_drv_probe()
753 spin_lock_init(&front_info->io_lock); in xen_drv_probe()
754 INIT_LIST_HEAD(&front_info->dbuf_list); in xen_drv_probe()
755 dev_set_drvdata(&xb_dev->dev, front_info); in xen_drv_probe()
762 struct xen_drm_front_info *front_info = dev_get_drvdata(&dev->dev); in xen_drv_remove() local
778 while ((xenbus_read_unsigned(front_info->xb_dev->otherend, "state", in xen_drv_remove()
786 state = xenbus_read_unsigned(front_info->xb_dev->otherend, in xen_drv_remove()
792 xen_drm_drv_fini(front_info); in xen_drv_remove()