Hi Hans,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.15-rc1 next-20171128]
[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/20171128-225025
config: i386-randconfig-x003-201748 (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=i386 

All errors (new ones prefixed by >>):

   drivers/video/fbdev/efifb.c: In function 'efifb_probe':
>> drivers/video/fbdev/efifb.c:340: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:340:7: note: each undeclared identifier is 
reported only once for each function it appears in
>> drivers/video/fbdev/efifb.c:343: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:346: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 +340 drivers/video/fbdev/efifb.c

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

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

Attachment: .config.gz
Description: application/gzip

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to