Lines Matching defs:fbdev
207 struct tegra_fbdev *fbdev = to_tegra_fbdev(helper);
242 fbdev->fb = tegra_fb_alloc(drm, &cmd, &bo, 1);
243 if (IS_ERR(fbdev->fb)) {
244 err = PTR_ERR(fbdev->fb);
248 return PTR_ERR(fbdev->fb);
251 fb = fbdev->fb;
253 helper->fbdev = info;
291 struct tegra_fbdev *fbdev;
293 fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL);
294 if (!fbdev) {
295 dev_err(drm->dev, "failed to allocate DRM fbdev\n");
299 drm_fb_helper_prepare(drm, &fbdev->base, &tegra_fb_helper_funcs);
301 return fbdev;
304 static void tegra_fbdev_free(struct tegra_fbdev *fbdev)
306 kfree(fbdev);
309 static int tegra_fbdev_init(struct tegra_fbdev *fbdev,
314 struct drm_device *drm = fbdev->base.dev;
317 err = drm_fb_helper_init(drm, &fbdev->base);
324 err = drm_fb_helper_initial_config(&fbdev->base, preferred_bpp);
334 drm_fb_helper_fini(&fbdev->base);
338 static void tegra_fbdev_exit(struct tegra_fbdev *fbdev)
340 drm_fb_helper_unregister_fbi(&fbdev->base);
342 if (fbdev->fb) {
343 struct tegra_bo *bo = tegra_fb_get_plane(fbdev->fb, 0);
345 /* Undo the special mapping we made in fbdev probe. */
351 drm_framebuffer_remove(fbdev->fb);
354 drm_fb_helper_fini(&fbdev->base);
355 tegra_fbdev_free(fbdev);
364 tegra->fbdev = tegra_fbdev_create(drm);
365 if (IS_ERR(tegra->fbdev))
366 return PTR_ERR(tegra->fbdev);
377 tegra_fbdev_free(tegra->fbdev);
387 err = tegra_fbdev_init(tegra->fbdev, 32, drm->mode_config.num_crtc,
401 tegra_fbdev_exit(tegra->fbdev);