• Home
  • Raw
  • Download

Lines Matching full:par

76 	struct vmw_fb_par *par = info->par;  in vmw_fb_setcolreg()  local
77 u32 *pal = par->pseudo_palette; in vmw_fb_setcolreg()
84 switch (par->set_fb->format->depth) { in vmw_fb_setcolreg()
93 par->set_fb->format->depth, in vmw_fb_setcolreg()
94 par->set_fb->format->cpp[0] * 8); in vmw_fb_setcolreg()
105 struct vmw_fb_par *par = info->par; in vmw_fb_check_var() local
106 struct vmw_private *vmw_priv = par->vmw_priv; in vmw_fb_check_var()
143 if ((var->xoffset + var->xres) > par->max_width || in vmw_fb_check_var()
144 (var->yoffset + var->yres) > par->max_height) { in vmw_fb_check_var()
173 * off during hibernation using the par->dirty.active bool.
177 struct vmw_fb_par *par = container_of(work, struct vmw_fb_par, in vmw_fb_dirty_flush() local
179 struct vmw_private *vmw_priv = par->vmw_priv; in vmw_fb_dirty_flush()
187 struct vmw_buffer_object *vbo = par->vmw_bo; in vmw_fb_dirty_flush()
190 if (!READ_ONCE(par->dirty.active)) in vmw_fb_dirty_flush()
193 mutex_lock(&par->bo_mutex); in vmw_fb_dirty_flush()
194 cur_fb = par->set_fb; in vmw_fb_dirty_flush()
204 spin_lock_irqsave(&par->dirty.lock, irq_flags); in vmw_fb_dirty_flush()
205 if (!par->dirty.active) { in vmw_fb_dirty_flush()
206 spin_unlock_irqrestore(&par->dirty.lock, irq_flags); in vmw_fb_dirty_flush()
215 max_x = par->fb_x + cur_fb->width; in vmw_fb_dirty_flush()
216 max_y = par->fb_y + cur_fb->height; in vmw_fb_dirty_flush()
218 dst_x1 = par->dirty.x1 - par->fb_x; in vmw_fb_dirty_flush()
219 dst_y1 = par->dirty.y1 - par->fb_y; in vmw_fb_dirty_flush()
223 dst_x2 = par->dirty.x2 - par->fb_x; in vmw_fb_dirty_flush()
224 dst_y2 = par->dirty.y2 - par->fb_y; in vmw_fb_dirty_flush()
232 par->dirty.x1 = par->dirty.x2 = 0; in vmw_fb_dirty_flush()
233 par->dirty.y1 = par->dirty.y2 = 0; in vmw_fb_dirty_flush()
234 spin_unlock_irqrestore(&par->dirty.lock, irq_flags); in vmw_fb_dirty_flush()
238 (dst_y1 * par->set_fb->pitches[0] + dst_x1 * cpp); in vmw_fb_dirty_flush()
239 src_ptr = (u8 *)par->vmalloc + in vmw_fb_dirty_flush()
240 ((dst_y1 + par->fb_y) * info->fix.line_length + in vmw_fb_dirty_flush()
241 (dst_x1 + par->fb_x) * cpp); in vmw_fb_dirty_flush()
245 dst_ptr += par->set_fb->pitches[0]; in vmw_fb_dirty_flush()
259 WARN_ON_ONCE(par->set_fb->funcs->dirty(cur_fb, NULL, 0, 0, in vmw_fb_dirty_flush()
264 mutex_unlock(&par->bo_mutex); in vmw_fb_dirty_flush()
267 static void vmw_fb_dirty_mark(struct vmw_fb_par *par, in vmw_fb_dirty_mark() argument
275 spin_lock_irqsave(&par->dirty.lock, flags); in vmw_fb_dirty_mark()
276 if (par->dirty.x1 == par->dirty.x2) { in vmw_fb_dirty_mark()
277 par->dirty.x1 = x1; in vmw_fb_dirty_mark()
278 par->dirty.y1 = y1; in vmw_fb_dirty_mark()
279 par->dirty.x2 = x2; in vmw_fb_dirty_mark()
280 par->dirty.y2 = y2; in vmw_fb_dirty_mark()
283 if (par->dirty.active) in vmw_fb_dirty_mark()
284 schedule_delayed_work(&par->local_work, in vmw_fb_dirty_mark()
287 if (x1 < par->dirty.x1) in vmw_fb_dirty_mark()
288 par->dirty.x1 = x1; in vmw_fb_dirty_mark()
289 if (y1 < par->dirty.y1) in vmw_fb_dirty_mark()
290 par->dirty.y1 = y1; in vmw_fb_dirty_mark()
291 if (x2 > par->dirty.x2) in vmw_fb_dirty_mark()
292 par->dirty.x2 = x2; in vmw_fb_dirty_mark()
293 if (y2 > par->dirty.y2) in vmw_fb_dirty_mark()
294 par->dirty.y2 = y2; in vmw_fb_dirty_mark()
296 spin_unlock_irqrestore(&par->dirty.lock, flags); in vmw_fb_dirty_mark()
302 struct vmw_fb_par *par = info->par; in vmw_fb_pan_display() local
310 mutex_lock(&par->bo_mutex); in vmw_fb_pan_display()
311 par->fb_x = var->xoffset; in vmw_fb_pan_display()
312 par->fb_y = var->yoffset; in vmw_fb_pan_display()
313 if (par->set_fb) in vmw_fb_pan_display()
314 vmw_fb_dirty_mark(par, par->fb_x, par->fb_y, par->set_fb->width, in vmw_fb_pan_display()
315 par->set_fb->height); in vmw_fb_pan_display()
316 mutex_unlock(&par->bo_mutex); in vmw_fb_pan_display()
324 struct vmw_fb_par *par = info->par; in vmw_deferred_io() local
343 spin_lock_irqsave(&par->dirty.lock, flags); in vmw_deferred_io()
344 par->dirty.x1 = 0; in vmw_deferred_io()
345 par->dirty.y1 = y1; in vmw_deferred_io()
346 par->dirty.x2 = info->var.xres; in vmw_deferred_io()
347 par->dirty.y2 = y2; in vmw_deferred_io()
348 spin_unlock_irqrestore(&par->dirty.lock, flags); in vmw_deferred_io()
354 cancel_delayed_work(&par->local_work); in vmw_deferred_io()
355 schedule_delayed_work(&par->local_work, 0); in vmw_deferred_io()
371 vmw_fb_dirty_mark(info->par, rect->dx, rect->dy, in vmw_fb_fillrect()
378 vmw_fb_dirty_mark(info->par, region->dx, region->dy, in vmw_fb_copyarea()
385 vmw_fb_dirty_mark(info->par, image->dx, image->dy, in vmw_fb_imageblit()
461 static int vmw_fb_kms_detach(struct vmw_fb_par *par, in vmw_fb_kms_detach() argument
465 struct drm_framebuffer *cur_fb = par->set_fb; in vmw_fb_kms_detach()
469 if (par->set_mode) { in vmw_fb_kms_detach()
472 set.crtc = par->crtc; in vmw_fb_kms_detach()
478 set.connectors = &par->con; in vmw_fb_kms_detach()
484 drm_mode_destroy(par->vmw_priv->dev, par->set_mode); in vmw_fb_kms_detach()
485 par->set_mode = NULL; in vmw_fb_kms_detach()
490 par->set_fb = NULL; in vmw_fb_kms_detach()
493 if (par->vmw_bo && detach_bo && unref_bo) in vmw_fb_kms_detach()
494 vmw_bo_unreference(&par->vmw_bo); in vmw_fb_kms_detach()
502 struct vmw_fb_par *par = info->par; in vmw_fb_kms_framebuffer() local
519 cur_fb = par->set_fb; in vmw_fb_kms_framebuffer()
528 ret = vmw_fb_kms_detach(par, in vmw_fb_kms_framebuffer()
529 par->bo_size < new_bo_size || in vmw_fb_kms_framebuffer()
530 par->bo_size > 2*new_bo_size, in vmw_fb_kms_framebuffer()
535 if (!par->vmw_bo) { in vmw_fb_kms_framebuffer()
536 ret = vmw_fb_create_bo(par->vmw_priv, new_bo_size, in vmw_fb_kms_framebuffer()
537 &par->vmw_bo); in vmw_fb_kms_framebuffer()
543 par->bo_size = new_bo_size; in vmw_fb_kms_framebuffer()
546 vfb = vmw_kms_new_framebuffer(par->vmw_priv, par->vmw_bo, NULL, in vmw_fb_kms_framebuffer()
551 par->set_fb = &vfb->base; in vmw_fb_kms_framebuffer()
558 struct vmw_fb_par *par = info->par; in vmw_fb_set_par() local
559 struct vmw_private *vmw_priv = par->vmw_priv; in vmw_fb_set_par()
588 mutex_lock(&par->bo_mutex); in vmw_fb_set_par()
593 par->fb_x = var->xoffset; in vmw_fb_set_par()
594 par->fb_y = var->yoffset; in vmw_fb_set_par()
596 set.crtc = par->crtc; in vmw_fb_set_par()
600 set.fb = par->set_fb; in vmw_fb_set_par()
602 set.connectors = &par->con; in vmw_fb_set_par()
608 vmw_fb_dirty_mark(par, par->fb_x, par->fb_y, in vmw_fb_set_par()
609 par->set_fb->width, par->set_fb->height); in vmw_fb_set_par()
614 schedule_delayed_work(&par->local_work, 0); in vmw_fb_set_par()
617 if (par->set_mode) in vmw_fb_set_par()
618 drm_mode_destroy(vmw_priv->dev, par->set_mode); in vmw_fb_set_par()
619 par->set_mode = mode; in vmw_fb_set_par()
621 mutex_unlock(&par->bo_mutex); in vmw_fb_set_par()
642 struct vmw_fb_par *par; in vmw_fb_init() local
658 info = framebuffer_alloc(sizeof(*par), device); in vmw_fb_init()
663 * Par in vmw_fb_init()
666 par = info->par; in vmw_fb_init()
667 memset(par, 0, sizeof(*par)); in vmw_fb_init()
668 INIT_DELAYED_WORK(&par->local_work, &vmw_fb_dirty_flush); in vmw_fb_init()
669 par->vmw_priv = vmw_priv; in vmw_fb_init()
670 par->vmalloc = NULL; in vmw_fb_init()
671 par->max_width = fb_width; in vmw_fb_init()
672 par->max_height = fb_height; in vmw_fb_init()
674 ret = vmw_kms_fbdev_init_data(vmw_priv, 0, par->max_width, in vmw_fb_init()
675 par->max_height, &par->con, in vmw_fb_init()
676 &par->crtc, &init_mode); in vmw_fb_init()
686 par->vmalloc = vzalloc(fb_size); in vmw_fb_init()
687 if (unlikely(par->vmalloc == NULL)) { in vmw_fb_init()
708 info->pseudo_palette = par->pseudo_palette; in vmw_fb_init()
709 info->screen_base = (char __iomem *)par->vmalloc; in vmw_fb_init()
745 par->dirty.x1 = par->dirty.x2 = 0; in vmw_fb_init()
746 par->dirty.y1 = par->dirty.y2 = 0; in vmw_fb_init()
747 par->dirty.active = true; in vmw_fb_init()
748 spin_lock_init(&par->dirty.lock); in vmw_fb_init()
749 mutex_init(&par->bo_mutex); in vmw_fb_init()
765 vfree(par->vmalloc); in vmw_fb_init()
776 struct vmw_fb_par *par; in vmw_fb_close() local
782 par = info->par; in vmw_fb_close()
786 cancel_delayed_work_sync(&par->local_work); in vmw_fb_close()
789 mutex_lock(&par->bo_mutex); in vmw_fb_close()
790 (void) vmw_fb_kms_detach(par, true, true); in vmw_fb_close()
791 mutex_unlock(&par->bo_mutex); in vmw_fb_close()
793 vfree(par->vmalloc); in vmw_fb_close()
802 struct vmw_fb_par *par; in vmw_fb_off() local
809 par = info->par; in vmw_fb_off()
811 spin_lock_irqsave(&par->dirty.lock, flags); in vmw_fb_off()
812 par->dirty.active = false; in vmw_fb_off()
813 spin_unlock_irqrestore(&par->dirty.lock, flags); in vmw_fb_off()
816 flush_delayed_work(&par->local_work); in vmw_fb_off()
824 struct vmw_fb_par *par; in vmw_fb_on() local
831 par = info->par; in vmw_fb_on()
833 spin_lock_irqsave(&par->dirty.lock, flags); in vmw_fb_on()
834 par->dirty.active = true; in vmw_fb_on()
835 spin_unlock_irqrestore(&par->dirty.lock, flags); in vmw_fb_on()
842 schedule_delayed_work(&par->local_work, 0); in vmw_fb_on()