@@ -351,7 +351,7 @@ struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
351351 }
352352 }
353353
354- fb = omap_framebuffer_init (dev , mode_cmd , bos );
354+ fb = omap_framebuffer_init (dev , info , mode_cmd , bos );
355355 if (IS_ERR (fb ))
356356 goto error ;
357357
@@ -365,9 +365,9 @@ struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev,
365365}
366366
367367struct drm_framebuffer * omap_framebuffer_init (struct drm_device * dev ,
368+ const struct drm_format_info * info ,
368369 const struct drm_mode_fb_cmd2 * mode_cmd , struct drm_gem_object * * bos )
369370{
370- const struct drm_format_info * format = NULL ;
371371 struct omap_framebuffer * omap_fb = NULL ;
372372 struct drm_framebuffer * fb = NULL ;
373373 unsigned int pitch = mode_cmd -> pitches [0 ];
@@ -377,15 +377,12 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
377377 dev , mode_cmd , mode_cmd -> width , mode_cmd -> height ,
378378 (char * )& mode_cmd -> pixel_format );
379379
380- format = drm_get_format_info (dev , mode_cmd -> pixel_format ,
381- mode_cmd -> modifier [0 ]);
382-
383380 for (i = 0 ; i < ARRAY_SIZE (formats ); i ++ ) {
384381 if (formats [i ] == mode_cmd -> pixel_format )
385382 break ;
386383 }
387384
388- if (! format || i == ARRAY_SIZE (formats )) {
385+ if (i == ARRAY_SIZE (formats )) {
389386 dev_dbg (dev -> dev , "unsupported pixel format: %4.4s\n" ,
390387 (char * )& mode_cmd -> pixel_format );
391388 ret = - EINVAL ;
@@ -399,31 +396,31 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
399396 }
400397
401398 fb = & omap_fb -> base ;
402- omap_fb -> format = format ;
399+ omap_fb -> format = info ;
403400 mutex_init (& omap_fb -> lock );
404401
405402 /*
406403 * The code below assumes that no format use more than two planes, and
407404 * that the two planes of multiplane formats need the same number of
408405 * bytes per pixel.
409406 */
410- if (format -> num_planes == 2 && pitch != mode_cmd -> pitches [1 ]) {
407+ if (info -> num_planes == 2 && pitch != mode_cmd -> pitches [1 ]) {
411408 dev_dbg (dev -> dev , "pitches differ between planes 0 and 1\n" );
412409 ret = - EINVAL ;
413410 goto fail ;
414411 }
415412
416- if (pitch % format -> cpp [0 ]) {
413+ if (pitch % info -> cpp [0 ]) {
417414 dev_dbg (dev -> dev ,
418415 "buffer pitch (%u bytes) is not a multiple of pixel size (%u bytes)\n" ,
419- pitch , format -> cpp [0 ]);
416+ pitch , info -> cpp [0 ]);
420417 ret = - EINVAL ;
421418 goto fail ;
422419 }
423420
424- for (i = 0 ; i < format -> num_planes ; i ++ ) {
421+ for (i = 0 ; i < info -> num_planes ; i ++ ) {
425422 struct plane * plane = & omap_fb -> planes [i ];
426- unsigned int vsub = i == 0 ? 1 : format -> vsub ;
423+ unsigned int vsub = i == 0 ? 1 : info -> vsub ;
427424 unsigned int size ;
428425
429426 size = pitch * mode_cmd -> height / vsub ;
@@ -440,7 +437,7 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev,
440437 plane -> dma_addr = 0 ;
441438 }
442439
443- drm_helper_mode_fill_fb_struct (dev , fb , NULL , mode_cmd );
440+ drm_helper_mode_fill_fb_struct (dev , fb , info , mode_cmd );
444441
445442 ret = drm_framebuffer_init (dev , fb , & omap_framebuffer_funcs );
446443 if (ret ) {
0 commit comments