* fbdev funcs, to implement legacy fbdev interface on top of drm driver
*/
-#define to_msm_fbdev(x) container_of(x, struct msm_fbdev, base)
-
-struct msm_fbdev {
- struct drm_fb_helper base;
-};
-
static int msm_fbdev_mmap(struct fb_info *info, struct vm_area_struct *vma)
{
struct drm_fb_helper *helper = (struct drm_fb_helper *)info->par;
struct drm_fb_helper *msm_fbdev_init(struct drm_device *dev)
{
struct msm_drm_private *priv = dev->dev_private;
- struct msm_fbdev *fbdev;
struct drm_fb_helper *helper;
int ret;
- fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL);
- if (!fbdev)
+ helper = kzalloc(sizeof(*helper), GFP_KERNEL);
+ if (!helper)
return NULL;
- helper = &fbdev->base;
-
drm_fb_helper_prepare(dev, helper, 32, &msm_fb_helper_funcs);
ret = drm_fb_helper_init(dev, helper);
drm_fb_helper_fini(helper);
fail:
drm_fb_helper_unprepare(helper);
- kfree(fbdev);
+ kfree(helper);
return NULL;
}
struct msm_drm_private *priv = dev->dev_private;
struct drm_fb_helper *helper = priv->fbdev;
struct drm_framebuffer *fb = helper->fb;
- struct msm_fbdev *fbdev;
DBG();
drm_fb_helper_fini(helper);
- fbdev = to_msm_fbdev(priv->fbdev);
-
/* this will free the backing object */
if (fb) {
struct drm_gem_object *bo = msm_framebuffer_bo(fb, 0);
}
drm_fb_helper_unprepare(helper);
- kfree(fbdev);
+ kfree(helper);
priv->fbdev = NULL;
}