Lines Matching refs:fbdev
200 struct tegra_fbdev *fbdev = to_tegra_fbdev(helper); in tegra_fbdev_probe() local
234 fbdev->fb = tegra_fb_alloc(drm, &cmd, &bo, 1); in tegra_fbdev_probe()
235 if (IS_ERR(fbdev->fb)) { in tegra_fbdev_probe()
236 err = PTR_ERR(fbdev->fb); in tegra_fbdev_probe()
243 fb = &fbdev->fb->base; in tegra_fbdev_probe()
245 helper->fbdev = info; in tegra_fbdev_probe()
289 struct tegra_fbdev *fbdev; in tegra_fbdev_create() local
291 fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL); in tegra_fbdev_create()
292 if (!fbdev) { in tegra_fbdev_create()
297 drm_fb_helper_prepare(drm, &fbdev->base, &tegra_fb_helper_funcs); in tegra_fbdev_create()
299 return fbdev; in tegra_fbdev_create()
302 static void tegra_fbdev_free(struct tegra_fbdev *fbdev) in tegra_fbdev_free() argument
304 kfree(fbdev); in tegra_fbdev_free()
307 static int tegra_fbdev_init(struct tegra_fbdev *fbdev, in tegra_fbdev_init() argument
312 struct drm_device *drm = fbdev->base.dev; in tegra_fbdev_init()
315 err = drm_fb_helper_init(drm, &fbdev->base, num_crtc, max_connectors); in tegra_fbdev_init()
322 err = drm_fb_helper_single_add_all_connectors(&fbdev->base); in tegra_fbdev_init()
328 err = drm_fb_helper_initial_config(&fbdev->base, preferred_bpp); in tegra_fbdev_init()
338 drm_fb_helper_fini(&fbdev->base); in tegra_fbdev_init()
342 static void tegra_fbdev_exit(struct tegra_fbdev *fbdev) in tegra_fbdev_exit() argument
344 drm_fb_helper_unregister_fbi(&fbdev->base); in tegra_fbdev_exit()
345 drm_fb_helper_release_fbi(&fbdev->base); in tegra_fbdev_exit()
347 if (fbdev->fb) { in tegra_fbdev_exit()
348 drm_framebuffer_unregister_private(&fbdev->fb->base); in tegra_fbdev_exit()
349 drm_framebuffer_remove(&fbdev->fb->base); in tegra_fbdev_exit()
352 drm_fb_helper_fini(&fbdev->base); in tegra_fbdev_exit()
353 tegra_fbdev_free(fbdev); in tegra_fbdev_exit()
356 void tegra_fbdev_restore_mode(struct tegra_fbdev *fbdev) in tegra_fbdev_restore_mode() argument
358 if (fbdev) in tegra_fbdev_restore_mode()
359 drm_fb_helper_restore_fbdev_mode_unlocked(&fbdev->base); in tegra_fbdev_restore_mode()
366 if (tegra->fbdev) in tegra_fb_output_poll_changed()
367 drm_fb_helper_hotplug_event(&tegra->fbdev->base); in tegra_fb_output_poll_changed()
376 tegra->fbdev = tegra_fbdev_create(drm); in tegra_drm_fb_prepare()
377 if (IS_ERR(tegra->fbdev)) in tegra_drm_fb_prepare()
378 return PTR_ERR(tegra->fbdev); in tegra_drm_fb_prepare()
389 tegra_fbdev_free(tegra->fbdev); in tegra_drm_fb_free()
399 err = tegra_fbdev_init(tegra->fbdev, 32, drm->mode_config.num_crtc, in tegra_drm_fb_init()
413 tegra_fbdev_exit(tegra->fbdev); in tegra_drm_fb_exit()