Lines Matching refs:fbcon
68 MODULE_PARM_DESC(nofbaccel, "Disable fbcon acceleration");
73 MODULE_PARM_DESC(fbcon_bpp, "fbcon bits-per-pixel (default: auto)");
81 struct nouveau_fbdev *fbcon = info->par;
82 struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
113 struct nouveau_fbdev *fbcon = info->par;
114 struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
145 struct nouveau_fbdev *fbcon = info->par;
146 struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
177 struct nouveau_fbdev *fbcon = info->par;
178 struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
204 struct nouveau_fbdev *fbcon = info->par;
205 struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
215 struct nouveau_fbdev *fbcon = info->par;
216 struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
248 if (drm->fbcon && drm->fbcon->helper.fbdev) {
249 drm->fbcon->saved_flags = drm->fbcon->helper.fbdev->flags;
250 drm->fbcon->helper.fbdev->flags |= FBINFO_HWACCEL_DISABLED;
260 if (drm->fbcon && drm->fbcon->helper.fbdev) {
261 drm->fbcon->helper.fbdev->flags = drm->fbcon->saved_flags;
270 struct nouveau_fbdev *fbcon = drm->fbcon;
271 if (fbcon && drm->channel) {
274 if (fbcon->helper.fbdev)
275 fbcon->helper.fbdev->flags |= FBINFO_HWACCEL_DISABLED;
279 nvif_object_fini(&fbcon->twod);
280 nvif_object_fini(&fbcon->blit);
281 nvif_object_fini(&fbcon->gdi);
282 nvif_object_fini(&fbcon->patt);
283 nvif_object_fini(&fbcon->rop);
284 nvif_object_fini(&fbcon->clip);
285 nvif_object_fini(&fbcon->surf2d);
294 struct nouveau_fbdev *fbcon = drm->fbcon;
295 struct fb_info *info = fbcon->helper.fbdev;
312 nouveau_fbcon_zfill(struct drm_device *dev, struct nouveau_fbdev *fbcon)
315 struct drm_framebuffer *fb = fbcon->helper.fb;
323 struct fb_info *info = fbcon->helper.fbdev;
326 /* Clear the entire fbcon. The drm will program every connector
354 struct nouveau_fbdev *fbcon =
356 struct drm_device *dev = fbcon->helper.dev;
411 fbcon->helper.fb = &fb->base;
413 nouveau_fbcon_zfill(dev, fbcon);
418 nfa.nfa_fb_helper = &fbcon->helper;
440 fbcon->helper.fb = &fb->base;
456 drm_fb_helper_fill_info(info, &fbcon->helper, sizes);
462 nouveau_fbcon_zfill(dev, fbcon);
486 nouveau_fbcon_destroy(struct drm_device *dev, struct nouveau_fbdev *fbcon)
488 struct nouveau_framebuffer *nouveau_fb = nouveau_framebuffer(fbcon->helper.fb);
490 drm_fb_helper_unregister_fbi(&fbcon->helper);
491 drm_fb_helper_fini(&fbcon->helper);
506 struct nouveau_fbdev *fbcon = info->par;
507 struct nouveau_drm *drm = nouveau_drm(fbcon->helper.dev);
509 NV_ERROR(drm, "GPU lockup - switching to software fbcon\n");
530 drm_fb_helper_set_suspend(&drm->fbcon->helper, state);
536 nouveau_fbcon_hotplug_resume(drm->fbcon);
547 if (!drm->fbcon)
552 * it's possible we already have the console locked. So handle fbcon
562 struct nouveau_fbdev *fbcon = drm->fbcon;
565 if (!fbcon)
568 mutex_lock(&fbcon->hotplug_lock);
572 drm_fb_helper_hotplug_event(&fbcon->helper);
583 NV_DEBUG(drm, "fbcon HPD event deferred until runtime resume\n");
584 fbcon->hotplug_waiting = true;
587 DRM_WARN("fbcon HPD event lost due to RPM failure: %d\n",
591 mutex_unlock(&fbcon->hotplug_lock);
595 nouveau_fbcon_hotplug_resume(struct nouveau_fbdev *fbcon)
599 if (!fbcon)
601 drm = nouveau_drm(fbcon->helper.dev);
603 mutex_lock(&fbcon->hotplug_lock);
604 if (fbcon
605 fbcon->hotplug_waiting = false;
607 NV_DEBUG(drm, "Handling deferred fbcon HPD events\n");
608 drm_fb_helper_hotplug_event(&fbcon->helper);
610 mutex_unlock(&fbcon->hotplug_lock);
617 struct nouveau_fbdev *fbcon;
625 fbcon = kzalloc(sizeof(struct nouveau_fbdev), GFP_KERNEL);
626 if (!fbcon)
629 drm->fbcon = fbcon;
631 mutex_init(&fbcon->hotplug_lock);
633 drm_fb_helper_prepare(dev, &fbcon->helper, &nouveau_fbcon_helper_funcs);
635 ret = drm_fb_helper_init(dev, &fbcon->helper, 4);
639 ret = drm_fb_helper_single_add_all_connectors(&fbcon->helper);
657 ret = drm_fb_helper_initial_config(&fbcon->helper, preferred_bpp);
662 if (fbcon->helper.fbdev)
663 fbcon->helper.fbdev->pixmap.buf_align = 4;
668 drm_fb_helper_fini(&fbcon->helper);
670 kfree(fbcon);
679 if (!drm->fbcon)
683 nouveau_fbcon_destroy(dev, drm->fbcon);
684 mutex_destroy(&drm->fbcon->hotplug_lock);
685 kfree(drm->fbcon);
686 drm->fbcon = NULL;