return ret;
 }
 
+static const struct fb_ops fbtft_ops = {
+       .owner        = THIS_MODULE;
+       .fb_read      = fb_sys_read;
+       .fb_write     = fbtft_fb_write;
+       .fb_fillrect  = fbtft_fb_fillrect;
+       .fb_copyarea  = fbtft_fb_copyarea;
+       .fb_imageblit = fbtft_fb_imageblit;
+       .fb_setcolreg = fbtft_fb_setcolreg;
+       .fb_blank     = fbtft_fb_blank;
+       .fb_mmap      = fb_deferred_io_mmap;
+};
+
 static void fbtft_merge_fbtftops(struct fbtft_ops *dst, struct fbtft_ops *src)
 {
        if (src->write)
  * Creates a new frame buffer info structure.
  *
  * Also creates and populates the following structures:
- *   info->fbops
  *   info->fbdefio
  *   info->pseudo_palette
  *   par->fbtftops
 {
        struct fb_info *info;
        struct fbtft_par *par;
-       struct fb_ops *fbops = NULL;
        struct fb_deferred_io *fbdefio = NULL;
        u8 *vmem = NULL;
        void *txbuf = NULL;
        if (!vmem)
                goto alloc_fail;
 
-       fbops = devm_kzalloc(dev, sizeof(struct fb_ops), GFP_KERNEL);
-       if (!fbops)
-               goto alloc_fail;
-
        fbdefio = devm_kzalloc(dev, sizeof(struct fb_deferred_io), GFP_KERNEL);
        if (!fbdefio)
                goto alloc_fail;
                goto alloc_fail;
 
        info->screen_buffer = vmem;
-       info->fbops = fbops;
+       info->fbops = &fbtft_ops;
        info->fbdefio = fbdefio;
 
-       fbops->owner        =      dev->driver->owner;
-       fbops->fb_read      =      fb_sys_read;
-       fbops->fb_write     =      fbtft_fb_write;
-       fbops->fb_fillrect  =      fbtft_fb_fillrect;
-       fbops->fb_copyarea  =      fbtft_fb_copyarea;
-       fbops->fb_imageblit =      fbtft_fb_imageblit;
-       fbops->fb_setcolreg =      fbtft_fb_setcolreg;
-       fbops->fb_blank     =      fbtft_fb_blank;
-       fbops->fb_mmap      =      fb_deferred_io_mmap;
-
        fbdefio->delay =            HZ / fps;
        fbdefio->sort_pagereflist = true;
        fbdefio->deferred_io =      fbtft_deferred_io;