Hi Hans,

I love your patch! Yet something to improve:

[auto build test ERROR on drm/drm-next]
[also build test ERROR on v4.15-rc1 next-20171128]
[cannot apply to linus/master]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Hans-de-Goede/drm-fbdev-Panel-orientation-connector-property-support/20171129-001142
base:   git://people.freedesktop.org/~airlied/linux.git drm-next
config: x86_64-kexec (attached as .config)
compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers/video/fbdev/efifb.c: In function 'efifb_probe':
>> drivers/video/fbdev/efifb.c:339:7: error: 
>> 'DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP' undeclared (first use in this 
>> function); did you mean 'DRM_MODE_PRESENT_BOTTOM_FIELD'?
     case DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP:
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          DRM_MODE_PRESENT_BOTTOM_FIELD
   drivers/video/fbdev/efifb.c:339:7: note: each undeclared identifier is 
reported only once for each function it appears in
>> drivers/video/fbdev/efifb.c:342:7: error: 
>> 'DRM_MODE_PANEL_ORIENTATION_LEFT_UP' undeclared (first use in this 
>> function); did you mean 'DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP'?
     case DRM_MODE_PANEL_ORIENTATION_LEFT_UP:
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP
>> drivers/video/fbdev/efifb.c:345:7: error: 
>> 'DRM_MODE_PANEL_ORIENTATION_RIGHT_UP' undeclared (first use in this 
>> function); did you mean 'DRM_MODE_PANEL_ORIENTATION_LEFT_UP'?
     case DRM_MODE_PANEL_ORIENTATION_RIGHT_UP:
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          DRM_MODE_PANEL_ORIENTATION_LEFT_UP

vim +339 drivers/video/fbdev/efifb.c

   157  
   158  static int efifb_probe(struct platform_device *dev)
   159  {
   160          struct fb_info *info;
   161          int err, orientation;
   162          unsigned int size_vmode;
   163          unsigned int size_remap;
   164          unsigned int size_total;
   165          char *option = NULL;
   166  
   167          if (screen_info.orig_video_isVGA != VIDEO_TYPE_EFI || 
pci_dev_disabled)
   168                  return -ENODEV;
   169  
   170          if (fb_get_options("efifb", &option))
   171                  return -ENODEV;
   172          efifb_setup(option);
   173  
   174          /* We don't get linelength from UGA Draw Protocol, only from
   175           * EFI Graphics Protocol.  So if it's not in DMI, and it's not
   176           * passed in from the user, we really can't use the framebuffer.
   177           */
   178          if (!screen_info.lfb_linelength)
   179                  return -ENODEV;
   180  
   181          if (!screen_info.lfb_depth)
   182                  screen_info.lfb_depth = 32;
   183          if (!screen_info.pages)
   184                  screen_info.pages = 1;
   185          if (!fb_base_is_valid()) {
   186                  printk(KERN_DEBUG "efifb: invalid framebuffer 
address\n");
   187                  return -ENODEV;
   188          }
   189          printk(KERN_INFO "efifb: probing for efifb\n");
   190  
   191          /* just assume they're all unset if any are */
   192          if (!screen_info.blue_size) {
   193                  screen_info.blue_size = 8;
   194                  screen_info.blue_pos = 0;
   195                  screen_info.green_size = 8;
   196                  screen_info.green_pos = 8;
   197                  screen_info.red_size = 8;
   198                  screen_info.red_pos = 16;
   199                  screen_info.rsvd_size = 8;
   200                  screen_info.rsvd_pos = 24;
   201          }
   202  
   203          efifb_fix.smem_start = screen_info.lfb_base;
   204  
   205          if (screen_info.capabilities & VIDEO_CAPABILITY_64BIT_BASE) {
   206                  u64 ext_lfb_base;
   207  
   208                  ext_lfb_base = (u64)(unsigned 
long)screen_info.ext_lfb_base << 32;
   209                  efifb_fix.smem_start |= ext_lfb_base;
   210          }
   211  
   212          if (bar_resource &&
   213              bar_resource->start + bar_offset != efifb_fix.smem_start) {
   214                  dev_info(&efifb_pci_dev->dev,
   215                           "BAR has moved, updating efifb address\n");
   216                  efifb_fix.smem_start = bar_resource->start + bar_offset;
   217          }
   218  
   219          efifb_defined.bits_per_pixel = screen_info.lfb_depth;
   220          efifb_defined.xres = screen_info.lfb_width;
   221          efifb_defined.yres = screen_info.lfb_height;
   222          efifb_fix.line_length = screen_info.lfb_linelength;
   223  
   224          /*   size_vmode -- that is the amount of memory needed for the
   225           *                 used video mode, i.e. the minimum amount of
   226           *                 memory we need. */
   227          size_vmode = efifb_defined.yres * efifb_fix.line_length;
   228  
   229          /*   size_total -- all video memory we have. Used for
   230           *                 entries, ressource allocation and bounds
   231           *                 checking. */
   232          size_total = screen_info.lfb_size;
   233          if (size_total < size_vmode)
   234                  size_total = size_vmode;
   235  
   236          /*   size_remap -- the amount of video memory we are going to
   237           *                 use for efifb.  With modern cards it is no
   238           *                 option to simply use size_total as that
   239           *                 wastes plenty of kernel address space. */
   240          size_remap  = size_vmode * 2;
   241          if (size_remap > size_total)
   242                  size_remap = size_total;
   243          if (size_remap % PAGE_SIZE)
   244                  size_remap += PAGE_SIZE - (size_remap % PAGE_SIZE);
   245          efifb_fix.smem_len = size_remap;
   246  
   247          if (request_mem_region(efifb_fix.smem_start, size_remap, 
"efifb")) {
   248                  request_mem_succeeded = true;
   249          } else {
   250                  /* We cannot make this fatal. Sometimes this comes from 
magic
   251                     spaces our resource handlers simply don't know about 
*/
   252                  pr_warn("efifb: cannot reserve video memory at 0x%lx\n",
   253                          efifb_fix.smem_start);
   254          }
   255  
   256          info = framebuffer_alloc(sizeof(u32) * 16, &dev->dev);
   257          if (!info) {
   258                  pr_err("efifb: cannot allocate framebuffer\n");
   259                  err = -ENOMEM;
   260                  goto err_release_mem;
   261          }
   262          platform_set_drvdata(dev, info);
   263          info->pseudo_palette = info->par;
   264          info->par = NULL;
   265  
   266          info->apertures = alloc_apertures(1);
   267          if (!info->apertures) {
   268                  err = -ENOMEM;
   269                  goto err_release_fb;
   270          }
   271          info->apertures->ranges[0].base = efifb_fix.smem_start;
   272          info->apertures->ranges[0].size = size_remap;
   273  
   274          if (nowc)
   275                  info->screen_base = ioremap(efifb_fix.smem_start, 
efifb_fix.smem_len);
   276          else
   277                  info->screen_base = ioremap_wc(efifb_fix.smem_start, 
efifb_fix.smem_len);
   278          if (!info->screen_base) {
   279                  pr_err("efifb: abort, cannot ioremap video memory 0x%x 
@ 0x%lx\n",
   280                          efifb_fix.smem_len, efifb_fix.smem_start);
   281                  err = -EIO;
   282                  goto err_release_fb;
   283          }
   284  
   285          pr_info("efifb: framebuffer at 0x%lx, using %dk, total %dk\n",
   286                 efifb_fix.smem_start, size_remap/1024, size_total/1024);
   287          pr_info("efifb: mode is %dx%dx%d, linelength=%d, pages=%d\n",
   288                 efifb_defined.xres, efifb_defined.yres,
   289                 efifb_defined.bits_per_pixel, efifb_fix.line_length,
   290                 screen_info.pages);
   291  
   292          efifb_defined.xres_virtual = efifb_defined.xres;
   293          efifb_defined.yres_virtual = efifb_fix.smem_len /
   294                                          efifb_fix.line_length;
   295          pr_info("efifb: scrolling: redraw\n");
   296          efifb_defined.yres_virtual = efifb_defined.yres;
   297  
   298          /* some dummy values for timing to make fbset happy */
   299          efifb_defined.pixclock     = 10000000 / efifb_defined.xres *
   300                                          1000 / efifb_defined.yres;
   301          efifb_defined.left_margin  = (efifb_defined.xres / 8) & 0xf8;
   302          efifb_defined.hsync_len    = (efifb_defined.xres / 8) & 0xf8;
   303  
   304          efifb_defined.red.offset    = screen_info.red_pos;
   305          efifb_defined.red.length    = screen_info.red_size;
   306          efifb_defined.green.offset  = screen_info.green_pos;
   307          efifb_defined.green.length  = screen_info.green_size;
   308          efifb_defined.blue.offset   = screen_info.blue_pos;
   309          efifb_defined.blue.length   = screen_info.blue_size;
   310          efifb_defined.transp.offset = screen_info.rsvd_pos;
   311          efifb_defined.transp.length = screen_info.rsvd_size;
   312  
   313          pr_info("efifb: %s: "
   314                 "size=%d:%d:%d:%d, shift=%d:%d:%d:%d\n",
   315                 "Truecolor",
   316                 screen_info.rsvd_size,
   317                 screen_info.red_size,
   318                 screen_info.green_size,
   319                 screen_info.blue_size,
   320                 screen_info.rsvd_pos,
   321                 screen_info.red_pos,
   322                 screen_info.green_pos,
   323                 screen_info.blue_pos);
   324  
   325          efifb_fix.ypanstep  = 0;
   326          efifb_fix.ywrapstep = 0;
   327  
   328          info->fbops = &efifb_ops;
   329          info->var = efifb_defined;
   330          info->fix = efifb_fix;
   331          info->flags = FBINFO_FLAG_DEFAULT | FBINFO_MISC_FIRMWARE;
   332  
   333          orientation = 
drm_get_panel_orientation_quirk(efifb_defined.xres,
   334                                                        
efifb_defined.yres);
   335          switch (orientation) {
   336          default:
   337                  info->fbcon_rotate_hint = FB_ROTATE_UR;
   338                  break;
 > 339          case DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP:
   340                  info->fbcon_rotate_hint = FB_ROTATE_UD;
   341                  break;
 > 342          case DRM_MODE_PANEL_ORIENTATION_LEFT_UP:
   343                  info->fbcon_rotate_hint = FB_ROTATE_CCW;
   344                  break;
 > 345          case DRM_MODE_PANEL_ORIENTATION_RIGHT_UP:
   346                  info->fbcon_rotate_hint = FB_ROTATE_CW;
   347                  break;
   348          }
   349  
   350          err = sysfs_create_groups(&dev->dev.kobj, efifb_groups);
   351          if (err) {
   352                  pr_err("efifb: cannot add sysfs attrs\n");
   353                  goto err_unmap;
   354          }
   355          err = fb_alloc_cmap(&info->cmap, 256, 0);
   356          if (err < 0) {
   357                  pr_err("efifb: cannot allocate colormap\n");
   358                  goto err_groups;
   359          }
   360          err = register_framebuffer(info);
   361          if (err < 0) {
   362                  pr_err("efifb: cannot register framebuffer\n");
   363                  goto err_fb_dealoc;
   364          }
   365          fb_info(info, "%s frame buffer device\n", info->fix.id);
   366          return 0;
   367  
   368  err_fb_dealoc:
   369          fb_dealloc_cmap(&info->cmap);
   370  err_groups:
   371          sysfs_remove_groups(&dev->dev.kobj, efifb_groups);
   372  err_unmap:
   373          iounmap(info->screen_base);
   374  err_release_fb:
   375          framebuffer_release(info);
   376  err_release_mem:
   377          if (request_mem_succeeded)
   378                  release_mem_region(efifb_fix.smem_start, size_total);
   379          return err;
   380  }
   381  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to