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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx