Lines Matching refs:work

7055 	struct intel_unpin_work *work;
7058 work = intel_crtc->unpin_work;
7062 if (work) {
7063 taskqueue_cancel(dev_priv->wq, &work->work, NULL);
7064 taskqueue_drain(dev_priv->wq, &work->work);
7065 free(work, DRM_MEM_KMS);
7075 struct intel_unpin_work *work =
7077 struct drm_device *dev = work->crtc->dev;
7080 intel_unpin_fb_obj(work->old_fb_obj);
7081 drm_gem_object_unreference(&work->pending_flip_obj->base);
7082 drm_gem_object_unreference(&work->old_fb_obj->base);
7087 BUG_ON(atomic_read(&to_intel_crtc(work->crtc)->unpin_work_count) == 0);
7088 atomic_dec(&to_intel_crtc(work->crtc)->unpin_work_count);
7090 free(work, DRM_MEM_KMS);
7098 struct intel_unpin_work *work;
7106 work = intel_crtc->unpin_work;
7108 /* Ensure we don't miss a work->pending update ... */
7111 if (work == NULL || atomic_read(&work->pending) < INTEL_FLIP_COMPLETE) {
7116 /* and that the unpin work is consistent wrt ->pending. */
7121 if (work->event)
7122 drm_send_vblank_event(dev, intel_crtc->pipe, work->event);
7128 obj = work->old_fb_obj;
7134 taskqueue_enqueue(dev_priv->wq, &work->work);
7137 work->pending_flip_obj);
7174 /* Ensure that the work item is consistent when activating it ... */
7431 struct intel_unpin_work *work;
7447 work = malloc(sizeof *work, DRM_MEM_KMS, M_WAITOK | M_ZERO);
7448 if (work == NULL)
7451 work->event = event;
7452 work->crtc = crtc;
7453 work->old_fb_obj = to_intel_framebuffer(old_fb)->obj;
7454 TASK_INIT(&work->work, 0, intel_unpin_work_fn, work);
7464 free(work, DRM_MEM_KMS);
7470 intel_crtc->unpin_work = work;
7480 /* Reference the objects for the scheduled work. */
7481 drm_gem_object_reference(&work->old_fb_obj->base);
7486 work->pending_flip_obj = obj;
7488 work->enable_stall_check = true;
7493 atomic_add(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
7511 atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip);
7512 drm_gem_object_unreference(&work->old_fb_obj->base);
7523 free(work, DRM_MEM_KMS);
8183 /* Make sure the new CRTC will work with the encoder */
8834 * Some machines (Lenovo U160) do not work with SSC on LVDS for some reason
8985 * time, so the subsystems that expect power to be enabled can work.
9406 * enqueue unpin/hotplug work. */
9410 if (taskqueue_cancel(dev_priv->wq, &dev_priv->rps.work, NULL))
9411 taskqueue_drain(dev_priv->wq, &dev_priv->rps.work);
9413 /* flush any delayed tasks or pending work */