drivers/gpu/drm/openchrome/via_crtc.c |   44 +++++++++------
 drivers/gpu/drm/openchrome/via_fb.c   |   97 +++++++++++++++++++---------------
 2 files changed, 83 insertions(+), 58 deletions(-)

New commits:
commit da77d38e819145ac6129a60b3a0e20185d020458
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Tue Aug 22 11:25:39 2017 -0700

    Removed drm_framebuffer->helper_private
    
    Commit c86fb9d997428e0d55ab5a47488b6ba3bc4b5c5b made this change,
    so our side needs to change as well.
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_crtc.c 
b/drivers/gpu/drm/openchrome/via_crtc.c
index 9fd8e92a50d7..96eb17da3b2f 100644
--- a/drivers/gpu/drm/openchrome/via_crtc.c
+++ b/drivers/gpu/drm/openchrome/via_crtc.c
@@ -1231,9 +1231,11 @@ via_iga1_crtc_mode_set_base(struct drm_crtc *crtc, int 
x, int y,
                         struct drm_framebuffer *old_fb)
 {
     struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
-    struct drm_framebuffer *new_fb = crtc->primary->fb;
     struct ttm_buffer_object *bo;
-    struct drm_gem_object *obj;
+    struct via_framebuffer *via_fb =
+            container_of(crtc->primary->fb, struct via_framebuffer, fb);
+    struct drm_framebuffer *new_fb = &via_fb->fb;
+    struct drm_gem_object *gem_obj = via_fb->gem_obj;
     int ret = 0;
 
     DRM_DEBUG("Entered via_iga1_crtc_mode_set_base.\n");
@@ -1248,8 +1250,8 @@ via_iga1_crtc_mode_set_base(struct drm_crtc *crtc, int x, 
int y,
     if (new_fb == old_fb)
         return ret;
 
-    obj = new_fb->helper_private;
-    bo = ttm_gem_mapping(obj);
+    gem_obj = via_fb->gem_obj;
+    bo = ttm_gem_mapping(gem_obj);
 
     ret = via_bo_pin(bo, NULL);
     if (unlikely(ret)) {
@@ -1267,8 +1269,10 @@ via_iga1_crtc_mode_set_base(struct drm_crtc *crtc, int 
x, int y,
 
     /* Free the old framebuffer if it exist */
     if (old_fb) {
-        obj = old_fb->helper_private;
-        bo = ttm_gem_mapping(obj);
+        via_fb = container_of(old_fb,
+                                struct via_framebuffer, fb);
+        gem_obj = via_fb->gem_obj;
+        bo = ttm_gem_mapping(gem_obj);
 
         ret = via_bo_unpin(bo, NULL);
         if (unlikely(ret))
@@ -1287,8 +1291,10 @@ via_iga1_mode_set_base_atomic(struct drm_crtc *crtc,
     u32 pitch = y * fb->pitches[0] + ((x * fb->bits_per_pixel) >> 3), addr;
     struct via_crtc *iga = container_of(crtc, struct via_crtc, base);
     struct via_device *dev_priv = crtc->dev->dev_private;
-    struct drm_gem_object *obj = fb->helper_private;
-    struct ttm_buffer_object *bo = ttm_gem_mapping(obj);
+    struct via_framebuffer *via_fb =
+            container_of(fb, struct via_framebuffer, fb);
+    struct drm_gem_object *gem_obj = via_fb->gem_obj;
+    struct ttm_buffer_object *bo = ttm_gem_mapping(gem_obj);
 
     if ((fb->depth != 8) && (fb->depth != 16) && (fb->depth != 24)
             && (fb->depth != 32)) {
@@ -1544,9 +1550,11 @@ via_iga2_crtc_mode_set_base(struct drm_crtc *crtc, int 
x, int y,
                         struct drm_framebuffer *old_fb)
 {
     struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
-    struct drm_framebuffer *new_fb = crtc->primary->fb;
     struct ttm_buffer_object *bo;
-    struct drm_gem_object *obj;
+    struct via_framebuffer *via_fb =
+            container_of(crtc->primary->fb, struct via_framebuffer, fb);
+    struct drm_framebuffer *new_fb = &via_fb->fb;
+    struct drm_gem_object *gem_obj = via_fb->gem_obj;
     int ret = 0;
 
     DRM_DEBUG("Entered via_iga2_crtc_mode_set_base.\n");
@@ -1561,8 +1569,8 @@ via_iga2_crtc_mode_set_base(struct drm_crtc *crtc, int x, 
int y,
     if (new_fb == old_fb)
         return ret;
 
-    obj = new_fb->helper_private;
-    bo = ttm_gem_mapping(obj);
+    gem_obj = via_fb->gem_obj;
+    bo = ttm_gem_mapping(gem_obj);
 
     ret = via_bo_pin(bo, NULL);
     if (unlikely(ret)) {
@@ -1580,8 +1588,10 @@ via_iga2_crtc_mode_set_base(struct drm_crtc *crtc, int 
x, int y,
 
     /* Free the old framebuffer if it exist */
     if (old_fb) {
-        obj = old_fb->helper_private;
-        bo = ttm_gem_mapping(obj);
+        via_fb = container_of(old_fb,
+                                struct via_framebuffer, fb);
+        gem_obj = via_fb->gem_obj;
+        bo = ttm_gem_mapping(gem_obj);
 
         ret = via_bo_unpin(bo, NULL);
         if (unlikely(ret))
@@ -1600,8 +1610,10 @@ via_iga2_mode_set_base_atomic(struct drm_crtc *crtc,
     u32 pitch = y * fb->pitches[0] + ((x * fb->bits_per_pixel) >> 3), addr;
     struct via_crtc *iga = container_of(crtc, struct via_crtc, base);
     struct via_device *dev_priv = crtc->dev->dev_private;
-    struct drm_gem_object *obj = fb->helper_private;
-    struct ttm_buffer_object *bo = ttm_gem_mapping(obj);
+    struct via_framebuffer *via_fb =
+            container_of(fb, struct via_framebuffer, fb);
+    struct drm_gem_object *gem_obj = via_fb->gem_obj;
+    struct ttm_buffer_object *bo = ttm_gem_mapping(gem_obj);
 
     if ((fb->depth != 8) && (fb->depth != 16)
             && (fb->depth != 24) && (fb->depth != 32)) {
diff --git a/drivers/gpu/drm/openchrome/via_fb.c 
b/drivers/gpu/drm/openchrome/via_fb.c
index 96cf1f51525e..fbbe710c4c70 100644
--- a/drivers/gpu/drm/openchrome/via_fb.c
+++ b/drivers/gpu/drm/openchrome/via_fb.c
@@ -915,22 +915,27 @@ via_user_framebuffer_create_handle(struct drm_framebuffer 
*fb,
                                        struct drm_file *file_priv,
                                        unsigned int *handle)
 {
-       struct drm_gem_object *obj = fb->helper_private;
+       struct via_framebuffer *via_fb =
+                                               container_of(fb, struct 
via_framebuffer, fb);
+       struct drm_gem_object *gem_obj = via_fb->gem_obj;
 
-       return drm_gem_handle_create(file_priv, obj, handle);
+       return drm_gem_handle_create(file_priv, gem_obj, handle);
 }
 
 static void
 via_user_framebuffer_destroy(struct drm_framebuffer *fb)
 {
-       struct drm_gem_object *obj = fb->helper_private;
+       struct via_framebuffer *via_fb =
+                                               container_of(fb, struct 
via_framebuffer, fb);
+       struct drm_gem_object *gem_obj = via_fb->gem_obj;
 
-       if (obj) {
-               drm_gem_object_unreference_unlocked(obj);
-               fb->helper_private = NULL;
+       if (gem_obj) {
+               drm_gem_object_unreference_unlocked(gem_obj);
+               via_fb->gem_obj = NULL;
        }
+
        drm_framebuffer_cleanup(fb);
-       kfree(fb);
+       kfree(via_fb);
 }
 
 static const struct drm_framebuffer_funcs via_fb_funcs = {
@@ -951,30 +956,34 @@ via_user_framebuffer_create(struct drm_device *dev,
                                struct drm_file *file_priv,
                                struct drm_mode_fb_cmd2 *mode_cmd)
 {
-       struct drm_framebuffer *fb;
-       struct drm_gem_object *obj;
+       struct via_framebuffer *via_fb;
+       struct drm_gem_object *gem_obj;
        int ret;
 
-       obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handles[0]);
-       if (obj ==  NULL) {
+       gem_obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handles[0]);
+       if (!gem_obj) {
                DRM_ERROR("No GEM object found for handle 0x%08X\n",
                                mode_cmd->handles[0]);
                return ERR_PTR(-ENOENT);
        }
 
-       fb = kzalloc(sizeof(*fb), GFP_KERNEL);
-       if (fb == NULL)
+       via_fb = kzalloc(sizeof(*via_fb), GFP_KERNEL);
+       if (!via_fb) {
                return ERR_PTR(-ENOMEM);
+       }
 
-       ret = drm_framebuffer_init(dev, fb, &via_fb_funcs);
+       via_fb->gem_obj = gem_obj;
+
+       ret = drm_framebuffer_init(dev, &via_fb->fb, &via_fb_funcs);
        if (ret) {
-               drm_gem_object_unreference(obj);
-               kfree(fb);
+               drm_gem_object_unreference(gem_obj);
+               kfree(via_fb);
                return ERR_PTR(ret);
        }
-       fb->helper_private = obj;
-       drm_helper_mode_fill_fb_struct(fb, mode_cmd);
-       return fb;
+
+       drm_helper_mode_fill_fb_struct(&via_fb->fb, mode_cmd);
+
+       return &via_fb->fb;
 }
 
 static const struct drm_mode_config_funcs via_mode_funcs = {
@@ -990,8 +999,8 @@ via_fb_probe(struct drm_fb_helper *helper,
        struct via_device *dev_priv = helper->dev->dev_private;
        struct ttm_bo_kmap_obj *kmap = &ttmfb->kmap;
        struct fb_info *info = helper->fbdev;
-       struct drm_framebuffer *fb = NULL;
-       struct drm_gem_object *obj = NULL;
+       struct via_framebuffer *via_fb;
+       struct drm_gem_object *gem_obj;
        struct drm_mode_fb_cmd2 mode_cmd;
        struct apertures_struct *ap;
        int size, ret = 0;
@@ -1000,9 +1009,10 @@ via_fb_probe(struct drm_fb_helper *helper,
        if (helper->fb)
                return ret;
 
-       fb = kzalloc(sizeof(*fb), GFP_KERNEL);
-       if (fb == NULL)
+       via_fb = kzalloc(sizeof(*via_fb), GFP_KERNEL);
+       if (!via_fb) {
                return -ENOMEM;
+       }
 
        mode_cmd.height = sizes->surface_height;
        mode_cmd.width = sizes->surface_width;
@@ -1013,14 +1023,14 @@ via_fb_probe(struct drm_fb_helper *helper,
        size = mode_cmd.pitches[0] * mode_cmd.height;
        size = ALIGN(size, PAGE_SIZE);
 
-       obj = ttm_gem_create(helper->dev, &dev_priv->bdev, ttm_bo_type_kernel,
+       gem_obj = ttm_gem_create(helper->dev, &dev_priv->bdev, 
ttm_bo_type_kernel,
                             TTM_PL_FLAG_VRAM, false, 1, PAGE_SIZE, size);
-       if (unlikely(IS_ERR(obj))) {
-               ret = PTR_ERR(obj);
+       if (unlikely(IS_ERR(gem_obj))) {
+               ret = PTR_ERR(gem_obj);
                goto out_err;
        }
 
-       kmap->bo = ttm_gem_mapping(obj);
+       kmap->bo = ttm_gem_mapping(gem_obj);
        if (kmap->bo == NULL)
                goto out_err;
 
@@ -1028,14 +1038,14 @@ via_fb_probe(struct drm_fb_helper *helper,
        if (unlikely(ret))
                goto out_err;
 
-       ret = drm_framebuffer_init(helper->dev, fb, &via_fb_funcs);
+       ret = drm_framebuffer_init(helper->dev, &via_fb->fb, &via_fb_funcs);
        if (unlikely(ret))
                goto out_err;
 
-       fb->helper_private = obj;
-       ttmfb->base.fb = fb;
+       via_fb->gem_obj = gem_obj;
+       ttmfb->base.fb = &via_fb->fb;
 
-       drm_helper_mode_fill_fb_struct(fb, &mode_cmd);
+       drm_helper_mode_fill_fb_struct(&via_fb->fb, &mode_cmd);
        info->fix.smem_start = kmap->bo->mem.bus.base +
                                kmap->bo->mem.bus.offset;
        info->fix.smem_len = info->screen_size = size;
@@ -1044,7 +1054,7 @@ via_fb_probe(struct drm_fb_helper *helper,
        /* setup aperture base/size for takeover (vesafb, efifb etc) */
        ap = alloc_apertures(1);
        if (!ap) {
-               drm_framebuffer_cleanup(fb);
+               drm_framebuffer_cleanup(&via_fb->fb);
                goto out_err;
        }
        ap->ranges[0].size = kmap->bo->bdev->man[kmap->bo->mem.mem_type].size;
@@ -1052,7 +1062,7 @@ via_fb_probe(struct drm_fb_helper *helper,
        info->apertures = ap;
 
        drm_fb_helper_fill_var(info, helper, sizes->fb_width, sizes->fb_height);
-       drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth);
+       drm_fb_helper_fill_fix(info, via_fb->fb.pitches[0], via_fb->fb.depth);
        ret = 1;
 out_err:
        if (ret < 0) {
@@ -1061,11 +1071,12 @@ out_err:
                        ttm_bo_unref(&kmap->bo);
                }
 
-               if (obj) {
-                       drm_gem_object_unreference_unlocked(obj);
-                       helper->fb->helper_private = NULL;
+               if (gem_obj) {
+                       drm_gem_object_unreference_unlocked(gem_obj);
+                       via_fb->gem_obj = NULL;
                }
-               kfree(fb);
+
+               kfree(via_fb);
        }
        return ret;
 }
@@ -1222,7 +1233,9 @@ via_framebuffer_fini(struct drm_device *dev)
        struct via_device *dev_priv = dev->dev_private;
        struct drm_fb_helper *helper = dev_priv->helper;
        struct ttm_fb_helper *ttmfb;
-       struct drm_gem_object *obj;
+       struct drm_gem_object *gem_obj;
+       struct via_framebuffer *via_fb =
+                       container_of(helper->fb, struct via_framebuffer, fb);
        struct fb_info *info;
 
        if (!helper)
@@ -1246,10 +1259,10 @@ via_framebuffer_fini(struct drm_device *dev)
                ttm_bo_unref(&ttmfb->kmap.bo);
        }
 
-       obj = helper->fb->helper_private;
-       if (obj) {
-               drm_gem_object_unreference_unlocked(obj);
-               helper->fb->helper_private = NULL;
+       gem_obj = via_fb->gem_obj;
+       if (gem_obj) {
+               drm_gem_object_unreference_unlocked(gem_obj);
+               via_fb->gem_obj = NULL;
        }
        drm_fb_helper_fini(helper);
        drm_framebuffer_cleanup(helper->fb);
_______________________________________________
Openchrome-devel mailing list
Openchrome-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/openchrome-devel

Reply via email to