88#include "fb.h"
99
1010struct vcamfb_info {
11- struct fb_info info ;
11+ struct fb_info * info ;
1212 void * addr ;
1313 unsigned int offset ;
1414 char name [FB_NAME_MAXLENGTH ];
@@ -363,7 +363,10 @@ int vcamfb_init(struct vcam_device *dev)
363363 /* malloc vcamfb_info */
364364 fb_data = vmalloc (sizeof (struct vcamfb_info ));
365365 dev -> fb_priv = (void * ) fb_data ;
366- info = & fb_data -> info ;
366+
367+ /* malloc fb_info */
368+ fb_data -> info = framebuffer_alloc (0 , & dev -> vdev .dev );
369+ info = fb_data -> info ;
367370
368371 /* malloc framebuffer and init framebuffer */
369372 size = dev -> input_format .sizeimage * 2 ;
@@ -402,8 +405,6 @@ int vcamfb_init(struct vcam_device *dev)
402405 info -> fbops = & vcamfb_ops ;
403406 info -> par = dev ;
404407 info -> pseudo_palette = NULL ;
405- info -> flags = FBINFO_FLAG_DEFAULT ;
406- info -> device = & dev -> vdev .dev ;
407408 INIT_LIST_HEAD (& info -> modelist );
408409
409410 /* set the fb_cmap */
@@ -428,25 +429,33 @@ int vcamfb_init(struct vcam_device *dev)
428429
429430fb_alloc_failure :
430431 fb_dealloc_cmap (& info -> cmap );
432+ framebuffer_release (info );
431433 return - EINVAL ;
432434}
433435
434436void vcamfb_destroy (struct vcam_device * dev )
435437{
436438 struct vcamfb_info * fb_data = (struct vcamfb_info * ) dev -> fb_priv ;
437- struct fb_info * info = & fb_data -> info ;
439+ struct fb_info * info ;
440+
441+ if (!fb_data )
442+ return ;
443+
444+ info = fb_data -> info ;
438445 if (info ) {
439446 unregister_framebuffer (info );
440- vfree (fb_data -> addr );
441447 fb_dealloc_cmap (& info -> cmap );
442- vfree ( dev -> fb_priv );
448+ framebuffer_release ( info );
443449 }
450+
451+ vfree (fb_data -> addr );
452+ vfree (fb_data );
444453}
445454
446455void vcamfb_update (struct vcam_device * dev )
447456{
448457 struct vcamfb_info * fb_data = (struct vcamfb_info * ) dev -> fb_priv ;
449- struct fb_info * info = & fb_data -> info ;
458+ struct fb_info * info = fb_data -> info ;
450459 struct vcam_in_queue * q = & dev -> in_queue ;
451460
452461 /* remalloc the framebuffer and vcam_in_queue */
0 commit comments