Commit 0a8ec2ed authored by Thomas Zimmermann's avatar Thomas Zimmermann Committed by Patrik Jakobsson

drm/gma500: Store framebuffer in struct drm_fb_helper

The gma500 driver stores the console framebuffer in struct psb_fbdev.
Moving it into struct drm_fb_helper will allow for removal of struct
psb_fbdev.
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: default avatarPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191122100545.16812-6-tzimmermann@suse.de
parent 0471c9f5
...@@ -227,8 +227,8 @@ static void psbfb_copyarea_accel(struct fb_info *info, ...@@ -227,8 +227,8 @@ static void psbfb_copyarea_accel(struct fb_info *info,
const struct fb_copyarea *a) const struct fb_copyarea *a)
{ {
struct psb_fbdev *fbdev = info->par; struct psb_fbdev *fbdev = info->par;
struct drm_device *dev = fbdev->fb.dev;
struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb; struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
struct drm_device *dev = fb->dev;
struct drm_psb_private *dev_priv = dev->dev_private; struct drm_psb_private *dev_priv = dev->dev_private;
uint32_t offset; uint32_t offset;
uint32_t stride; uint32_t stride;
...@@ -309,7 +309,8 @@ void psbfb_copyarea(struct fb_info *info, ...@@ -309,7 +309,8 @@ void psbfb_copyarea(struct fb_info *info,
int psbfb_sync(struct fb_info *info) int psbfb_sync(struct fb_info *info)
{ {
struct psb_fbdev *fbdev = info->par; struct psb_fbdev *fbdev = info->par;
struct drm_device *dev = fbdev->fb.dev; struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
struct drm_device *dev = fb->dev;
struct drm_psb_private *dev_priv = dev->dev_private; struct drm_psb_private *dev_priv = dev->dev_private;
unsigned long _end = jiffies + HZ; unsigned long _end = jiffies + HZ;
int busy = 0; int busy = 0;
......
...@@ -78,7 +78,7 @@ static int psbfb_setcolreg(unsigned regno, unsigned red, unsigned green, ...@@ -78,7 +78,7 @@ static int psbfb_setcolreg(unsigned regno, unsigned red, unsigned green,
static int psbfb_pan(struct fb_var_screeninfo *var, struct fb_info *info) static int psbfb_pan(struct fb_var_screeninfo *var, struct fb_info *info)
{ {
struct psb_fbdev *fbdev = info->par; struct psb_fbdev *fbdev = info->par;
struct drm_framebuffer *fb = &fbdev->fb; struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
struct drm_device *dev = fb->dev; struct drm_device *dev = fb->dev;
struct gtt_range *gtt = to_gtt_range(fb->obj[0]); struct gtt_range *gtt = to_gtt_range(fb->obj[0]);
...@@ -146,7 +146,7 @@ static const struct vm_operations_struct psbfb_vm_ops = { ...@@ -146,7 +146,7 @@ static const struct vm_operations_struct psbfb_vm_ops = {
static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma) static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
{ {
struct psb_fbdev *fbdev = info->par; struct psb_fbdev *fbdev = info->par;
struct drm_framebuffer *fb = &fbdev->fb; struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
if (vma->vm_pgoff != 0) if (vma->vm_pgoff != 0)
return -EINVAL; return -EINVAL;
...@@ -304,7 +304,7 @@ static int psbfb_create(struct psb_fbdev *fbdev, ...@@ -304,7 +304,7 @@ static int psbfb_create(struct psb_fbdev *fbdev,
struct drm_device *dev = fbdev->psb_fb_helper.dev; struct drm_device *dev = fbdev->psb_fb_helper.dev;
struct drm_psb_private *dev_priv = dev->dev_private; struct drm_psb_private *dev_priv = dev->dev_private;
struct fb_info *info; struct fb_info *info;
struct drm_framebuffer *fb = &fbdev->fb; struct drm_framebuffer *fb;
struct drm_mode_fb_cmd2 mode_cmd; struct drm_mode_fb_cmd2 mode_cmd;
int size; int size;
int ret; int ret;
...@@ -377,9 +377,11 @@ static int psbfb_create(struct psb_fbdev *fbdev, ...@@ -377,9 +377,11 @@ static int psbfb_create(struct psb_fbdev *fbdev,
mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth); mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth);
ret = psb_framebuffer_init(dev, fb, &mode_cmd, &backing->gem); fb = psb_framebuffer_create(dev, &mode_cmd, &backing->gem);
if (ret) if (IS_ERR(fb)) {
ret = PTR_ERR(fb);
goto out; goto out;
}
fbdev->psb_fb_helper.fb = fb; fbdev->psb_fb_helper.fb = fb;
...@@ -481,7 +483,7 @@ static const struct drm_fb_helper_funcs psb_fb_helper_funcs = { ...@@ -481,7 +483,7 @@ static const struct drm_fb_helper_funcs psb_fb_helper_funcs = {
static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev) static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
{ {
struct drm_framebuffer *fb = &fbdev->fb; struct drm_framebuffer *fb = fbdev->psb_fb_helper.fb;
drm_fb_helper_unregister_fbi(&fbdev->psb_fb_helper); drm_fb_helper_unregister_fbi(&fbdev->psb_fb_helper);
...@@ -491,6 +493,8 @@ static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev) ...@@ -491,6 +493,8 @@ static int psb_fbdev_destroy(struct drm_device *dev, struct psb_fbdev *fbdev)
if (fb->obj[0]) if (fb->obj[0])
drm_gem_object_put_unlocked(fb->obj[0]); drm_gem_object_put_unlocked(fb->obj[0]);
kfree(fb);
return 0; return 0;
} }
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
struct psb_fbdev { struct psb_fbdev {
struct drm_fb_helper psb_fb_helper; /* must be first */ struct drm_fb_helper psb_fb_helper; /* must be first */
struct drm_framebuffer fb;
}; };
extern int gma_connector_clones(struct drm_device *dev, int type_mask); extern int gma_connector_clones(struct drm_device *dev, int type_mask);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment