drivers/gpu/drm/openchrome/via_display.c |   14 ++-
 drivers/gpu/drm/openchrome/via_fb.c      |  115 +++++++++++++++----------------
 2 files changed, 66 insertions(+), 63 deletions(-)

New commits:
commit cc7124bc65aa04bb03338d8ff11c54e81da8650e
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Tue Aug 22 12:41:41 2017 -0700

    Rename viafb_ops to via_fb_ops
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_fb.c 
b/drivers/gpu/drm/openchrome/via_fb.c
index 80d6d72ba93a..49de88037ae5 100644
--- a/drivers/gpu/drm/openchrome/via_fb.c
+++ b/drivers/gpu/drm/openchrome/via_fb.c
@@ -1029,6 +1029,20 @@ int drmfb_helper_pan_display(struct fb_var_screeninfo 
*var,
        return ret;
 }
 
+static struct fb_ops via_fb_ops = {
+       .owner          = THIS_MODULE,
+       .fb_check_var   = drm_fb_helper_check_var,
+       .fb_set_par     = drm_fb_helper_set_par,
+       .fb_fillrect    = cfb_fillrect,
+       .fb_copyarea    = cfb_copyarea,
+       .fb_imageblit   = cfb_imageblit,
+       .fb_pan_display = drmfb_helper_pan_display,
+       .fb_blank       = drm_fb_helper_blank,
+       .fb_setcmap     = drm_fb_helper_setcmap,
+       .fb_debug_enter = drm_fb_helper_debug_enter,
+       .fb_debug_leave = drm_fb_helper_debug_leave,
+};
+
 static int
 via_fb_probe(struct drm_fb_helper *helper,
                struct drm_fb_helper_surface_size *sizes)
@@ -1158,20 +1172,6 @@ static struct drm_fb_helper_funcs via_fb_helper_funcs = {
        .fb_probe = via_fb_probe,
 };
 
-static struct fb_ops viafb_ops = {
-       .owner          = THIS_MODULE,
-       .fb_check_var   = drm_fb_helper_check_var,
-       .fb_set_par     = drm_fb_helper_set_par,
-       .fb_fillrect    = cfb_fillrect,
-       .fb_copyarea    = cfb_copyarea,
-       .fb_imageblit   = cfb_imageblit,
-       .fb_pan_display = drmfb_helper_pan_display,
-       .fb_blank       = drm_fb_helper_blank,
-       .fb_setcmap     = drm_fb_helper_setcmap,
-       .fb_debug_enter = drm_fb_helper_debug_enter,
-       .fb_debug_leave = drm_fb_helper_debug_leave,
-};
-
 int
 via_fbdev_init(struct drm_device *dev, struct drm_fb_helper **ptr)
 {
@@ -1194,7 +1194,7 @@ via_fbdev_init(struct drm_device *dev, struct 
drm_fb_helper **ptr)
        strcpy(info->fix.id, dev->driver->name);
        strcat(info->fix.id, "drmfb");
        info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT;
-       info->fbops = &viafb_ops;
+       info->fbops = &via_fb_ops;
 
        info->pixmap.size = 64*1024;
        info->pixmap.buf_align = 8;
commit 6ea961502c12e21d80a8f0ddf446d79a94b24df2
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Tue Aug 22 12:39:17 2017 -0700

    Move drmfb_helper_pan_display to another part of the file
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_fb.c 
b/drivers/gpu/drm/openchrome/via_fb.c
index 41b1bca0b44c..80d6d72ba93a 100644
--- a/drivers/gpu/drm/openchrome/via_fb.c
+++ b/drivers/gpu/drm/openchrome/via_fb.c
@@ -990,6 +990,45 @@ static const struct drm_mode_config_funcs via_mode_funcs = 
{
        .output_poll_changed    = via_output_poll_changed
 };
 
+int drmfb_helper_pan_display(struct fb_var_screeninfo *var,
+                               struct fb_info *info)
+{
+       struct drm_fb_helper *fb_helper = info->par;
+       struct drm_crtc_helper_funcs *crtc_funcs;
+       struct drm_device *dev = fb_helper->dev;
+       struct drm_mode_set *modeset;
+       struct drm_crtc *crtc;
+       int ret = -ENXIO, i;
+
+       mutex_lock(&dev->mode_config.mutex);
+       for (i = 0; i < fb_helper->crtc_count; i++) {
+               crtc = fb_helper->crtc_info[i].mode_set.crtc;
+               crtc_funcs = crtc->helper_private;
+
+               if (!crtc_funcs->mode_set_base)
+                       continue;
+
+               modeset = &fb_helper->crtc_info[i].mode_set;
+               modeset->x = var->xoffset;
+               modeset->y = var->yoffset;
+
+               if (modeset->num_connectors) {
+                       ret = crtc_funcs->mode_set_base(crtc, modeset->x,
+                                                       modeset->y,
+                                                       crtc->primary->fb);
+                       if (!ret) {
+                               info->flags |= FBINFO_HWACCEL_YPAN;
+                               info->var.xoffset = var->xoffset;
+                               info->var.yoffset = var->yoffset;
+                       }
+               }
+       }
+       if (ret)
+               info->flags &= ~FBINFO_HWACCEL_YPAN;
+       mutex_unlock(&dev->mode_config.mutex);
+       return ret;
+}
+
 static int
 via_fb_probe(struct drm_fb_helper *helper,
                struct drm_fb_helper_surface_size *sizes)
@@ -1119,46 +1158,6 @@ static struct drm_fb_helper_funcs via_fb_helper_funcs = {
        .fb_probe = via_fb_probe,
 };
 
-int
-drmfb_helper_pan_display(struct fb_var_screeninfo *var,
-                               struct fb_info *info)
-{
-       struct drm_fb_helper *fb_helper = info->par;
-       struct drm_crtc_helper_funcs *crtc_funcs;
-       struct drm_device *dev = fb_helper->dev;
-       struct drm_mode_set *modeset;
-       struct drm_crtc *crtc;
-       int ret = -ENXIO, i;
-
-       mutex_lock(&dev->mode_config.mutex);
-       for (i = 0; i < fb_helper->crtc_count; i++) {
-               crtc = fb_helper->crtc_info[i].mode_set.crtc;
-               crtc_funcs = crtc->helper_private;
-
-               if (!crtc_funcs->mode_set_base)
-                       continue;
-
-               modeset = &fb_helper->crtc_info[i].mode_set;
-               modeset->x = var->xoffset;
-               modeset->y = var->yoffset;
-
-               if (modeset->num_connectors) {
-                       ret = crtc_funcs->mode_set_base(crtc, modeset->x,
-                                                       modeset->y,
-                                                       crtc->primary->fb);
-                       if (!ret) {
-                               info->flags |= FBINFO_HWACCEL_YPAN;
-                               info->var.xoffset = var->xoffset;
-                               info->var.yoffset = var->yoffset;
-                       }
-               }
-       }
-       if (ret)
-               info->flags &= ~FBINFO_HWACCEL_YPAN;
-       mutex_unlock(&dev->mode_config.mutex);
-       return ret;
-}
-
 static struct fb_ops viafb_ops = {
        .owner          = THIS_MODULE,
        .fb_check_var   = drm_fb_helper_check_var,
commit 0432ca0c343cbd55ebffb5d096e99f86be8e0ac0
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Tue Aug 22 12:37:16 2017 -0700

    Alter the error handling of via_fbdev_init()
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_display.c 
b/drivers/gpu/drm/openchrome/via_display.c
index dc52b3195193..e22113436b0b 100644
--- a/drivers/gpu/drm/openchrome/via_display.c
+++ b/drivers/gpu/drm/openchrome/via_display.c
@@ -539,7 +539,7 @@ via_modeset_init(struct drm_device *dev)
 
        /* Set up the framebuffer device */
        ret = via_fbdev_init(dev, &dev_priv->helper);
-       if (!ret) {
+       if (ret) {
                goto exit;
        }
 
commit bc968b4688636f989074a7a79b16c43f3f9fd850
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Tue Aug 22 11:35:14 2017 -0700

    Calling drm_kms_helper_poll_init() from via_modeset_init
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_display.c 
b/drivers/gpu/drm/openchrome/via_display.c
index 324d47d23e64..dc52b3195193 100644
--- a/drivers/gpu/drm/openchrome/via_display.c
+++ b/drivers/gpu/drm/openchrome/via_display.c
@@ -496,6 +496,7 @@ int
 via_modeset_init(struct drm_device *dev)
 {
        struct via_device *dev_priv = dev->dev_private;
+       int ret = 0;
        int i;
 
        drm_mode_config_init(dev);
@@ -536,10 +537,15 @@ via_modeset_init(struct drm_device *dev)
                break;
        }
 
-       /*
-        * Set up the framebuffer device
-        */
-       return via_fbdev_init(dev, &dev_priv->helper);
+       /* Set up the framebuffer device */
+       ret = via_fbdev_init(dev, &dev_priv->helper);
+       if (!ret) {
+               goto exit;
+       }
+
+       drm_kms_helper_poll_init(dev);
+exit:
+       return ret;
 }
 
 void via_modeset_fini(struct drm_device *dev)
diff --git a/drivers/gpu/drm/openchrome/via_fb.c 
b/drivers/gpu/drm/openchrome/via_fb.c
index c9182d9ce0b7..41b1bca0b44c 100644
--- a/drivers/gpu/drm/openchrome/via_fb.c
+++ b/drivers/gpu/drm/openchrome/via_fb.c
@@ -1218,7 +1218,6 @@ via_fbdev_init(struct drm_device *dev, struct 
drm_fb_helper **ptr)
        drm_fb_helper_single_add_all_connectors(&helper->base);
        drm_helper_disable_unused_functions(dev);
        drm_fb_helper_initial_config(&helper->base, 32);
-       drm_kms_helper_poll_init(dev);
        *ptr = (struct drm_fb_helper *) helper;
 out_err:
        if (ret)
commit 45ac5c19022551ce2c5ad7fb7339b808217755e6
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Tue Aug 22 11:32:48 2017 -0700

    Calling drm_helper_mode_fill_fb_struct before FB initialization
    
    This bug is a logical (design) bug. drm_helper_mode_fill_fb_struct
    needs to be called before calling drm_framebuffer_init.
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/via_fb.c 
b/drivers/gpu/drm/openchrome/via_fb.c
index fbbe710c4c70..c9182d9ce0b7 100644
--- a/drivers/gpu/drm/openchrome/via_fb.c
+++ b/drivers/gpu/drm/openchrome/via_fb.c
@@ -974,6 +974,7 @@ via_user_framebuffer_create(struct drm_device *dev,
 
        via_fb->gem_obj = gem_obj;
 
+       drm_helper_mode_fill_fb_struct(&via_fb->fb, mode_cmd);
        ret = drm_framebuffer_init(dev, &via_fb->fb, &via_fb_funcs);
        if (ret) {
                drm_gem_object_unreference(gem_obj);
@@ -981,8 +982,6 @@ via_user_framebuffer_create(struct drm_device *dev,
                return ERR_PTR(ret);
        }
 
-       drm_helper_mode_fill_fb_struct(&via_fb->fb, mode_cmd);
-
        return &via_fb->fb;
 }
 
@@ -1038,6 +1037,7 @@ via_fb_probe(struct drm_fb_helper *helper,
        if (unlikely(ret))
                goto out_err;
 
+       drm_helper_mode_fill_fb_struct(&via_fb->fb, &mode_cmd);
        ret = drm_framebuffer_init(helper->dev, &via_fb->fb, &via_fb_funcs);
        if (unlikely(ret))
                goto out_err;
@@ -1045,7 +1045,6 @@ via_fb_probe(struct drm_fb_helper *helper,
        via_fb->gem_obj = gem_obj;
        ttmfb->base.fb = &via_fb->fb;
 
-       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;
_______________________________________________
Openchrome-devel mailing list
Openchrome-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/openchrome-devel

Reply via email to