Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6

* 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (33 commits)
drm/radeon/kms: fix typo in radeon_compute_pll_gain
drm/radeon/kms: try to detect tv vs monitor for underscan
drm/radeon/kms: fix sideport detection on newer rs880 boards
drm/radeon: fix passing wrong type to gem object create.
drm/radeon/kms: set encoder type to DVI for HDMI on evergreen
drm/radeon/kms: add back missing break in info ioctl
drm/radeon/kms: don't enable MSIs on AGP boards
drm/radeon/kms: fix agp mode setup on cards that use pcie bridges
drm: move dereference below check
drm: fix end of loop test
drm/radeon/kms: rework radeon_dp_detect() logic
drm/radeon/kms: add missing asic callback assignment for evergreen
drm/radeon/kms/DCE3+: switch pads to ddc mode when going i2c
drm/radeon/kms/pm: bail early if nothing's changing
drm/radeon/kms/atom: clean up dig atom handling
drm/radeon/kms: DCE3/4 transmitter fixes
drm/radeon/kms: rework encoder handling
drm/radeon/kms: DCE3/4 AdjustPixelPll updates
drm/radeon: Fix stack data leak
drm/radeon/kms: fix GTT/VRAM overlapping test
...

+676 -495
+19 -6
drivers/gpu/drm/drm_drv.c
··· 55 55 static int drm_version(struct drm_device *dev, void *data, 56 56 struct drm_file *file_priv); 57 57 58 + #define DRM_IOCTL_DEF(ioctl, _func, _flags) \ 59 + [DRM_IOCTL_NR(ioctl)] = {.cmd = ioctl, .func = _func, .flags = _flags, .cmd_drv = 0} 60 + 58 61 /** Ioctl table */ 59 62 static struct drm_ioctl_desc drm_ioctls[] = { 60 63 DRM_IOCTL_DEF(DRM_IOCTL_VERSION, drm_version, 0), ··· 424 421 int retcode = -EINVAL; 425 422 char stack_kdata[128]; 426 423 char *kdata = NULL; 424 + unsigned int usize, asize; 427 425 428 426 dev = file_priv->minor->dev; 429 427 atomic_inc(&dev->ioctl_count); ··· 440 436 ((nr < DRM_COMMAND_BASE) || (nr >= DRM_COMMAND_END))) 441 437 goto err_i1; 442 438 if ((nr >= DRM_COMMAND_BASE) && (nr < DRM_COMMAND_END) && 443 - (nr < DRM_COMMAND_BASE + dev->driver->num_ioctls)) 439 + (nr < DRM_COMMAND_BASE + dev->driver->num_ioctls)) { 440 + u32 drv_size; 444 441 ioctl = &dev->driver->ioctls[nr - DRM_COMMAND_BASE]; 442 + drv_size = _IOC_SIZE(ioctl->cmd_drv); 443 + usize = asize = _IOC_SIZE(cmd); 444 + if (drv_size > asize) 445 + asize = drv_size; 446 + } 445 447 else if ((nr >= DRM_COMMAND_END) || (nr < DRM_COMMAND_BASE)) { 446 448 ioctl = &drm_ioctls[nr]; 447 449 cmd = ioctl->cmd; 450 + usize = asize = _IOC_SIZE(cmd); 448 451 } else 449 452 goto err_i1; 450 453 ··· 471 460 retcode = -EACCES; 472 461 } else { 473 462 if (cmd & (IOC_IN | IOC_OUT)) { 474 - if (_IOC_SIZE(cmd) <= sizeof(stack_kdata)) { 463 + if (asize <= sizeof(stack_kdata)) { 475 464 kdata = stack_kdata; 476 465 } else { 477 - kdata = kmalloc(_IOC_SIZE(cmd), GFP_KERNEL); 466 + kdata = kmalloc(asize, GFP_KERNEL); 478 467 if (!kdata) { 479 468 retcode = -ENOMEM; 480 469 goto err_i1; ··· 484 473 485 474 if (cmd & IOC_IN) { 486 475 if (copy_from_user(kdata, (void __user *)arg, 487 - _IOC_SIZE(cmd)) != 0) { 476 + usize) != 0) { 488 477 retcode = -EFAULT; 489 478 goto err_i1; 490 479 } 491 - } 480 + } else 481 + memset(kdata, 0, usize); 482 + 492 483 if (ioctl->flags & DRM_UNLOCKED) 493 484 retcode = func(dev, kdata, file_priv); 494 485 else { ··· 501 488 502 489 if (cmd & IOC_OUT) { 503 490 if (copy_to_user((void __user *)arg, kdata, 504 - _IOC_SIZE(cmd)) != 0) 491 + usize) != 0) 505 492 retcode = -EFAULT; 506 493 } 507 494 }
+2 -1
drivers/gpu/drm/drm_fb_helper.c
··· 94 94 int i; 95 95 enum drm_connector_force force = DRM_FORCE_UNSPECIFIED; 96 96 struct drm_fb_helper_cmdline_mode *cmdline_mode; 97 - struct drm_connector *connector = fb_helper_conn->connector; 97 + struct drm_connector *connector; 98 98 99 99 if (!fb_helper_conn) 100 100 return false; 101 + connector = fb_helper_conn->connector; 101 102 102 103 cmdline_mode = &fb_helper_conn->cmdline_mode; 103 104 if (!mode_option)
+1 -1
drivers/gpu/drm/drm_vm.c
··· 138 138 break; 139 139 } 140 140 141 - if (!agpmem) 141 + if (&agpmem->head == &dev->agp->memory) 142 142 goto vm_fault_error; 143 143 144 144 /*
+15 -15
drivers/gpu/drm/i810/i810_dma.c
··· 1255 1255 } 1256 1256 1257 1257 struct drm_ioctl_desc i810_ioctls[] = { 1258 - DRM_IOCTL_DEF(DRM_I810_INIT, i810_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 1259 - DRM_IOCTL_DEF(DRM_I810_VERTEX, i810_dma_vertex, DRM_AUTH|DRM_UNLOCKED), 1260 - DRM_IOCTL_DEF(DRM_I810_CLEAR, i810_clear_bufs, DRM_AUTH|DRM_UNLOCKED), 1261 - DRM_IOCTL_DEF(DRM_I810_FLUSH, i810_flush_ioctl, DRM_AUTH|DRM_UNLOCKED), 1262 - DRM_IOCTL_DEF(DRM_I810_GETAGE, i810_getage, DRM_AUTH|DRM_UNLOCKED), 1263 - DRM_IOCTL_DEF(DRM_I810_GETBUF, i810_getbuf, DRM_AUTH|DRM_UNLOCKED), 1264 - DRM_IOCTL_DEF(DRM_I810_SWAP, i810_swap_bufs, DRM_AUTH|DRM_UNLOCKED), 1265 - DRM_IOCTL_DEF(DRM_I810_COPY, i810_copybuf, DRM_AUTH|DRM_UNLOCKED), 1266 - DRM_IOCTL_DEF(DRM_I810_DOCOPY, i810_docopy, DRM_AUTH|DRM_UNLOCKED), 1267 - DRM_IOCTL_DEF(DRM_I810_OV0INFO, i810_ov0_info, DRM_AUTH|DRM_UNLOCKED), 1268 - DRM_IOCTL_DEF(DRM_I810_FSTATUS, i810_fstatus, DRM_AUTH|DRM_UNLOCKED), 1269 - DRM_IOCTL_DEF(DRM_I810_OV0FLIP, i810_ov0_flip, DRM_AUTH|DRM_UNLOCKED), 1270 - DRM_IOCTL_DEF(DRM_I810_MC, i810_dma_mc, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 1271 - DRM_IOCTL_DEF(DRM_I810_RSTATUS, i810_rstatus, DRM_AUTH|DRM_UNLOCKED), 1272 - DRM_IOCTL_DEF(DRM_I810_FLIP, i810_flip_bufs, DRM_AUTH|DRM_UNLOCKED), 1258 + DRM_IOCTL_DEF_DRV(I810_INIT, i810_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 1259 + DRM_IOCTL_DEF_DRV(I810_VERTEX, i810_dma_vertex, DRM_AUTH|DRM_UNLOCKED), 1260 + DRM_IOCTL_DEF_DRV(I810_CLEAR, i810_clear_bufs, DRM_AUTH|DRM_UNLOCKED), 1261 + DRM_IOCTL_DEF_DRV(I810_FLUSH, i810_flush_ioctl, DRM_AUTH|DRM_UNLOCKED), 1262 + DRM_IOCTL_DEF_DRV(I810_GETAGE, i810_getage, DRM_AUTH|DRM_UNLOCKED), 1263 + DRM_IOCTL_DEF_DRV(I810_GETBUF, i810_getbuf, DRM_AUTH|DRM_UNLOCKED), 1264 + DRM_IOCTL_DEF_DRV(I810_SWAP, i810_swap_bufs, DRM_AUTH|DRM_UNLOCKED), 1265 + DRM_IOCTL_DEF_DRV(I810_COPY, i810_copybuf, DRM_AUTH|DRM_UNLOCKED), 1266 + DRM_IOCTL_DEF_DRV(I810_DOCOPY, i810_docopy, DRM_AUTH|DRM_UNLOCKED), 1267 + DRM_IOCTL_DEF_DRV(I810_OV0INFO, i810_ov0_info, DRM_AUTH|DRM_UNLOCKED), 1268 + DRM_IOCTL_DEF_DRV(I810_FSTATUS, i810_fstatus, DRM_AUTH|DRM_UNLOCKED), 1269 + DRM_IOCTL_DEF_DRV(I810_OV0FLIP, i810_ov0_flip, DRM_AUTH|DRM_UNLOCKED), 1270 + DRM_IOCTL_DEF_DRV(I810_MC, i810_dma_mc, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 1271 + DRM_IOCTL_DEF_DRV(I810_RSTATUS, i810_rstatus, DRM_AUTH|DRM_UNLOCKED), 1272 + DRM_IOCTL_DEF_DRV(I810_FLIP, i810_flip_bufs, DRM_AUTH|DRM_UNLOCKED), 1273 1273 }; 1274 1274 1275 1275 int i810_max_ioctl = DRM_ARRAY_SIZE(i810_ioctls);
+14 -14
drivers/gpu/drm/i830/i830_dma.c
··· 1524 1524 } 1525 1525 1526 1526 struct drm_ioctl_desc i830_ioctls[] = { 1527 - DRM_IOCTL_DEF(DRM_I830_INIT, i830_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 1528 - DRM_IOCTL_DEF(DRM_I830_VERTEX, i830_dma_vertex, DRM_AUTH|DRM_UNLOCKED), 1529 - DRM_IOCTL_DEF(DRM_I830_CLEAR, i830_clear_bufs, DRM_AUTH|DRM_UNLOCKED), 1530 - DRM_IOCTL_DEF(DRM_I830_FLUSH, i830_flush_ioctl, DRM_AUTH|DRM_UNLOCKED), 1531 - DRM_IOCTL_DEF(DRM_I830_GETAGE, i830_getage, DRM_AUTH|DRM_UNLOCKED), 1532 - DRM_IOCTL_DEF(DRM_I830_GETBUF, i830_getbuf, DRM_AUTH|DRM_UNLOCKED), 1533 - DRM_IOCTL_DEF(DRM_I830_SWAP, i830_swap_bufs, DRM_AUTH|DRM_UNLOCKED), 1534 - DRM_IOCTL_DEF(DRM_I830_COPY, i830_copybuf, DRM_AUTH|DRM_UNLOCKED), 1535 - DRM_IOCTL_DEF(DRM_I830_DOCOPY, i830_docopy, DRM_AUTH|DRM_UNLOCKED), 1536 - DRM_IOCTL_DEF(DRM_I830_FLIP, i830_flip_bufs, DRM_AUTH|DRM_UNLOCKED), 1537 - DRM_IOCTL_DEF(DRM_I830_IRQ_EMIT, i830_irq_emit, DRM_AUTH|DRM_UNLOCKED), 1538 - DRM_IOCTL_DEF(DRM_I830_IRQ_WAIT, i830_irq_wait, DRM_AUTH|DRM_UNLOCKED), 1539 - DRM_IOCTL_DEF(DRM_I830_GETPARAM, i830_getparam, DRM_AUTH|DRM_UNLOCKED), 1540 - DRM_IOCTL_DEF(DRM_I830_SETPARAM, i830_setparam, DRM_AUTH|DRM_UNLOCKED), 1527 + DRM_IOCTL_DEF_DRV(I830_INIT, i830_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 1528 + DRM_IOCTL_DEF_DRV(I830_VERTEX, i830_dma_vertex, DRM_AUTH|DRM_UNLOCKED), 1529 + DRM_IOCTL_DEF_DRV(I830_CLEAR, i830_clear_bufs, DRM_AUTH|DRM_UNLOCKED), 1530 + DRM_IOCTL_DEF_DRV(I830_FLUSH, i830_flush_ioctl, DRM_AUTH|DRM_UNLOCKED), 1531 + DRM_IOCTL_DEF_DRV(I830_GETAGE, i830_getage, DRM_AUTH|DRM_UNLOCKED), 1532 + DRM_IOCTL_DEF_DRV(I830_GETBUF, i830_getbuf, DRM_AUTH|DRM_UNLOCKED), 1533 + DRM_IOCTL_DEF_DRV(I830_SWAP, i830_swap_bufs, DRM_AUTH|DRM_UNLOCKED), 1534 + DRM_IOCTL_DEF_DRV(I830_COPY, i830_copybuf, DRM_AUTH|DRM_UNLOCKED), 1535 + DRM_IOCTL_DEF_DRV(I830_DOCOPY, i830_docopy, DRM_AUTH|DRM_UNLOCKED), 1536 + DRM_IOCTL_DEF_DRV(I830_FLIP, i830_flip_bufs, DRM_AUTH|DRM_UNLOCKED), 1537 + DRM_IOCTL_DEF_DRV(I830_IRQ_EMIT, i830_irq_emit, DRM_AUTH|DRM_UNLOCKED), 1538 + DRM_IOCTL_DEF_DRV(I830_IRQ_WAIT, i830_irq_wait, DRM_AUTH|DRM_UNLOCKED), 1539 + DRM_IOCTL_DEF_DRV(I830_GETPARAM, i830_getparam, DRM_AUTH|DRM_UNLOCKED), 1540 + DRM_IOCTL_DEF_DRV(I830_SETPARAM, i830_setparam, DRM_AUTH|DRM_UNLOCKED), 1541 1541 }; 1542 1542 1543 1543 int i830_max_ioctl = DRM_ARRAY_SIZE(i830_ioctls);
+40 -40
drivers/gpu/drm/i915/i915_dma.c
··· 2367 2367 } 2368 2368 2369 2369 struct drm_ioctl_desc i915_ioctls[] = { 2370 - DRM_IOCTL_DEF(DRM_I915_INIT, i915_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2371 - DRM_IOCTL_DEF(DRM_I915_FLUSH, i915_flush_ioctl, DRM_AUTH), 2372 - DRM_IOCTL_DEF(DRM_I915_FLIP, i915_flip_bufs, DRM_AUTH), 2373 - DRM_IOCTL_DEF(DRM_I915_BATCHBUFFER, i915_batchbuffer, DRM_AUTH), 2374 - DRM_IOCTL_DEF(DRM_I915_IRQ_EMIT, i915_irq_emit, DRM_AUTH), 2375 - DRM_IOCTL_DEF(DRM_I915_IRQ_WAIT, i915_irq_wait, DRM_AUTH), 2376 - DRM_IOCTL_DEF(DRM_I915_GETPARAM, i915_getparam, DRM_AUTH), 2377 - DRM_IOCTL_DEF(DRM_I915_SETPARAM, i915_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2378 - DRM_IOCTL_DEF(DRM_I915_ALLOC, i915_mem_alloc, DRM_AUTH), 2379 - DRM_IOCTL_DEF(DRM_I915_FREE, i915_mem_free, DRM_AUTH), 2380 - DRM_IOCTL_DEF(DRM_I915_INIT_HEAP, i915_mem_init_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2381 - DRM_IOCTL_DEF(DRM_I915_CMDBUFFER, i915_cmdbuffer, DRM_AUTH), 2382 - DRM_IOCTL_DEF(DRM_I915_DESTROY_HEAP, i915_mem_destroy_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY ), 2383 - DRM_IOCTL_DEF(DRM_I915_SET_VBLANK_PIPE, i915_vblank_pipe_set, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY ), 2384 - DRM_IOCTL_DEF(DRM_I915_GET_VBLANK_PIPE, i915_vblank_pipe_get, DRM_AUTH ), 2385 - DRM_IOCTL_DEF(DRM_I915_VBLANK_SWAP, i915_vblank_swap, DRM_AUTH), 2386 - DRM_IOCTL_DEF(DRM_I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2387 - DRM_IOCTL_DEF(DRM_I915_GEM_INIT, i915_gem_init_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 2388 - DRM_IOCTL_DEF(DRM_I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH|DRM_UNLOCKED), 2389 - DRM_IOCTL_DEF(DRM_I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH|DRM_UNLOCKED), 2390 - DRM_IOCTL_DEF(DRM_I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), 2391 - DRM_IOCTL_DEF(DRM_I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), 2392 - DRM_IOCTL_DEF(DRM_I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED), 2393 - DRM_IOCTL_DEF(DRM_I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_AUTH|DRM_UNLOCKED), 2394 - DRM_IOCTL_DEF(DRM_I915_GEM_ENTERVT, i915_gem_entervt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 2395 - DRM_IOCTL_DEF(DRM_I915_GEM_LEAVEVT, i915_gem_leavevt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 2396 - DRM_IOCTL_DEF(DRM_I915_GEM_CREATE, i915_gem_create_ioctl, DRM_UNLOCKED), 2397 - DRM_IOCTL_DEF(DRM_I915_GEM_PREAD, i915_gem_pread_ioctl, DRM_UNLOCKED), 2398 - DRM_IOCTL_DEF(DRM_I915_GEM_PWRITE, i915_gem_pwrite_ioctl, DRM_UNLOCKED), 2399 - DRM_IOCTL_DEF(DRM_I915_GEM_MMAP, i915_gem_mmap_ioctl, DRM_UNLOCKED), 2400 - DRM_IOCTL_DEF(DRM_I915_GEM_MMAP_GTT, i915_gem_mmap_gtt_ioctl, DRM_UNLOCKED), 2401 - DRM_IOCTL_DEF(DRM_I915_GEM_SET_DOMAIN, i915_gem_set_domain_ioctl, DRM_UNLOCKED), 2402 - DRM_IOCTL_DEF(DRM_I915_GEM_SW_FINISH, i915_gem_sw_finish_ioctl, DRM_UNLOCKED), 2403 - DRM_IOCTL_DEF(DRM_I915_GEM_SET_TILING, i915_gem_set_tiling, DRM_UNLOCKED), 2404 - DRM_IOCTL_DEF(DRM_I915_GEM_GET_TILING, i915_gem_get_tiling, DRM_UNLOCKED), 2405 - DRM_IOCTL_DEF(DRM_I915_GEM_GET_APERTURE, i915_gem_get_aperture_ioctl, DRM_UNLOCKED), 2406 - DRM_IOCTL_DEF(DRM_I915_GET_PIPE_FROM_CRTC_ID, intel_get_pipe_from_crtc_id, DRM_UNLOCKED), 2407 - DRM_IOCTL_DEF(DRM_I915_GEM_MADVISE, i915_gem_madvise_ioctl, DRM_UNLOCKED), 2408 - DRM_IOCTL_DEF(DRM_I915_OVERLAY_PUT_IMAGE, intel_overlay_put_image, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), 2409 - DRM_IOCTL_DEF(DRM_I915_OVERLAY_ATTRS, intel_overlay_attrs, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), 2370 + DRM_IOCTL_DEF_DRV(I915_INIT, i915_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2371 + DRM_IOCTL_DEF_DRV(I915_FLUSH, i915_flush_ioctl, DRM_AUTH), 2372 + DRM_IOCTL_DEF_DRV(I915_FLIP, i915_flip_bufs, DRM_AUTH), 2373 + DRM_IOCTL_DEF_DRV(I915_BATCHBUFFER, i915_batchbuffer, DRM_AUTH), 2374 + DRM_IOCTL_DEF_DRV(I915_IRQ_EMIT, i915_irq_emit, DRM_AUTH), 2375 + DRM_IOCTL_DEF_DRV(I915_IRQ_WAIT, i915_irq_wait, DRM_AUTH), 2376 + DRM_IOCTL_DEF_DRV(I915_GETPARAM, i915_getparam, DRM_AUTH), 2377 + DRM_IOCTL_DEF_DRV(I915_SETPARAM, i915_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2378 + DRM_IOCTL_DEF_DRV(I915_ALLOC, i915_mem_alloc, DRM_AUTH), 2379 + DRM_IOCTL_DEF_DRV(I915_FREE, i915_mem_free, DRM_AUTH), 2380 + DRM_IOCTL_DEF_DRV(I915_INIT_HEAP, i915_mem_init_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2381 + DRM_IOCTL_DEF_DRV(I915_CMDBUFFER, i915_cmdbuffer, DRM_AUTH), 2382 + DRM_IOCTL_DEF_DRV(I915_DESTROY_HEAP, i915_mem_destroy_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2383 + DRM_IOCTL_DEF_DRV(I915_SET_VBLANK_PIPE, i915_vblank_pipe_set, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2384 + DRM_IOCTL_DEF_DRV(I915_GET_VBLANK_PIPE, i915_vblank_pipe_get, DRM_AUTH), 2385 + DRM_IOCTL_DEF_DRV(I915_VBLANK_SWAP, i915_vblank_swap, DRM_AUTH), 2386 + DRM_IOCTL_DEF_DRV(I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 2387 + DRM_IOCTL_DEF_DRV(I915_GEM_INIT, i915_gem_init_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 2388 + DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH|DRM_UNLOCKED), 2389 + DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH|DRM_UNLOCKED), 2390 + DRM_IOCTL_DEF_DRV(I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), 2391 + DRM_IOCTL_DEF_DRV(I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), 2392 + DRM_IOCTL_DEF_DRV(I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED), 2393 + DRM_IOCTL_DEF_DRV(I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_AUTH|DRM_UNLOCKED), 2394 + DRM_IOCTL_DEF_DRV(I915_GEM_ENTERVT, i915_gem_entervt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 2395 + DRM_IOCTL_DEF_DRV(I915_GEM_LEAVEVT, i915_gem_leavevt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), 2396 + DRM_IOCTL_DEF_DRV(I915_GEM_CREATE, i915_gem_create_ioctl, DRM_UNLOCKED), 2397 + DRM_IOCTL_DEF_DRV(I915_GEM_PREAD, i915_gem_pread_ioctl, DRM_UNLOCKED), 2398 + DRM_IOCTL_DEF_DRV(I915_GEM_PWRITE, i915_gem_pwrite_ioctl, DRM_UNLOCKED), 2399 + DRM_IOCTL_DEF_DRV(I915_GEM_MMAP, i915_gem_mmap_ioctl, DRM_UNLOCKED), 2400 + DRM_IOCTL_DEF_DRV(I915_GEM_MMAP_GTT, i915_gem_mmap_gtt_ioctl, DRM_UNLOCKED), 2401 + DRM_IOCTL_DEF_DRV(I915_GEM_SET_DOMAIN, i915_gem_set_domain_ioctl, DRM_UNLOCKED), 2402 + DRM_IOCTL_DEF_DRV(I915_GEM_SW_FINISH, i915_gem_sw_finish_ioctl, DRM_UNLOCKED), 2403 + DRM_IOCTL_DEF_DRV(I915_GEM_SET_TILING, i915_gem_set_tiling, DRM_UNLOCKED), 2404 + DRM_IOCTL_DEF_DRV(I915_GEM_GET_TILING, i915_gem_get_tiling, DRM_UNLOCKED), 2405 + DRM_IOCTL_DEF_DRV(I915_GEM_GET_APERTURE, i915_gem_get_aperture_ioctl, DRM_UNLOCKED), 2406 + DRM_IOCTL_DEF_DRV(I915_GET_PIPE_FROM_CRTC_ID, intel_get_pipe_from_crtc_id, DRM_UNLOCKED), 2407 + DRM_IOCTL_DEF_DRV(I915_GEM_MADVISE, i915_gem_madvise_ioctl, DRM_UNLOCKED), 2408 + DRM_IOCTL_DEF_DRV(I915_OVERLAY_PUT_IMAGE, intel_overlay_put_image, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), 2409 + DRM_IOCTL_DEF_DRV(I915_OVERLAY_ATTRS, intel_overlay_attrs, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), 2410 2410 }; 2411 2411 2412 2412 int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);
+13 -13
drivers/gpu/drm/mga/mga_state.c
··· 1085 1085 } 1086 1086 1087 1087 struct drm_ioctl_desc mga_ioctls[] = { 1088 - DRM_IOCTL_DEF(DRM_MGA_INIT, mga_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1089 - DRM_IOCTL_DEF(DRM_MGA_FLUSH, mga_dma_flush, DRM_AUTH), 1090 - DRM_IOCTL_DEF(DRM_MGA_RESET, mga_dma_reset, DRM_AUTH), 1091 - DRM_IOCTL_DEF(DRM_MGA_SWAP, mga_dma_swap, DRM_AUTH), 1092 - DRM_IOCTL_DEF(DRM_MGA_CLEAR, mga_dma_clear, DRM_AUTH), 1093 - DRM_IOCTL_DEF(DRM_MGA_VERTEX, mga_dma_vertex, DRM_AUTH), 1094 - DRM_IOCTL_DEF(DRM_MGA_INDICES, mga_dma_indices, DRM_AUTH), 1095 - DRM_IOCTL_DEF(DRM_MGA_ILOAD, mga_dma_iload, DRM_AUTH), 1096 - DRM_IOCTL_DEF(DRM_MGA_BLIT, mga_dma_blit, DRM_AUTH), 1097 - DRM_IOCTL_DEF(DRM_MGA_GETPARAM, mga_getparam, DRM_AUTH), 1098 - DRM_IOCTL_DEF(DRM_MGA_SET_FENCE, mga_set_fence, DRM_AUTH), 1099 - DRM_IOCTL_DEF(DRM_MGA_WAIT_FENCE, mga_wait_fence, DRM_AUTH), 1100 - DRM_IOCTL_DEF(DRM_MGA_DMA_BOOTSTRAP, mga_dma_bootstrap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1088 + DRM_IOCTL_DEF_DRV(MGA_INIT, mga_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1089 + DRM_IOCTL_DEF_DRV(MGA_FLUSH, mga_dma_flush, DRM_AUTH), 1090 + DRM_IOCTL_DEF_DRV(MGA_RESET, mga_dma_reset, DRM_AUTH), 1091 + DRM_IOCTL_DEF_DRV(MGA_SWAP, mga_dma_swap, DRM_AUTH), 1092 + DRM_IOCTL_DEF_DRV(MGA_CLEAR, mga_dma_clear, DRM_AUTH), 1093 + DRM_IOCTL_DEF_DRV(MGA_VERTEX, mga_dma_vertex, DRM_AUTH), 1094 + DRM_IOCTL_DEF_DRV(MGA_INDICES, mga_dma_indices, DRM_AUTH), 1095 + DRM_IOCTL_DEF_DRV(MGA_ILOAD, mga_dma_iload, DRM_AUTH), 1096 + DRM_IOCTL_DEF_DRV(MGA_BLIT, mga_dma_blit, DRM_AUTH), 1097 + DRM_IOCTL_DEF_DRV(MGA_GETPARAM, mga_getparam, DRM_AUTH), 1098 + DRM_IOCTL_DEF_DRV(MGA_SET_FENCE, mga_set_fence, DRM_AUTH), 1099 + DRM_IOCTL_DEF_DRV(MGA_WAIT_FENCE, mga_wait_fence, DRM_AUTH), 1100 + DRM_IOCTL_DEF_DRV(MGA_DMA_BOOTSTRAP, mga_dma_bootstrap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1101 1101 }; 1102 1102 1103 1103 int mga_max_ioctl = DRM_ARRAY_SIZE(mga_ioctls);
+28 -14
drivers/gpu/drm/nouveau/nouveau_bios.c
··· 2166 2166 uint32_t val = 0; 2167 2167 2168 2168 if (off < pci_resource_len(dev->pdev, 1)) { 2169 - uint32_t __iomem *p = 2169 + uint8_t __iomem *p = 2170 2170 io_mapping_map_atomic_wc(fb, off & PAGE_MASK, KM_USER0); 2171 2171 2172 2172 val = ioread32(p + (off & ~PAGE_MASK)); ··· 2182 2182 uint32_t off, uint32_t val) 2183 2183 { 2184 2184 if (off < pci_resource_len(dev->pdev, 1)) { 2185 - uint32_t __iomem *p = 2185 + uint8_t __iomem *p = 2186 2186 io_mapping_map_atomic_wc(fb, off & PAGE_MASK, KM_USER0); 2187 2187 2188 2188 iowrite32(val, p + (off & ~PAGE_MASK)); ··· 4587 4587 return 1; 4588 4588 } 4589 4589 4590 - NV_TRACE(dev, "0x%04X: parsing output script 0\n", script); 4590 + NV_DEBUG_KMS(dev, "0x%04X: parsing output script 0\n", script); 4591 4591 nouveau_bios_run_init_table(dev, script, dcbent); 4592 4592 } else 4593 4593 if (pxclk == -1) { ··· 4597 4597 return 1; 4598 4598 } 4599 4599 4600 - NV_TRACE(dev, "0x%04X: parsing output script 1\n", script); 4600 + NV_DEBUG_KMS(dev, "0x%04X: parsing output script 1\n", script); 4601 4601 nouveau_bios_run_init_table(dev, script, dcbent); 4602 4602 } else 4603 4603 if (pxclk == -2) { ··· 4610 4610 return 1; 4611 4611 } 4612 4612 4613 - NV_TRACE(dev, "0x%04X: parsing output script 2\n", script); 4613 + NV_DEBUG_KMS(dev, "0x%04X: parsing output script 2\n", script); 4614 4614 nouveau_bios_run_init_table(dev, script, dcbent); 4615 4615 } else 4616 4616 if (pxclk > 0) { ··· 4622 4622 return 1; 4623 4623 } 4624 4624 4625 - NV_TRACE(dev, "0x%04X: parsing clock script 0\n", script); 4625 + NV_DEBUG_KMS(dev, "0x%04X: parsing clock script 0\n", script); 4626 4626 nouveau_bios_run_init_table(dev, script, dcbent); 4627 4627 } else 4628 4628 if (pxclk < 0) { ··· 4634 4634 return 1; 4635 4635 } 4636 4636 4637 - NV_TRACE(dev, "0x%04X: parsing clock script 1\n", script); 4637 + NV_DEBUG_KMS(dev, "0x%04X: parsing clock script 1\n", script); 4638 4638 nouveau_bios_run_init_table(dev, script, dcbent); 4639 4639 } 4640 4640 ··· 5357 5357 } 5358 5358 5359 5359 tmdstableptr = ROM16(bios->data[bitentry->offset]); 5360 - 5361 - if (tmdstableptr == 0x0) { 5360 + if (!tmdstableptr) { 5362 5361 NV_ERROR(dev, "Pointer to TMDS table invalid\n"); 5363 5362 return -EINVAL; 5364 5363 } 5365 5364 5365 + NV_INFO(dev, "TMDS table version %d.%d\n", 5366 + bios->data[tmdstableptr] >> 4, bios->data[tmdstableptr] & 0xf); 5367 + 5366 5368 /* nv50+ has v2.0, but we don't parse it atm */ 5367 - if (bios->data[tmdstableptr] != 0x11) { 5368 - NV_WARN(dev, 5369 - "TMDS table revision %d.%d not currently supported\n", 5370 - bios->data[tmdstableptr] >> 4, bios->data[tmdstableptr] & 0xf); 5369 + if (bios->data[tmdstableptr] != 0x11) 5371 5370 return -ENOSYS; 5372 - } 5373 5371 5374 5372 /* 5375 5373 * These two scripts are odd: they don't seem to get run even when ··· 5807 5809 gpio->line = tvdac_gpio[1] >> 4; 5808 5810 gpio->invert = tvdac_gpio[0] & 2; 5809 5811 } 5812 + } else { 5813 + /* 5814 + * No systematic way to store GPIO info on pre-v2.2 5815 + * DCBs, try to match the PCI device IDs. 5816 + */ 5817 + 5818 + /* Apple iMac G4 NV18 */ 5819 + if (dev->pdev->device == 0x0189 && 5820 + dev->pdev->subsystem_vendor == 0x10de && 5821 + dev->pdev->subsystem_device == 0x0010) { 5822 + struct dcb_gpio_entry *gpio = new_gpio_entry(bios); 5823 + 5824 + gpio->tag = DCB_GPIO_TVDAC0; 5825 + gpio->line = 4; 5826 + } 5827 + 5810 5828 } 5811 5829 5812 5830 if (!gpio_table_ptr)
+15
drivers/gpu/drm/nouveau/nouveau_bo.c
··· 36 36 #include <linux/log2.h> 37 37 #include <linux/slab.h> 38 38 39 + int 40 + nouveau_bo_sync_gpu(struct nouveau_bo *nvbo, struct nouveau_channel *chan) 41 + { 42 + struct nouveau_fence *prev_fence = nvbo->bo.sync_obj; 43 + int ret; 44 + 45 + if (!prev_fence || nouveau_fence_channel(prev_fence) == chan) 46 + return 0; 47 + 48 + spin_lock(&nvbo->bo.lock); 49 + ret = ttm_bo_wait(&nvbo->bo, false, false, false); 50 + spin_unlock(&nvbo->bo.lock); 51 + return ret; 52 + } 53 + 39 54 static void 40 55 nouveau_bo_del_ttm(struct ttm_buffer_object *bo) 41 56 {
+12 -12
drivers/gpu/drm/nouveau/nouveau_channel.c
··· 426 426 ***********************************/ 427 427 428 428 struct drm_ioctl_desc nouveau_ioctls[] = { 429 - DRM_IOCTL_DEF(DRM_NOUVEAU_GETPARAM, nouveau_ioctl_getparam, DRM_AUTH), 430 - DRM_IOCTL_DEF(DRM_NOUVEAU_SETPARAM, nouveau_ioctl_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 431 - DRM_IOCTL_DEF(DRM_NOUVEAU_CHANNEL_ALLOC, nouveau_ioctl_fifo_alloc, DRM_AUTH), 432 - DRM_IOCTL_DEF(DRM_NOUVEAU_CHANNEL_FREE, nouveau_ioctl_fifo_free, DRM_AUTH), 433 - DRM_IOCTL_DEF(DRM_NOUVEAU_GROBJ_ALLOC, nouveau_ioctl_grobj_alloc, DRM_AUTH), 434 - DRM_IOCTL_DEF(DRM_NOUVEAU_NOTIFIEROBJ_ALLOC, nouveau_ioctl_notifier_alloc, DRM_AUTH), 435 - DRM_IOCTL_DEF(DRM_NOUVEAU_GPUOBJ_FREE, nouveau_ioctl_gpuobj_free, DRM_AUTH), 436 - DRM_IOCTL_DEF(DRM_NOUVEAU_GEM_NEW, nouveau_gem_ioctl_new, DRM_AUTH), 437 - DRM_IOCTL_DEF(DRM_NOUVEAU_GEM_PUSHBUF, nouveau_gem_ioctl_pushbuf, DRM_AUTH), 438 - DRM_IOCTL_DEF(DRM_NOUVEAU_GEM_CPU_PREP, nouveau_gem_ioctl_cpu_prep, DRM_AUTH), 439 - DRM_IOCTL_DEF(DRM_NOUVEAU_GEM_CPU_FINI, nouveau_gem_ioctl_cpu_fini, DRM_AUTH), 440 - DRM_IOCTL_DEF(DRM_NOUVEAU_GEM_INFO, nouveau_gem_ioctl_info, DRM_AUTH), 429 + DRM_IOCTL_DEF_DRV(NOUVEAU_GETPARAM, nouveau_ioctl_getparam, DRM_AUTH), 430 + DRM_IOCTL_DEF_DRV(NOUVEAU_SETPARAM, nouveau_ioctl_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 431 + DRM_IOCTL_DEF_DRV(NOUVEAU_CHANNEL_ALLOC, nouveau_ioctl_fifo_alloc, DRM_AUTH), 432 + DRM_IOCTL_DEF_DRV(NOUVEAU_CHANNEL_FREE, nouveau_ioctl_fifo_free, DRM_AUTH), 433 + DRM_IOCTL_DEF_DRV(NOUVEAU_GROBJ_ALLOC, nouveau_ioctl_grobj_alloc, DRM_AUTH), 434 + DRM_IOCTL_DEF_DRV(NOUVEAU_NOTIFIEROBJ_ALLOC, nouveau_ioctl_notifier_alloc, DRM_AUTH), 435 + DRM_IOCTL_DEF_DRV(NOUVEAU_GPUOBJ_FREE, nouveau_ioctl_gpuobj_free, DRM_AUTH), 436 + DRM_IOCTL_DEF_DRV(NOUVEAU_GEM_NEW, nouveau_gem_ioctl_new, DRM_AUTH), 437 + DRM_IOCTL_DEF_DRV(NOUVEAU_GEM_PUSHBUF, nouveau_gem_ioctl_pushbuf, DRM_AUTH), 438 + DRM_IOCTL_DEF_DRV(NOUVEAU_GEM_CPU_PREP, nouveau_gem_ioctl_cpu_prep, DRM_AUTH), 439 + DRM_IOCTL_DEF_DRV(NOUVEAU_GEM_CPU_FINI, nouveau_gem_ioctl_cpu_fini, DRM_AUTH), 440 + DRM_IOCTL_DEF_DRV(NOUVEAU_GEM_INFO, nouveau_gem_ioctl_info, DRM_AUTH), 441 441 }; 442 442 443 443 int nouveau_max_ioctl = DRM_ARRAY_SIZE(nouveau_ioctls);
+4 -2
drivers/gpu/drm/nouveau/nouveau_connector.c
··· 104 104 int i; 105 105 106 106 for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) { 107 - struct nouveau_i2c_chan *i2c; 107 + struct nouveau_i2c_chan *i2c = NULL; 108 108 struct nouveau_encoder *nv_encoder; 109 109 struct drm_mode_object *obj; 110 110 int id; ··· 117 117 if (!obj) 118 118 continue; 119 119 nv_encoder = nouveau_encoder(obj_to_encoder(obj)); 120 - i2c = nouveau_i2c_find(dev, nv_encoder->dcb->i2c_index); 120 + 121 + if (nv_encoder->dcb->i2c_index < 0xf) 122 + i2c = nouveau_i2c_find(dev, nv_encoder->dcb->i2c_index); 121 123 122 124 if (i2c && nouveau_probe_i2c_addr(i2c, 0x50)) { 123 125 *pnv_encoder = nv_encoder;
+1
drivers/gpu/drm/nouveau/nouveau_drv.h
··· 1165 1165 extern void nouveau_bo_wr16(struct nouveau_bo *nvbo, unsigned index, u16 val); 1166 1166 extern u32 nouveau_bo_rd32(struct nouveau_bo *nvbo, unsigned index); 1167 1167 extern void nouveau_bo_wr32(struct nouveau_bo *nvbo, unsigned index, u32 val); 1168 + extern int nouveau_bo_sync_gpu(struct nouveau_bo *, struct nouveau_channel *); 1168 1169 1169 1170 /* nouveau_fence.c */ 1170 1171 struct nouveau_fence;
+26 -10
drivers/gpu/drm/nouveau/nouveau_gem.c
··· 361 361 362 362 list_for_each_entry(nvbo, list, entry) { 363 363 struct drm_nouveau_gem_pushbuf_bo *b = &pbbo[nvbo->pbbo_index]; 364 - struct nouveau_fence *prev_fence = nvbo->bo.sync_obj; 365 364 366 - if (prev_fence && nouveau_fence_channel(prev_fence) != chan) { 367 - spin_lock(&nvbo->bo.lock); 368 - ret = ttm_bo_wait(&nvbo->bo, false, false, false); 369 - spin_unlock(&nvbo->bo.lock); 370 - if (unlikely(ret)) { 371 - NV_ERROR(dev, "fail wait other chan\n"); 372 - return ret; 373 - } 365 + ret = nouveau_bo_sync_gpu(nvbo, chan); 366 + if (unlikely(ret)) { 367 + NV_ERROR(dev, "fail pre-validate sync\n"); 368 + return ret; 374 369 } 375 370 376 371 ret = nouveau_gem_set_domain(nvbo->gem, b->read_domains, ··· 376 381 return ret; 377 382 } 378 383 379 - nvbo->channel = chan; 384 + nvbo->channel = (b->read_domains & (1 << 31)) ? NULL : chan; 380 385 ret = ttm_bo_validate(&nvbo->bo, &nvbo->placement, 381 386 false, false, false); 382 387 nvbo->channel = NULL; 383 388 if (unlikely(ret)) { 384 389 NV_ERROR(dev, "fail ttm_validate\n"); 390 + return ret; 391 + } 392 + 393 + ret = nouveau_bo_sync_gpu(nvbo, chan); 394 + if (unlikely(ret)) { 395 + NV_ERROR(dev, "fail post-validate sync\n"); 385 396 return ret; 386 397 } 387 398 ··· 615 614 } 616 615 617 616 mutex_lock(&dev->struct_mutex); 617 + 618 + /* Mark push buffers as being used on PFIFO, the validation code 619 + * will then make sure that if the pushbuf bo moves, that they 620 + * happen on the kernel channel, which will in turn cause a sync 621 + * to happen before we try and submit the push buffer. 622 + */ 623 + for (i = 0; i < req->nr_push; i++) { 624 + if (push[i].bo_index >= req->nr_buffers) { 625 + NV_ERROR(dev, "push %d buffer not in list\n", i); 626 + ret = -EINVAL; 627 + goto out; 628 + } 629 + 630 + bo[push[i].bo_index].read_domains |= (1 << 31); 631 + } 618 632 619 633 /* Validate buffer list */ 620 634 ret = nouveau_gem_pushbuf_validate(chan, file_priv, bo, req->buffers,
+1 -1
drivers/gpu/drm/nouveau/nouveau_i2c.c
··· 163 163 if (entry->chan) 164 164 return -EEXIST; 165 165 166 - if (dev_priv->card_type == NV_C0 && entry->read >= NV50_I2C_PORTS) { 166 + if (dev_priv->card_type >= NV_50 && entry->read >= NV50_I2C_PORTS) { 167 167 NV_ERROR(dev, "unknown i2c port %d\n", entry->read); 168 168 return -EINVAL; 169 169 }
+11 -1
drivers/gpu/drm/nouveau/nouveau_sgdma.c
··· 214 214 nouveau_sgdma_init(struct drm_device *dev) 215 215 { 216 216 struct drm_nouveau_private *dev_priv = dev->dev_private; 217 + struct pci_dev *pdev = dev->pdev; 217 218 struct nouveau_gpuobj *gpuobj = NULL; 218 219 uint32_t aper_size, obj_size; 219 220 int i, ret; ··· 240 239 241 240 dev_priv->gart_info.sg_dummy_page = 242 241 alloc_page(GFP_KERNEL|__GFP_DMA32); 242 + if (!dev_priv->gart_info.sg_dummy_page) { 243 + nouveau_gpuobj_del(dev, &gpuobj); 244 + return -ENOMEM; 245 + } 246 + 243 247 set_bit(PG_locked, &dev_priv->gart_info.sg_dummy_page->flags); 244 248 dev_priv->gart_info.sg_dummy_bus = 245 - pci_map_page(dev->pdev, dev_priv->gart_info.sg_dummy_page, 0, 249 + pci_map_page(pdev, dev_priv->gart_info.sg_dummy_page, 0, 246 250 PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); 251 + if (pci_dma_mapping_error(pdev, dev_priv->gart_info.sg_dummy_bus)) { 252 + nouveau_gpuobj_del(dev, &gpuobj); 253 + return -EFAULT; 254 + } 247 255 248 256 if (dev_priv->card_type < NV_50) { 249 257 /* Maybe use NV_DMA_TARGET_AGP for PCIE? NVIDIA do this, and
+8
drivers/gpu/drm/nouveau/nv17_tv.c
··· 129 129 return false; 130 130 } 131 131 132 + /* MSI nForce2 IGP */ 133 + if (dev->pdev->device == 0x01f0 && 134 + dev->pdev->subsystem_vendor == 0x1462 && 135 + dev->pdev->subsystem_device == 0x5710) { 136 + *pin_mask = 0xc; 137 + return false; 138 + } 139 + 132 140 return true; 133 141 } 134 142
+1 -1
drivers/gpu/drm/nouveau/nv50_instmem.c
··· 278 278 /*XXX: incorrect, but needed to make hash func "work" */ 279 279 dev_priv->ramht_offset = 0x10000; 280 280 dev_priv->ramht_bits = 9; 281 - dev_priv->ramht_size = (1 << dev_priv->ramht_bits); 281 + dev_priv->ramht_size = (1 << dev_priv->ramht_bits) * 8; 282 282 return 0; 283 283 } 284 284
+8 -5
drivers/gpu/drm/nouveau/nvc0_instmem.c
··· 142 142 nvc0_instmem_suspend(struct drm_device *dev) 143 143 { 144 144 struct drm_nouveau_private *dev_priv = dev->dev_private; 145 + u32 *buf; 145 146 int i; 146 147 147 148 dev_priv->susres.ramin_copy = vmalloc(65536); 148 149 if (!dev_priv->susres.ramin_copy) 149 150 return -ENOMEM; 151 + buf = dev_priv->susres.ramin_copy; 150 152 151 - for (i = 0x700000; i < 0x710000; i += 4) 152 - dev_priv->susres.ramin_copy[i/4] = nv_rd32(dev, i); 153 + for (i = 0; i < 65536; i += 4) 154 + buf[i/4] = nv_rd32(dev, NV04_PRAMIN + i); 153 155 return 0; 154 156 } 155 157 ··· 159 157 nvc0_instmem_resume(struct drm_device *dev) 160 158 { 161 159 struct drm_nouveau_private *dev_priv = dev->dev_private; 160 + u32 *buf = dev_priv->susres.ramin_copy; 162 161 u64 chan; 163 162 int i; 164 163 165 164 chan = dev_priv->vram_size - dev_priv->ramin_rsvd_vram; 166 165 nv_wr32(dev, 0x001700, chan >> 16); 167 166 168 - for (i = 0x700000; i < 0x710000; i += 4) 169 - nv_wr32(dev, i, dev_priv->susres.ramin_copy[i/4]); 167 + for (i = 0; i < 65536; i += 4) 168 + nv_wr32(dev, NV04_PRAMIN + i, buf[i/4]); 170 169 vfree(dev_priv->susres.ramin_copy); 171 170 dev_priv->susres.ramin_copy = NULL; 172 171 ··· 224 221 /*XXX: incorrect, but needed to make hash func "work" */ 225 222 dev_priv->ramht_offset = 0x10000; 226 223 dev_priv->ramht_bits = 9; 227 - dev_priv->ramht_size = (1 << dev_priv->ramht_bits); 224 + dev_priv->ramht_size = (1 << dev_priv->ramht_bits) * 8; 228 225 return 0; 229 226 } 230 227
+17 -18
drivers/gpu/drm/r128/r128_state.c
··· 1639 1639 r128_do_cleanup_pageflip(dev); 1640 1640 } 1641 1641 } 1642 - 1643 1642 void r128_driver_lastclose(struct drm_device *dev) 1644 1643 { 1645 1644 r128_do_cleanup_cce(dev); 1646 1645 } 1647 1646 1648 1647 struct drm_ioctl_desc r128_ioctls[] = { 1649 - DRM_IOCTL_DEF(DRM_R128_INIT, r128_cce_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1650 - DRM_IOCTL_DEF(DRM_R128_CCE_START, r128_cce_start, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1651 - DRM_IOCTL_DEF(DRM_R128_CCE_STOP, r128_cce_stop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1652 - DRM_IOCTL_DEF(DRM_R128_CCE_RESET, r128_cce_reset, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1653 - DRM_IOCTL_DEF(DRM_R128_CCE_IDLE, r128_cce_idle, DRM_AUTH), 1654 - DRM_IOCTL_DEF(DRM_R128_RESET, r128_engine_reset, DRM_AUTH), 1655 - DRM_IOCTL_DEF(DRM_R128_FULLSCREEN, r128_fullscreen, DRM_AUTH), 1656 - DRM_IOCTL_DEF(DRM_R128_SWAP, r128_cce_swap, DRM_AUTH), 1657 - DRM_IOCTL_DEF(DRM_R128_FLIP, r128_cce_flip, DRM_AUTH), 1658 - DRM_IOCTL_DEF(DRM_R128_CLEAR, r128_cce_clear, DRM_AUTH), 1659 - DRM_IOCTL_DEF(DRM_R128_VERTEX, r128_cce_vertex, DRM_AUTH), 1660 - DRM_IOCTL_DEF(DRM_R128_INDICES, r128_cce_indices, DRM_AUTH), 1661 - DRM_IOCTL_DEF(DRM_R128_BLIT, r128_cce_blit, DRM_AUTH), 1662 - DRM_IOCTL_DEF(DRM_R128_DEPTH, r128_cce_depth, DRM_AUTH), 1663 - DRM_IOCTL_DEF(DRM_R128_STIPPLE, r128_cce_stipple, DRM_AUTH), 1664 - DRM_IOCTL_DEF(DRM_R128_INDIRECT, r128_cce_indirect, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1665 - DRM_IOCTL_DEF(DRM_R128_GETPARAM, r128_getparam, DRM_AUTH), 1648 + DRM_IOCTL_DEF_DRV(R128_INIT, r128_cce_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1649 + DRM_IOCTL_DEF_DRV(R128_CCE_START, r128_cce_start, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1650 + DRM_IOCTL_DEF_DRV(R128_CCE_STOP, r128_cce_stop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1651 + DRM_IOCTL_DEF_DRV(R128_CCE_RESET, r128_cce_reset, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1652 + DRM_IOCTL_DEF_DRV(R128_CCE_IDLE, r128_cce_idle, DRM_AUTH), 1653 + DRM_IOCTL_DEF_DRV(R128_RESET, r128_engine_reset, DRM_AUTH), 1654 + DRM_IOCTL_DEF_DRV(R128_FULLSCREEN, r128_fullscreen, DRM_AUTH), 1655 + DRM_IOCTL_DEF_DRV(R128_SWAP, r128_cce_swap, DRM_AUTH), 1656 + DRM_IOCTL_DEF_DRV(R128_FLIP, r128_cce_flip, DRM_AUTH), 1657 + DRM_IOCTL_DEF_DRV(R128_CLEAR, r128_cce_clear, DRM_AUTH), 1658 + DRM_IOCTL_DEF_DRV(R128_VERTEX, r128_cce_vertex, DRM_AUTH), 1659 + DRM_IOCTL_DEF_DRV(R128_INDICES, r128_cce_indices, DRM_AUTH), 1660 + DRM_IOCTL_DEF_DRV(R128_BLIT, r128_cce_blit, DRM_AUTH), 1661 + DRM_IOCTL_DEF_DRV(R128_DEPTH, r128_cce_depth, DRM_AUTH), 1662 + DRM_IOCTL_DEF_DRV(R128_STIPPLE, r128_cce_stipple, DRM_AUTH), 1663 + DRM_IOCTL_DEF_DRV(R128_INDIRECT, r128_cce_indirect, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1664 + DRM_IOCTL_DEF_DRV(R128_GETPARAM, r128_getparam, DRM_AUTH), 1666 1665 }; 1667 1666 1668 1667 int r128_max_ioctl = DRM_ARRAY_SIZE(r128_ioctls);
+44 -7
drivers/gpu/drm/radeon/atombios_crtc.c
··· 471 471 struct radeon_encoder *radeon_encoder = NULL; 472 472 u32 adjusted_clock = mode->clock; 473 473 int encoder_mode = 0; 474 + u32 dp_clock = mode->clock; 475 + int bpc = 8; 474 476 475 477 /* reset the pll flags */ 476 478 pll->flags = 0; ··· 515 513 if (encoder->crtc == crtc) { 516 514 radeon_encoder = to_radeon_encoder(encoder); 517 515 encoder_mode = atombios_get_encoder_mode(encoder); 516 + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT | ATOM_DEVICE_DFP_SUPPORT)) { 517 + struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 518 + if (connector) { 519 + struct radeon_connector *radeon_connector = to_radeon_connector(connector); 520 + struct radeon_connector_atom_dig *dig_connector = 521 + radeon_connector->con_priv; 522 + 523 + dp_clock = dig_connector->dp_clock; 524 + } 525 + } 526 + 518 527 if (ASIC_IS_AVIVO(rdev)) { 519 528 /* DVO wants 2x pixel clock if the DVO chip is in 12 bit mode */ 520 529 if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1) ··· 568 555 args.v1.usPixelClock = cpu_to_le16(mode->clock / 10); 569 556 args.v1.ucTransmitterID = radeon_encoder->encoder_id; 570 557 args.v1.ucEncodeMode = encoder_mode; 558 + if (encoder_mode == ATOM_ENCODER_MODE_DP) { 559 + /* may want to enable SS on DP eventually */ 560 + /* args.v1.ucConfig |= 561 + ADJUST_DISPLAY_CONFIG_SS_ENABLE;*/ 562 + } else if (encoder_mode == ATOM_ENCODER_MODE_LVDS) { 563 + args.v1.ucConfig |= 564 + ADJUST_DISPLAY_CONFIG_SS_ENABLE; 565 + } 571 566 572 567 atom_execute_table(rdev->mode_info.atom_context, 573 568 index, (uint32_t *)&args); ··· 589 568 if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) { 590 569 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 591 570 592 - if (encoder_mode == ATOM_ENCODER_MODE_DP) 571 + if (encoder_mode == ATOM_ENCODER_MODE_DP) { 572 + /* may want to enable SS on DP/eDP eventually */ 573 + /*args.v3.sInput.ucDispPllConfig |= 574 + DISPPLL_CONFIG_SS_ENABLE;*/ 593 575 args.v3.sInput.ucDispPllConfig |= 594 576 DISPPLL_CONFIG_COHERENT_MODE; 595 - else { 577 + /* 16200 or 27000 */ 578 + args.v3.sInput.usPixelClock = cpu_to_le16(dp_clock / 10); 579 + } else { 580 + if (encoder_mode == ATOM_ENCODER_MODE_HDMI) { 581 + /* deep color support */ 582 + args.v3.sInput.usPixelClock = 583 + cpu_to_le16((mode->clock * bpc / 8) / 10); 584 + } 596 585 if (dig->coherent_mode) 597 586 args.v3.sInput.ucDispPllConfig |= 598 587 DISPPLL_CONFIG_COHERENT_MODE; ··· 611 580 DISPPLL_CONFIG_DUAL_LINK; 612 581 } 613 582 } else if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { 614 - /* may want to enable SS on DP/eDP eventually */ 615 - /*args.v3.sInput.ucDispPllConfig |= 616 - DISPPLL_CONFIG_SS_ENABLE;*/ 617 - if (encoder_mode == ATOM_ENCODER_MODE_DP) 583 + if (encoder_mode == ATOM_ENCODER_MODE_DP) { 584 + /* may want to enable SS on DP/eDP eventually */ 585 + /*args.v3.sInput.ucDispPllConfig |= 586 + DISPPLL_CONFIG_SS_ENABLE;*/ 618 587 args.v3.sInput.ucDispPllConfig |= 619 588 DISPPLL_CONFIG_COHERENT_MODE; 620 - else { 589 + /* 16200 or 27000 */ 590 + args.v3.sInput.usPixelClock = cpu_to_le16(dp_clock / 10); 591 + } else if (encoder_mode == ATOM_ENCODER_MODE_LVDS) { 592 + /* want to enable SS on LVDS eventually */ 593 + /*args.v3.sInput.ucDispPllConfig |= 594 + DISPPLL_CONFIG_SS_ENABLE;*/ 595 + } else { 621 596 if (mode->clock > 165000) 622 597 args.v3.sInput.ucDispPllConfig |= 623 598 DISPPLL_CONFIG_DUAL_LINK;
+1 -1
drivers/gpu/drm/radeon/atombios_dp.c
··· 610 610 enc_id |= ATOM_DP_CONFIG_DIG2_ENCODER; 611 611 else 612 612 enc_id |= ATOM_DP_CONFIG_DIG1_ENCODER; 613 - if (dig_connector->linkb) 613 + if (dig->linkb) 614 614 enc_id |= ATOM_DP_CONFIG_LINK_B; 615 615 else 616 616 enc_id |= ATOM_DP_CONFIG_LINK_A;
+7 -1
drivers/gpu/drm/radeon/radeon_agp.c
··· 156 156 } 157 157 158 158 mode.mode = info.mode; 159 - agp_status = (RREG32(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode.mode; 159 + /* chips with the agp to pcie bridge don't have the AGP_STATUS register 160 + * Just use the whatever mode the host sets up. 161 + */ 162 + if (rdev->family <= CHIP_RV350) 163 + agp_status = (RREG32(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode.mode; 164 + else 165 + agp_status = mode.mode; 160 166 is_v3 = !!(agp_status & RADEON_AGPv3_MODE); 161 167 162 168 if (is_v3) {
+1
drivers/gpu/drm/radeon/radeon_asic.c
··· 733 733 .set_engine_clock = &radeon_atom_set_engine_clock, 734 734 .get_memory_clock = &radeon_atom_get_memory_clock, 735 735 .set_memory_clock = &radeon_atom_set_memory_clock, 736 + .get_pcie_lanes = NULL, 736 737 .set_pcie_lanes = NULL, 737 738 .set_clock_gating = NULL, 738 739 .set_surface_reg = r600_set_surface_reg,
+22 -17
drivers/gpu/drm/radeon/radeon_atombios.c
··· 32 32 33 33 /* from radeon_encoder.c */ 34 34 extern uint32_t 35 - radeon_get_encoder_id(struct drm_device *dev, uint32_t supported_device, 36 - uint8_t dac); 35 + radeon_get_encoder_enum(struct drm_device *dev, uint32_t supported_device, 36 + uint8_t dac); 37 37 extern void radeon_link_encoder_connector(struct drm_device *dev); 38 38 extern void 39 - radeon_add_atom_encoder(struct drm_device *dev, uint32_t encoder_id, 39 + radeon_add_atom_encoder(struct drm_device *dev, uint32_t encoder_enum, 40 40 uint32_t supported_device); 41 41 42 42 /* from radeon_connector.c */ ··· 46 46 uint32_t supported_device, 47 47 int connector_type, 48 48 struct radeon_i2c_bus_rec *i2c_bus, 49 - bool linkb, uint32_t igp_lane_info, 49 + uint32_t igp_lane_info, 50 50 uint16_t connector_object_id, 51 51 struct radeon_hpd *hpd, 52 52 struct radeon_router *router); 53 53 54 54 /* from radeon_legacy_encoder.c */ 55 55 extern void 56 - radeon_add_legacy_encoder(struct drm_device *dev, uint32_t encoder_id, 56 + radeon_add_legacy_encoder(struct drm_device *dev, uint32_t encoder_enum, 57 57 uint32_t supported_device); 58 58 59 59 union atom_supported_devices { ··· 225 225 { 226 226 struct radeon_hpd hpd; 227 227 u32 reg; 228 + 229 + memset(&hpd, 0, sizeof(struct radeon_hpd)); 228 230 229 231 if (ASIC_IS_DCE4(rdev)) 230 232 reg = EVERGREEN_DC_GPIO_HPD_A; ··· 479 477 int i, j, k, path_size, device_support; 480 478 int connector_type; 481 479 u16 igp_lane_info, conn_id, connector_object_id; 482 - bool linkb; 483 480 struct radeon_i2c_bus_rec ddc_bus; 484 481 struct radeon_router router; 485 482 struct radeon_gpio_rec gpio; ··· 511 510 addr += path_size; 512 511 path = (ATOM_DISPLAY_OBJECT_PATH *) addr; 513 512 path_size += le16_to_cpu(path->usSize); 514 - linkb = false; 513 + 515 514 if (device_support & le16_to_cpu(path->usDeviceTag)) { 516 515 uint8_t con_obj_id, con_obj_num, con_obj_type; 517 516 ··· 602 601 OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT; 603 602 604 603 if (grph_obj_type == GRAPH_OBJECT_TYPE_ENCODER) { 605 - if (grph_obj_num == 2) 606 - linkb = true; 607 - else 608 - linkb = false; 604 + u16 encoder_obj = le16_to_cpu(path->usGraphicObjIds[j]); 609 605 610 606 radeon_add_atom_encoder(dev, 611 - grph_obj_id, 607 + encoder_obj, 612 608 le16_to_cpu 613 609 (path-> 614 610 usDeviceTag)); ··· 742 744 le16_to_cpu(path-> 743 745 usDeviceTag), 744 746 connector_type, &ddc_bus, 745 - linkb, igp_lane_info, 747 + igp_lane_info, 746 748 connector_object_id, 747 749 &hpd, 748 750 &router); ··· 931 933 932 934 if (ASIC_IS_AVIVO(rdev) || radeon_r4xx_atom) 933 935 radeon_add_atom_encoder(dev, 934 - radeon_get_encoder_id(dev, 936 + radeon_get_encoder_enum(dev, 935 937 (1 << i), 936 938 dac), 937 939 (1 << i)); 938 940 else 939 941 radeon_add_legacy_encoder(dev, 940 - radeon_get_encoder_id(dev, 942 + radeon_get_encoder_enum(dev, 941 943 (1 << i), 942 944 dac), 943 945 (1 << i)); ··· 994 996 bios_connectors[i]. 995 997 connector_type, 996 998 &bios_connectors[i].ddc_bus, 997 - false, 0, 999 + 0, 998 1000 connector_object_id, 999 1001 &bios_connectors[i].hpd, 1000 1002 &router); ··· 1181 1183 return true; 1182 1184 break; 1183 1185 case 2: 1184 - if (igp_info->info_2.ucMemoryType & 0x0f) 1186 + if (igp_info->info_2.ulBootUpSidePortClock) 1185 1187 return true; 1186 1188 break; 1187 1189 default: ··· 1303 1305 union lvds_info *lvds_info; 1304 1306 uint8_t frev, crev; 1305 1307 struct radeon_encoder_atom_dig *lvds = NULL; 1308 + int encoder_enum = (encoder->encoder_enum & ENUM_ID_MASK) >> ENUM_ID_SHIFT; 1306 1309 1307 1310 if (atom_parse_data_header(mode_info->atom_context, index, NULL, 1308 1311 &frev, &crev, &data_offset)) { ··· 1367 1368 } 1368 1369 1369 1370 encoder->native_mode = lvds->native_mode; 1371 + 1372 + if (encoder_enum == 2) 1373 + lvds->linkb = true; 1374 + else 1375 + lvds->linkb = false; 1376 + 1370 1377 } 1371 1378 return lvds; 1372 1379 }
+52 -52
drivers/gpu/drm/radeon/radeon_combios.c
··· 39 39 40 40 /* from radeon_encoder.c */ 41 41 extern uint32_t 42 - radeon_get_encoder_id(struct drm_device *dev, uint32_t supported_device, 43 - uint8_t dac); 42 + radeon_get_encoder_enum(struct drm_device *dev, uint32_t supported_device, 43 + uint8_t dac); 44 44 extern void radeon_link_encoder_connector(struct drm_device *dev); 45 45 46 46 /* from radeon_connector.c */ ··· 55 55 56 56 /* from radeon_legacy_encoder.c */ 57 57 extern void 58 - radeon_add_legacy_encoder(struct drm_device *dev, uint32_t encoder_id, 58 + radeon_add_legacy_encoder(struct drm_device *dev, uint32_t encoder_enum, 59 59 uint32_t supported_device); 60 60 61 61 /* old legacy ATI BIOS routines */ ··· 1505 1505 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1506 1506 hpd.hpd = RADEON_HPD_NONE; 1507 1507 radeon_add_legacy_encoder(dev, 1508 - radeon_get_encoder_id(dev, 1508 + radeon_get_encoder_enum(dev, 1509 1509 ATOM_DEVICE_CRT1_SUPPORT, 1510 1510 1), 1511 1511 ATOM_DEVICE_CRT1_SUPPORT); ··· 1520 1520 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_NONE_DETECTED, 0, 0); 1521 1521 hpd.hpd = RADEON_HPD_NONE; 1522 1522 radeon_add_legacy_encoder(dev, 1523 - radeon_get_encoder_id(dev, 1523 + radeon_get_encoder_enum(dev, 1524 1524 ATOM_DEVICE_LCD1_SUPPORT, 1525 1525 0), 1526 1526 ATOM_DEVICE_LCD1_SUPPORT); ··· 1535 1535 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1536 1536 hpd.hpd = RADEON_HPD_NONE; 1537 1537 radeon_add_legacy_encoder(dev, 1538 - radeon_get_encoder_id(dev, 1538 + radeon_get_encoder_enum(dev, 1539 1539 ATOM_DEVICE_CRT1_SUPPORT, 1540 1540 1), 1541 1541 ATOM_DEVICE_CRT1_SUPPORT); ··· 1550 1550 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); 1551 1551 hpd.hpd = RADEON_HPD_1; 1552 1552 radeon_add_legacy_encoder(dev, 1553 - radeon_get_encoder_id(dev, 1553 + radeon_get_encoder_enum(dev, 1554 1554 ATOM_DEVICE_DFP1_SUPPORT, 1555 1555 0), 1556 1556 ATOM_DEVICE_DFP1_SUPPORT); 1557 1557 radeon_add_legacy_encoder(dev, 1558 - radeon_get_encoder_id(dev, 1558 + radeon_get_encoder_enum(dev, 1559 1559 ATOM_DEVICE_CRT2_SUPPORT, 1560 1560 2), 1561 1561 ATOM_DEVICE_CRT2_SUPPORT); ··· 1571 1571 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1572 1572 hpd.hpd = RADEON_HPD_NONE; 1573 1573 radeon_add_legacy_encoder(dev, 1574 - radeon_get_encoder_id(dev, 1574 + radeon_get_encoder_enum(dev, 1575 1575 ATOM_DEVICE_CRT1_SUPPORT, 1576 1576 1), 1577 1577 ATOM_DEVICE_CRT1_SUPPORT); ··· 1588 1588 ddc_i2c.valid = false; 1589 1589 hpd.hpd = RADEON_HPD_NONE; 1590 1590 radeon_add_legacy_encoder(dev, 1591 - radeon_get_encoder_id(dev, 1591 + radeon_get_encoder_enum(dev, 1592 1592 ATOM_DEVICE_TV1_SUPPORT, 1593 1593 2), 1594 1594 ATOM_DEVICE_TV1_SUPPORT); ··· 1607 1607 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); 1608 1608 hpd.hpd = RADEON_HPD_NONE; 1609 1609 radeon_add_legacy_encoder(dev, 1610 - radeon_get_encoder_id(dev, 1610 + radeon_get_encoder_enum(dev, 1611 1611 ATOM_DEVICE_LCD1_SUPPORT, 1612 1612 0), 1613 1613 ATOM_DEVICE_LCD1_SUPPORT); ··· 1619 1619 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1620 1620 hpd.hpd = RADEON_HPD_NONE; 1621 1621 radeon_add_legacy_encoder(dev, 1622 - radeon_get_encoder_id(dev, 1622 + radeon_get_encoder_enum(dev, 1623 1623 ATOM_DEVICE_CRT2_SUPPORT, 1624 1624 2), 1625 1625 ATOM_DEVICE_CRT2_SUPPORT); ··· 1631 1631 ddc_i2c.valid = false; 1632 1632 hpd.hpd = RADEON_HPD_NONE; 1633 1633 radeon_add_legacy_encoder(dev, 1634 - radeon_get_encoder_id(dev, 1634 + radeon_get_encoder_enum(dev, 1635 1635 ATOM_DEVICE_TV1_SUPPORT, 1636 1636 2), 1637 1637 ATOM_DEVICE_TV1_SUPPORT); ··· 1648 1648 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); 1649 1649 hpd.hpd = RADEON_HPD_NONE; 1650 1650 radeon_add_legacy_encoder(dev, 1651 - radeon_get_encoder_id(dev, 1651 + radeon_get_encoder_enum(dev, 1652 1652 ATOM_DEVICE_LCD1_SUPPORT, 1653 1653 0), 1654 1654 ATOM_DEVICE_LCD1_SUPPORT); ··· 1660 1660 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1661 1661 hpd.hpd = RADEON_HPD_2; /* ??? */ 1662 1662 radeon_add_legacy_encoder(dev, 1663 - radeon_get_encoder_id(dev, 1663 + radeon_get_encoder_enum(dev, 1664 1664 ATOM_DEVICE_DFP2_SUPPORT, 1665 1665 0), 1666 1666 ATOM_DEVICE_DFP2_SUPPORT); 1667 1667 radeon_add_legacy_encoder(dev, 1668 - radeon_get_encoder_id(dev, 1668 + radeon_get_encoder_enum(dev, 1669 1669 ATOM_DEVICE_CRT1_SUPPORT, 1670 1670 1), 1671 1671 ATOM_DEVICE_CRT1_SUPPORT); ··· 1680 1680 ddc_i2c.valid = false; 1681 1681 hpd.hpd = RADEON_HPD_NONE; 1682 1682 radeon_add_legacy_encoder(dev, 1683 - radeon_get_encoder_id(dev, 1683 + radeon_get_encoder_enum(dev, 1684 1684 ATOM_DEVICE_TV1_SUPPORT, 1685 1685 2), 1686 1686 ATOM_DEVICE_TV1_SUPPORT); ··· 1697 1697 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); 1698 1698 hpd.hpd = RADEON_HPD_NONE; 1699 1699 radeon_add_legacy_encoder(dev, 1700 - radeon_get_encoder_id(dev, 1700 + radeon_get_encoder_enum(dev, 1701 1701 ATOM_DEVICE_LCD1_SUPPORT, 1702 1702 0), 1703 1703 ATOM_DEVICE_LCD1_SUPPORT); ··· 1709 1709 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1710 1710 hpd.hpd = RADEON_HPD_1; /* ??? */ 1711 1711 radeon_add_legacy_encoder(dev, 1712 - radeon_get_encoder_id(dev, 1712 + radeon_get_encoder_enum(dev, 1713 1713 ATOM_DEVICE_DFP1_SUPPORT, 1714 1714 0), 1715 1715 ATOM_DEVICE_DFP1_SUPPORT); 1716 1716 radeon_add_legacy_encoder(dev, 1717 - radeon_get_encoder_id(dev, 1717 + radeon_get_encoder_enum(dev, 1718 1718 ATOM_DEVICE_CRT1_SUPPORT, 1719 1719 1), 1720 1720 ATOM_DEVICE_CRT1_SUPPORT); ··· 1728 1728 ddc_i2c.valid = false; 1729 1729 hpd.hpd = RADEON_HPD_NONE; 1730 1730 radeon_add_legacy_encoder(dev, 1731 - radeon_get_encoder_id(dev, 1731 + radeon_get_encoder_enum(dev, 1732 1732 ATOM_DEVICE_TV1_SUPPORT, 1733 1733 2), 1734 1734 ATOM_DEVICE_TV1_SUPPORT); ··· 1745 1745 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); 1746 1746 hpd.hpd = RADEON_HPD_NONE; 1747 1747 radeon_add_legacy_encoder(dev, 1748 - radeon_get_encoder_id(dev, 1748 + radeon_get_encoder_enum(dev, 1749 1749 ATOM_DEVICE_LCD1_SUPPORT, 1750 1750 0), 1751 1751 ATOM_DEVICE_LCD1_SUPPORT); ··· 1757 1757 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1758 1758 hpd.hpd = RADEON_HPD_NONE; 1759 1759 radeon_add_legacy_encoder(dev, 1760 - radeon_get_encoder_id(dev, 1760 + radeon_get_encoder_enum(dev, 1761 1761 ATOM_DEVICE_CRT1_SUPPORT, 1762 1762 1), 1763 1763 ATOM_DEVICE_CRT1_SUPPORT); ··· 1769 1769 ddc_i2c.valid = false; 1770 1770 hpd.hpd = RADEON_HPD_NONE; 1771 1771 radeon_add_legacy_encoder(dev, 1772 - radeon_get_encoder_id(dev, 1772 + radeon_get_encoder_enum(dev, 1773 1773 ATOM_DEVICE_TV1_SUPPORT, 1774 1774 2), 1775 1775 ATOM_DEVICE_TV1_SUPPORT); ··· 1786 1786 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_CRT2, 0, 0); 1787 1787 hpd.hpd = RADEON_HPD_2; /* ??? */ 1788 1788 radeon_add_legacy_encoder(dev, 1789 - radeon_get_encoder_id(dev, 1789 + radeon_get_encoder_enum(dev, 1790 1790 ATOM_DEVICE_DFP2_SUPPORT, 1791 1791 0), 1792 1792 ATOM_DEVICE_DFP2_SUPPORT); 1793 1793 radeon_add_legacy_encoder(dev, 1794 - radeon_get_encoder_id(dev, 1794 + radeon_get_encoder_enum(dev, 1795 1795 ATOM_DEVICE_CRT2_SUPPORT, 1796 1796 2), 1797 1797 ATOM_DEVICE_CRT2_SUPPORT); ··· 1806 1806 ddc_i2c.valid = false; 1807 1807 hpd.hpd = RADEON_HPD_NONE; 1808 1808 radeon_add_legacy_encoder(dev, 1809 - radeon_get_encoder_id(dev, 1809 + radeon_get_encoder_enum(dev, 1810 1810 ATOM_DEVICE_TV1_SUPPORT, 1811 1811 2), 1812 1812 ATOM_DEVICE_TV1_SUPPORT); ··· 1823 1823 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_CRT2, 0, 0); 1824 1824 hpd.hpd = RADEON_HPD_1; /* ??? */ 1825 1825 radeon_add_legacy_encoder(dev, 1826 - radeon_get_encoder_id(dev, 1826 + radeon_get_encoder_enum(dev, 1827 1827 ATOM_DEVICE_DFP1_SUPPORT, 1828 1828 0), 1829 1829 ATOM_DEVICE_DFP1_SUPPORT); 1830 1830 radeon_add_legacy_encoder(dev, 1831 - radeon_get_encoder_id(dev, 1831 + radeon_get_encoder_enum(dev, 1832 1832 ATOM_DEVICE_CRT2_SUPPORT, 1833 1833 2), 1834 1834 ATOM_DEVICE_CRT2_SUPPORT); ··· 1842 1842 ddc_i2c.valid = false; 1843 1843 hpd.hpd = RADEON_HPD_NONE; 1844 1844 radeon_add_legacy_encoder(dev, 1845 - radeon_get_encoder_id(dev, 1845 + radeon_get_encoder_enum(dev, 1846 1846 ATOM_DEVICE_TV1_SUPPORT, 1847 1847 2), 1848 1848 ATOM_DEVICE_TV1_SUPPORT); ··· 1859 1859 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_MONID, 0, 0); 1860 1860 hpd.hpd = RADEON_HPD_1; /* ??? */ 1861 1861 radeon_add_legacy_encoder(dev, 1862 - radeon_get_encoder_id(dev, 1862 + radeon_get_encoder_enum(dev, 1863 1863 ATOM_DEVICE_DFP1_SUPPORT, 1864 1864 0), 1865 1865 ATOM_DEVICE_DFP1_SUPPORT); ··· 1871 1871 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); 1872 1872 hpd.hpd = RADEON_HPD_NONE; 1873 1873 radeon_add_legacy_encoder(dev, 1874 - radeon_get_encoder_id(dev, 1874 + radeon_get_encoder_enum(dev, 1875 1875 ATOM_DEVICE_CRT2_SUPPORT, 1876 1876 2), 1877 1877 ATOM_DEVICE_CRT2_SUPPORT); ··· 1883 1883 ddc_i2c.valid = false; 1884 1884 hpd.hpd = RADEON_HPD_NONE; 1885 1885 radeon_add_legacy_encoder(dev, 1886 - radeon_get_encoder_id(dev, 1886 + radeon_get_encoder_enum(dev, 1887 1887 ATOM_DEVICE_TV1_SUPPORT, 1888 1888 2), 1889 1889 ATOM_DEVICE_TV1_SUPPORT); ··· 1900 1900 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1901 1901 hpd.hpd = RADEON_HPD_NONE; 1902 1902 radeon_add_legacy_encoder(dev, 1903 - radeon_get_encoder_id(dev, 1903 + radeon_get_encoder_enum(dev, 1904 1904 ATOM_DEVICE_CRT1_SUPPORT, 1905 1905 1), 1906 1906 ATOM_DEVICE_CRT1_SUPPORT); ··· 1912 1912 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_CRT2, 0, 0); 1913 1913 hpd.hpd = RADEON_HPD_NONE; 1914 1914 radeon_add_legacy_encoder(dev, 1915 - radeon_get_encoder_id(dev, 1915 + radeon_get_encoder_enum(dev, 1916 1916 ATOM_DEVICE_CRT2_SUPPORT, 1917 1917 2), 1918 1918 ATOM_DEVICE_CRT2_SUPPORT); ··· 1924 1924 ddc_i2c.valid = false; 1925 1925 hpd.hpd = RADEON_HPD_NONE; 1926 1926 radeon_add_legacy_encoder(dev, 1927 - radeon_get_encoder_id(dev, 1927 + radeon_get_encoder_enum(dev, 1928 1928 ATOM_DEVICE_TV1_SUPPORT, 1929 1929 2), 1930 1930 ATOM_DEVICE_TV1_SUPPORT); ··· 1941 1941 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); 1942 1942 hpd.hpd = RADEON_HPD_NONE; 1943 1943 radeon_add_legacy_encoder(dev, 1944 - radeon_get_encoder_id(dev, 1944 + radeon_get_encoder_enum(dev, 1945 1945 ATOM_DEVICE_CRT1_SUPPORT, 1946 1946 1), 1947 1947 ATOM_DEVICE_CRT1_SUPPORT); ··· 1952 1952 ddc_i2c = combios_setup_i2c_bus(rdev, DDC_CRT2, 0, 0); 1953 1953 hpd.hpd = RADEON_HPD_NONE; 1954 1954 radeon_add_legacy_encoder(dev, 1955 - radeon_get_encoder_id(dev, 1955 + radeon_get_encoder_enum(dev, 1956 1956 ATOM_DEVICE_CRT2_SUPPORT, 1957 1957 2), 1958 1958 ATOM_DEVICE_CRT2_SUPPORT); ··· 2109 2109 else 2110 2110 devices = ATOM_DEVICE_DFP1_SUPPORT; 2111 2111 radeon_add_legacy_encoder(dev, 2112 - radeon_get_encoder_id 2112 + radeon_get_encoder_enum 2113 2113 (dev, devices, 0), 2114 2114 devices); 2115 2115 radeon_add_legacy_connector(dev, i, devices, ··· 2123 2123 if (tmp & 0x1) { 2124 2124 devices = ATOM_DEVICE_CRT2_SUPPORT; 2125 2125 radeon_add_legacy_encoder(dev, 2126 - radeon_get_encoder_id 2126 + radeon_get_encoder_enum 2127 2127 (dev, 2128 2128 ATOM_DEVICE_CRT2_SUPPORT, 2129 2129 2), ··· 2131 2131 } else { 2132 2132 devices = ATOM_DEVICE_CRT1_SUPPORT; 2133 2133 radeon_add_legacy_encoder(dev, 2134 - radeon_get_encoder_id 2134 + radeon_get_encoder_enum 2135 2135 (dev, 2136 2136 ATOM_DEVICE_CRT1_SUPPORT, 2137 2137 1), ··· 2151 2151 if (tmp & 0x1) { 2152 2152 devices |= ATOM_DEVICE_CRT2_SUPPORT; 2153 2153 radeon_add_legacy_encoder(dev, 2154 - radeon_get_encoder_id 2154 + radeon_get_encoder_enum 2155 2155 (dev, 2156 2156 ATOM_DEVICE_CRT2_SUPPORT, 2157 2157 2), ··· 2159 2159 } else { 2160 2160 devices |= ATOM_DEVICE_CRT1_SUPPORT; 2161 2161 radeon_add_legacy_encoder(dev, 2162 - radeon_get_encoder_id 2162 + radeon_get_encoder_enum 2163 2163 (dev, 2164 2164 ATOM_DEVICE_CRT1_SUPPORT, 2165 2165 1), ··· 2168 2168 if ((tmp >> 4) & 0x1) { 2169 2169 devices |= ATOM_DEVICE_DFP2_SUPPORT; 2170 2170 radeon_add_legacy_encoder(dev, 2171 - radeon_get_encoder_id 2171 + radeon_get_encoder_enum 2172 2172 (dev, 2173 2173 ATOM_DEVICE_DFP2_SUPPORT, 2174 2174 0), ··· 2177 2177 } else { 2178 2178 devices |= ATOM_DEVICE_DFP1_SUPPORT; 2179 2179 radeon_add_legacy_encoder(dev, 2180 - radeon_get_encoder_id 2180 + radeon_get_encoder_enum 2181 2181 (dev, 2182 2182 ATOM_DEVICE_DFP1_SUPPORT, 2183 2183 0), ··· 2202 2202 connector_object_id = CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I; 2203 2203 } 2204 2204 radeon_add_legacy_encoder(dev, 2205 - radeon_get_encoder_id 2205 + radeon_get_encoder_enum 2206 2206 (dev, devices, 0), 2207 2207 devices); 2208 2208 radeon_add_legacy_connector(dev, i, devices, ··· 2215 2215 case CONNECTOR_CTV_LEGACY: 2216 2216 case CONNECTOR_STV_LEGACY: 2217 2217 radeon_add_legacy_encoder(dev, 2218 - radeon_get_encoder_id 2218 + radeon_get_encoder_enum 2219 2219 (dev, 2220 2220 ATOM_DEVICE_TV1_SUPPORT, 2221 2221 2), ··· 2242 2242 DRM_DEBUG_KMS("Found DFP table, assuming DVI connector\n"); 2243 2243 2244 2244 radeon_add_legacy_encoder(dev, 2245 - radeon_get_encoder_id(dev, 2245 + radeon_get_encoder_enum(dev, 2246 2246 ATOM_DEVICE_CRT1_SUPPORT, 2247 2247 1), 2248 2248 ATOM_DEVICE_CRT1_SUPPORT); 2249 2249 radeon_add_legacy_encoder(dev, 2250 - radeon_get_encoder_id(dev, 2250 + radeon_get_encoder_enum(dev, 2251 2251 ATOM_DEVICE_DFP1_SUPPORT, 2252 2252 0), 2253 2253 ATOM_DEVICE_DFP1_SUPPORT); ··· 2268 2268 DRM_DEBUG_KMS("Found CRT table, assuming VGA connector\n"); 2269 2269 if (crt_info) { 2270 2270 radeon_add_legacy_encoder(dev, 2271 - radeon_get_encoder_id(dev, 2271 + radeon_get_encoder_enum(dev, 2272 2272 ATOM_DEVICE_CRT1_SUPPORT, 2273 2273 1), 2274 2274 ATOM_DEVICE_CRT1_SUPPORT); ··· 2297 2297 COMBIOS_LCD_DDC_INFO_TABLE); 2298 2298 2299 2299 radeon_add_legacy_encoder(dev, 2300 - radeon_get_encoder_id(dev, 2300 + radeon_get_encoder_enum(dev, 2301 2301 ATOM_DEVICE_LCD1_SUPPORT, 2302 2302 0), 2303 2303 ATOM_DEVICE_LCD1_SUPPORT); ··· 2351 2351 hpd.hpd = RADEON_HPD_NONE; 2352 2352 ddc_i2c.valid = false; 2353 2353 radeon_add_legacy_encoder(dev, 2354 - radeon_get_encoder_id 2354 + radeon_get_encoder_enum 2355 2355 (dev, 2356 2356 ATOM_DEVICE_TV1_SUPPORT, 2357 2357 2),
+11 -15
drivers/gpu/drm/radeon/radeon_connectors.c
··· 977 977 struct radeon_connector *radeon_connector = to_radeon_connector(connector); 978 978 enum drm_connector_status ret = connector_status_disconnected; 979 979 struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv; 980 - u8 sink_type; 981 980 982 981 if (radeon_connector->edid) { 983 982 kfree(radeon_connector->edid); 984 983 radeon_connector->edid = NULL; 985 984 } 986 985 987 - sink_type = radeon_dp_getsinktype(radeon_connector); 988 - if ((sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || 989 - (sink_type == CONNECTOR_OBJECT_ID_eDP)) { 990 - if (radeon_dp_getdpcd(radeon_connector)) { 991 - radeon_dig_connector->dp_sink_type = sink_type; 986 + if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { 987 + /* eDP is always DP */ 988 + radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; 989 + if (radeon_dp_getdpcd(radeon_connector)) 992 990 ret = connector_status_connected; 993 - } 994 991 } else { 995 - if (radeon_ddc_probe(radeon_connector)) { 996 - radeon_dig_connector->dp_sink_type = sink_type; 997 - ret = connector_status_connected; 992 + radeon_dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector); 993 + if (radeon_dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { 994 + if (radeon_dp_getdpcd(radeon_connector)) 995 + ret = connector_status_connected; 996 + } else { 997 + if (radeon_ddc_probe(radeon_connector)) 998 + ret = connector_status_connected; 998 999 } 999 1000 } 1000 1001 ··· 1038 1037 uint32_t supported_device, 1039 1038 int connector_type, 1040 1039 struct radeon_i2c_bus_rec *i2c_bus, 1041 - bool linkb, 1042 1040 uint32_t igp_lane_info, 1043 1041 uint16_t connector_object_id, 1044 1042 struct radeon_hpd *hpd, ··· 1128 1128 radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); 1129 1129 if (!radeon_dig_connector) 1130 1130 goto failed; 1131 - radeon_dig_connector->linkb = linkb; 1132 1131 radeon_dig_connector->igp_lane_info = igp_lane_info; 1133 1132 radeon_connector->con_priv = radeon_dig_connector; 1134 1133 drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); ··· 1157 1158 radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); 1158 1159 if (!radeon_dig_connector) 1159 1160 goto failed; 1160 - radeon_dig_connector->linkb = linkb; 1161 1161 radeon_dig_connector->igp_lane_info = igp_lane_info; 1162 1162 radeon_connector->con_priv = radeon_dig_connector; 1163 1163 drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); ··· 1180 1182 radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); 1181 1183 if (!radeon_dig_connector) 1182 1184 goto failed; 1183 - radeon_dig_connector->linkb = linkb; 1184 1185 radeon_dig_connector->igp_lane_info = igp_lane_info; 1185 1186 radeon_connector->con_priv = radeon_dig_connector; 1186 1187 drm_connector_init(dev, &radeon_connector->base, &radeon_dp_connector_funcs, connector_type); ··· 1226 1229 radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); 1227 1230 if (!radeon_dig_connector) 1228 1231 goto failed; 1229 - radeon_dig_connector->linkb = linkb; 1230 1232 radeon_dig_connector->igp_lane_info = igp_lane_info; 1231 1233 radeon_connector->con_priv = radeon_dig_connector; 1232 1234 drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type);
+1 -1
drivers/gpu/drm/radeon/radeon_device.c
··· 199 199 mc->mc_vram_size = mc->aper_size; 200 200 } 201 201 mc->vram_end = mc->vram_start + mc->mc_vram_size - 1; 202 - if (rdev->flags & RADEON_IS_AGP && mc->vram_end > mc->gtt_start && mc->vram_end <= mc->gtt_end) { 202 + if (rdev->flags & RADEON_IS_AGP && mc->vram_end > mc->gtt_start && mc->vram_start <= mc->gtt_end) { 203 203 dev_warn(rdev->dev, "limiting VRAM to PCI aperture size\n"); 204 204 mc->real_vram_size = mc->aper_size; 205 205 mc->mc_vram_size = mc->aper_size;
+14 -1
drivers/gpu/drm/radeon/radeon_display.c
··· 1094 1094 radeon_i2c_fini(rdev); 1095 1095 } 1096 1096 1097 + static bool is_hdtv_mode(struct drm_display_mode *mode) 1098 + { 1099 + /* try and guess if this is a tv or a monitor */ 1100 + if ((mode->vdisplay == 480 && mode->hdisplay == 720) || /* 480p */ 1101 + (mode->vdisplay == 576) || /* 576p */ 1102 + (mode->vdisplay == 720) || /* 720p */ 1103 + (mode->vdisplay == 1080)) /* 1080p */ 1104 + return true; 1105 + else 1106 + return false; 1107 + } 1108 + 1097 1109 bool radeon_crtc_scaling_mode_fixup(struct drm_crtc *crtc, 1098 1110 struct drm_display_mode *mode, 1099 1111 struct drm_display_mode *adjusted_mode) ··· 1153 1141 if (ASIC_IS_AVIVO(rdev) && 1154 1142 ((radeon_encoder->underscan_type == UNDERSCAN_ON) || 1155 1143 ((radeon_encoder->underscan_type == UNDERSCAN_AUTO) && 1156 - drm_detect_hdmi_monitor(radeon_connector->edid)))) { 1144 + drm_detect_hdmi_monitor(radeon_connector->edid) && 1145 + is_hdtv_mode(mode)))) { 1157 1146 radeon_crtc->h_border = (mode->hdisplay >> 5) + 16; 1158 1147 radeon_crtc->v_border = (mode->vdisplay >> 5) + 16; 1159 1148 radeon_crtc->rmx_type = RMX_FULL;
+116 -107
drivers/gpu/drm/radeon/radeon_encoders.c
··· 81 81 } 82 82 83 83 uint32_t 84 - radeon_get_encoder_id(struct drm_device *dev, uint32_t supported_device, uint8_t dac) 84 + radeon_get_encoder_enum(struct drm_device *dev, uint32_t supported_device, uint8_t dac) 85 85 { 86 86 struct radeon_device *rdev = dev->dev_private; 87 87 uint32_t ret = 0; ··· 97 97 if ((rdev->family == CHIP_RS300) || 98 98 (rdev->family == CHIP_RS400) || 99 99 (rdev->family == CHIP_RS480)) 100 - ret = ENCODER_OBJECT_ID_INTERNAL_DAC2; 100 + ret = ENCODER_INTERNAL_DAC2_ENUM_ID1; 101 101 else if (ASIC_IS_AVIVO(rdev)) 102 - ret = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1; 102 + ret = ENCODER_INTERNAL_KLDSCP_DAC1_ENUM_ID1; 103 103 else 104 - ret = ENCODER_OBJECT_ID_INTERNAL_DAC1; 104 + ret = ENCODER_INTERNAL_DAC1_ENUM_ID1; 105 105 break; 106 106 case 2: /* dac b */ 107 107 if (ASIC_IS_AVIVO(rdev)) 108 - ret = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2; 108 + ret = ENCODER_INTERNAL_KLDSCP_DAC2_ENUM_ID1; 109 109 else { 110 110 /*if (rdev->family == CHIP_R200) 111 - ret = ENCODER_OBJECT_ID_INTERNAL_DVO1; 111 + ret = ENCODER_INTERNAL_DVO1_ENUM_ID1; 112 112 else*/ 113 - ret = ENCODER_OBJECT_ID_INTERNAL_DAC2; 113 + ret = ENCODER_INTERNAL_DAC2_ENUM_ID1; 114 114 } 115 115 break; 116 116 case 3: /* external dac */ 117 117 if (ASIC_IS_AVIVO(rdev)) 118 - ret = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1; 118 + ret = ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1; 119 119 else 120 - ret = ENCODER_OBJECT_ID_INTERNAL_DVO1; 120 + ret = ENCODER_INTERNAL_DVO1_ENUM_ID1; 121 121 break; 122 122 } 123 123 break; 124 124 case ATOM_DEVICE_LCD1_SUPPORT: 125 125 if (ASIC_IS_AVIVO(rdev)) 126 - ret = ENCODER_OBJECT_ID_INTERNAL_LVTM1; 126 + ret = ENCODER_INTERNAL_LVTM1_ENUM_ID1; 127 127 else 128 - ret = ENCODER_OBJECT_ID_INTERNAL_LVDS; 128 + ret = ENCODER_INTERNAL_LVDS_ENUM_ID1; 129 129 break; 130 130 case ATOM_DEVICE_DFP1_SUPPORT: 131 131 if ((rdev->family == CHIP_RS300) || 132 132 (rdev->family == CHIP_RS400) || 133 133 (rdev->family == CHIP_RS480)) 134 - ret = ENCODER_OBJECT_ID_INTERNAL_DVO1; 134 + ret = ENCODER_INTERNAL_DVO1_ENUM_ID1; 135 135 else if (ASIC_IS_AVIVO(rdev)) 136 - ret = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1; 136 + ret = ENCODER_INTERNAL_KLDSCP_TMDS1_ENUM_ID1; 137 137 else 138 - ret = ENCODER_OBJECT_ID_INTERNAL_TMDS1; 138 + ret = ENCODER_INTERNAL_TMDS1_ENUM_ID1; 139 139 break; 140 140 case ATOM_DEVICE_LCD2_SUPPORT: 141 141 case ATOM_DEVICE_DFP2_SUPPORT: 142 142 if ((rdev->family == CHIP_RS600) || 143 143 (rdev->family == CHIP_RS690) || 144 144 (rdev->family == CHIP_RS740)) 145 - ret = ENCODER_OBJECT_ID_INTERNAL_DDI; 145 + ret = ENCODER_INTERNAL_DDI_ENUM_ID1; 146 146 else if (ASIC_IS_AVIVO(rdev)) 147 - ret = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1; 147 + ret = ENCODER_INTERNAL_KLDSCP_DVO1_ENUM_ID1; 148 148 else 149 - ret = ENCODER_OBJECT_ID_INTERNAL_DVO1; 149 + ret = ENCODER_INTERNAL_DVO1_ENUM_ID1; 150 150 break; 151 151 case ATOM_DEVICE_DFP3_SUPPORT: 152 - ret = ENCODER_OBJECT_ID_INTERNAL_LVTM1; 152 + ret = ENCODER_INTERNAL_LVTM1_ENUM_ID1; 153 153 break; 154 154 } 155 155 ··· 226 226 return connector; 227 227 } 228 228 return NULL; 229 - } 230 - 231 - static struct radeon_connector_atom_dig * 232 - radeon_get_atom_connector_priv_from_encoder(struct drm_encoder *encoder) 233 - { 234 - struct drm_device *dev = encoder->dev; 235 - struct radeon_device *rdev = dev->dev_private; 236 - struct drm_connector *connector; 237 - struct radeon_connector *radeon_connector; 238 - struct radeon_connector_atom_dig *dig_connector; 239 - 240 - if (!rdev->is_atom_bios) 241 - return NULL; 242 - 243 - connector = radeon_get_connector_for_encoder(encoder); 244 - if (!connector) 245 - return NULL; 246 - 247 - radeon_connector = to_radeon_connector(connector); 248 - 249 - if (!radeon_connector->con_priv) 250 - return NULL; 251 - 252 - dig_connector = radeon_connector->con_priv; 253 - 254 - return dig_connector; 255 229 } 256 230 257 231 void radeon_panel_mode_fixup(struct drm_encoder *encoder, ··· 486 512 struct radeon_device *rdev = dev->dev_private; 487 513 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 488 514 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 489 - struct radeon_connector_atom_dig *dig_connector = 490 - radeon_get_atom_connector_priv_from_encoder(encoder); 491 515 union lvds_encoder_control args; 492 516 int index = 0; 493 517 int hdmi_detected = 0; 494 518 uint8_t frev, crev; 495 519 496 - if (!dig || !dig_connector) 520 + if (!dig) 497 521 return; 498 522 499 523 if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI) ··· 534 562 if (dig->lvds_misc & ATOM_PANEL_MISC_888RGB) 535 563 args.v1.ucMisc |= (1 << 1); 536 564 } else { 537 - if (dig_connector->linkb) 565 + if (dig->linkb) 538 566 args.v1.ucMisc |= PANEL_ENCODER_MISC_TMDS_LINKB; 539 567 if (radeon_encoder->pixel_clock > 165000) 540 568 args.v1.ucMisc |= PANEL_ENCODER_MISC_DUAL; ··· 573 601 args.v2.ucTemporal |= PANEL_ENCODER_TEMPORAL_LEVEL_4; 574 602 } 575 603 } else { 576 - if (dig_connector->linkb) 604 + if (dig->linkb) 577 605 args.v2.ucMisc |= PANEL_ENCODER_MISC_TMDS_LINKB; 578 606 if (radeon_encoder->pixel_clock > 165000) 579 607 args.v2.ucMisc |= PANEL_ENCODER_MISC_DUAL; ··· 595 623 int 596 624 atombios_get_encoder_mode(struct drm_encoder *encoder) 597 625 { 626 + struct drm_device *dev = encoder->dev; 627 + struct radeon_device *rdev = dev->dev_private; 598 628 struct drm_connector *connector; 599 629 struct radeon_connector *radeon_connector; 600 630 struct radeon_connector_atom_dig *dig_connector; ··· 610 636 switch (connector->connector_type) { 611 637 case DRM_MODE_CONNECTOR_DVII: 612 638 case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */ 613 - if (drm_detect_hdmi_monitor(radeon_connector->edid)) 614 - return ATOM_ENCODER_MODE_HDMI; 615 - else if (radeon_connector->use_digital) 639 + if (drm_detect_hdmi_monitor(radeon_connector->edid)) { 640 + /* fix me */ 641 + if (ASIC_IS_DCE4(rdev)) 642 + return ATOM_ENCODER_MODE_DVI; 643 + else 644 + return ATOM_ENCODER_MODE_HDMI; 645 + } else if (radeon_connector->use_digital) 616 646 return ATOM_ENCODER_MODE_DVI; 617 647 else 618 648 return ATOM_ENCODER_MODE_CRT; ··· 624 646 case DRM_MODE_CONNECTOR_DVID: 625 647 case DRM_MODE_CONNECTOR_HDMIA: 626 648 default: 627 - if (drm_detect_hdmi_monitor(radeon_connector->edid)) 628 - return ATOM_ENCODER_MODE_HDMI; 629 - else 649 + if (drm_detect_hdmi_monitor(radeon_connector->edid)) { 650 + /* fix me */ 651 + if (ASIC_IS_DCE4(rdev)) 652 + return ATOM_ENCODER_MODE_DVI; 653 + else 654 + return ATOM_ENCODER_MODE_HDMI; 655 + } else 630 656 return ATOM_ENCODER_MODE_DVI; 631 657 break; 632 658 case DRM_MODE_CONNECTOR_LVDS: ··· 642 660 if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) || 643 661 (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP)) 644 662 return ATOM_ENCODER_MODE_DP; 645 - else if (drm_detect_hdmi_monitor(radeon_connector->edid)) 646 - return ATOM_ENCODER_MODE_HDMI; 647 - else 663 + else if (drm_detect_hdmi_monitor(radeon_connector->edid)) { 664 + /* fix me */ 665 + if (ASIC_IS_DCE4(rdev)) 666 + return ATOM_ENCODER_MODE_DVI; 667 + else 668 + return ATOM_ENCODER_MODE_HDMI; 669 + } else 648 670 return ATOM_ENCODER_MODE_DVI; 649 671 break; 650 672 case DRM_MODE_CONNECTOR_DVIA: ··· 715 729 struct radeon_device *rdev = dev->dev_private; 716 730 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 717 731 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 718 - struct radeon_connector_atom_dig *dig_connector = 719 - radeon_get_atom_connector_priv_from_encoder(encoder); 732 + struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 720 733 union dig_encoder_control args; 721 734 int index = 0; 722 735 uint8_t frev, crev; 736 + int dp_clock = 0; 737 + int dp_lane_count = 0; 723 738 724 - if (!dig || !dig_connector) 739 + if (connector) { 740 + struct radeon_connector *radeon_connector = to_radeon_connector(connector); 741 + struct radeon_connector_atom_dig *dig_connector = 742 + radeon_connector->con_priv; 743 + 744 + dp_clock = dig_connector->dp_clock; 745 + dp_lane_count = dig_connector->dp_lane_count; 746 + } 747 + 748 + /* no dig encoder assigned */ 749 + if (dig->dig_encoder == -1) 725 750 return; 726 751 727 752 memset(&args, 0, sizeof(args)); ··· 754 757 args.v1.ucEncoderMode = atombios_get_encoder_mode(encoder); 755 758 756 759 if (args.v1.ucEncoderMode == ATOM_ENCODER_MODE_DP) { 757 - if (dig_connector->dp_clock == 270000) 760 + if (dp_clock == 270000) 758 761 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ; 759 - args.v1.ucLaneNum = dig_connector->dp_lane_count; 762 + args.v1.ucLaneNum = dp_lane_count; 760 763 } else if (radeon_encoder->pixel_clock > 165000) 761 764 args.v1.ucLaneNum = 8; 762 765 else ··· 778 781 args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER3; 779 782 break; 780 783 } 781 - if (dig_connector->linkb) 784 + if (dig->linkb) 782 785 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKB; 783 786 else 784 787 args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKA; ··· 801 804 struct radeon_device *rdev = dev->dev_private; 802 805 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 803 806 struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; 804 - struct radeon_connector_atom_dig *dig_connector = 805 - radeon_get_atom_connector_priv_from_encoder(encoder); 806 - struct drm_connector *connector; 807 - struct radeon_connector *radeon_connector; 807 + struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 808 808 union dig_transmitter_control args; 809 809 int index = 0; 810 810 uint8_t frev, crev; 811 811 bool is_dp = false; 812 812 int pll_id = 0; 813 + int dp_clock = 0; 814 + int dp_lane_count = 0; 815 + int connector_object_id = 0; 816 + int igp_lane_info = 0; 813 817 814 - if (!dig || !dig_connector) 818 + if (connector) { 819 + struct radeon_connector *radeon_connector = to_radeon_connector(connector); 820 + struct radeon_connector_atom_dig *dig_connector = 821 + radeon_connector->con_priv; 822 + 823 + dp_clock = dig_connector->dp_clock; 824 + dp_lane_count = dig_connector->dp_lane_count; 825 + connector_object_id = 826 + (radeon_connector->connector_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; 827 + igp_lane_info = dig_connector->igp_lane_info; 828 + } 829 + 830 + /* no dig encoder assigned */ 831 + if (dig->dig_encoder == -1) 815 832 return; 816 - 817 - connector = radeon_get_connector_for_encoder(encoder); 818 - radeon_connector = to_radeon_connector(connector); 819 833 820 834 if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_DP) 821 835 is_dp = true; 822 836 823 837 memset(&args, 0, sizeof(args)); 824 838 825 - if (ASIC_IS_DCE32(rdev) || ASIC_IS_DCE4(rdev)) 839 + switch (radeon_encoder->encoder_id) { 840 + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: 841 + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: 842 + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: 826 843 index = GetIndexIntoMasterTable(COMMAND, UNIPHYTransmitterControl); 827 - else { 828 - switch (radeon_encoder->encoder_id) { 829 - case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: 830 - index = GetIndexIntoMasterTable(COMMAND, DIG1TransmitterControl); 831 - break; 832 - case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: 833 - index = GetIndexIntoMasterTable(COMMAND, DIG2TransmitterControl); 834 - break; 835 - } 844 + break; 845 + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: 846 + index = GetIndexIntoMasterTable(COMMAND, LVTMATransmitterControl); 847 + break; 836 848 } 837 849 838 850 if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) ··· 849 843 850 844 args.v1.ucAction = action; 851 845 if (action == ATOM_TRANSMITTER_ACTION_INIT) { 852 - args.v1.usInitInfo = radeon_connector->connector_object_id; 846 + args.v1.usInitInfo = connector_object_id; 853 847 } else if (action == ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH) { 854 848 args.v1.asMode.ucLaneSel = lane_num; 855 849 args.v1.asMode.ucLaneSet = lane_set; 856 850 } else { 857 851 if (is_dp) 858 852 args.v1.usPixelClock = 859 - cpu_to_le16(dig_connector->dp_clock / 10); 853 + cpu_to_le16(dp_clock / 10); 860 854 else if (radeon_encoder->pixel_clock > 165000) 861 855 args.v1.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10); 862 856 else ··· 864 858 } 865 859 if (ASIC_IS_DCE4(rdev)) { 866 860 if (is_dp) 867 - args.v3.ucLaneNum = dig_connector->dp_lane_count; 861 + args.v3.ucLaneNum = dp_lane_count; 868 862 else if (radeon_encoder->pixel_clock > 165000) 869 863 args.v3.ucLaneNum = 8; 870 864 else 871 865 args.v3.ucLaneNum = 4; 872 866 873 - if (dig_connector->linkb) { 867 + if (dig->linkb) { 874 868 args.v3.acConfig.ucLinkSel = 1; 875 869 args.v3.acConfig.ucEncoderSel = 1; 876 870 } ··· 910 904 } 911 905 } else if (ASIC_IS_DCE32(rdev)) { 912 906 args.v2.acConfig.ucEncoderSel = dig->dig_encoder; 913 - if (dig_connector->linkb) 907 + if (dig->linkb) 914 908 args.v2.acConfig.ucLinkSel = 1; 915 909 916 910 switch (radeon_encoder->encoder_id) { ··· 944 938 if ((rdev->flags & RADEON_IS_IGP) && 945 939 (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_UNIPHY)) { 946 940 if (is_dp || (radeon_encoder->pixel_clock <= 165000)) { 947 - if (dig_connector->igp_lane_info & 0x1) 941 + if (igp_lane_info & 0x1) 948 942 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LANE_0_3; 949 - else if (dig_connector->igp_lane_info & 0x2) 943 + else if (igp_lane_info & 0x2) 950 944 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LANE_4_7; 951 - else if (dig_connector->igp_lane_info & 0x4) 945 + else if (igp_lane_info & 0x4) 952 946 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LANE_8_11; 953 - else if (dig_connector->igp_lane_info & 0x8) 947 + else if (igp_lane_info & 0x8) 954 948 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LANE_12_15; 955 949 } else { 956 - if (dig_connector->igp_lane_info & 0x3) 950 + if (igp_lane_info & 0x3) 957 951 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LANE_0_7; 958 - else if (dig_connector->igp_lane_info & 0xc) 952 + else if (igp_lane_info & 0xc) 959 953 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LANE_8_15; 960 954 } 961 955 } 962 956 963 - if (dig_connector->linkb) 957 + if (dig->linkb) 964 958 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LINKB; 965 959 else 966 960 args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LINKA; ··· 1078 1072 if (is_dig) { 1079 1073 switch (mode) { 1080 1074 case DRM_MODE_DPMS_ON: 1081 - if (!ASIC_IS_DCE4(rdev)) 1082 - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0); 1075 + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0); 1083 1076 if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_DP) { 1084 1077 struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); 1085 1078 ··· 1090 1085 case DRM_MODE_DPMS_STANDBY: 1091 1086 case DRM_MODE_DPMS_SUSPEND: 1092 1087 case DRM_MODE_DPMS_OFF: 1093 - if (!ASIC_IS_DCE4(rdev)) 1094 - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0); 1088 + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0); 1095 1089 if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_DP) { 1096 1090 if (ASIC_IS_DCE4(rdev)) 1097 1091 atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF); ··· 1294 1290 uint32_t dig_enc_in_use = 0; 1295 1291 1296 1292 if (ASIC_IS_DCE4(rdev)) { 1297 - struct radeon_connector_atom_dig *dig_connector = 1298 - radeon_get_atom_connector_priv_from_encoder(encoder); 1299 - 1293 + dig = radeon_encoder->enc_priv; 1300 1294 switch (radeon_encoder->encoder_id) { 1301 1295 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: 1302 - if (dig_connector->linkb) 1296 + if (dig->linkb) 1303 1297 return 1; 1304 1298 else 1305 1299 return 0; 1306 1300 break; 1307 1301 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: 1308 - if (dig_connector->linkb) 1302 + if (dig->linkb) 1309 1303 return 3; 1310 1304 else 1311 1305 return 2; 1312 1306 break; 1313 1307 case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: 1314 - if (dig_connector->linkb) 1308 + if (dig->linkb) 1315 1309 return 5; 1316 1310 else 1317 1311 return 4; ··· 1643 1641 struct radeon_encoder_atom_dig * 1644 1642 radeon_atombios_set_dig_info(struct radeon_encoder *radeon_encoder) 1645 1643 { 1644 + int encoder_enum = (radeon_encoder->encoder_enum & ENUM_ID_MASK) >> ENUM_ID_SHIFT; 1646 1645 struct radeon_encoder_atom_dig *dig = kzalloc(sizeof(struct radeon_encoder_atom_dig), GFP_KERNEL); 1647 1646 1648 1647 if (!dig) ··· 1653 1650 dig->coherent_mode = true; 1654 1651 dig->dig_encoder = -1; 1655 1652 1653 + if (encoder_enum == 2) 1654 + dig->linkb = true; 1655 + else 1656 + dig->linkb = false; 1657 + 1656 1658 return dig; 1657 1659 } 1658 1660 1659 1661 void 1660 - radeon_add_atom_encoder(struct drm_device *dev, uint32_t encoder_id, uint32_t supported_device) 1662 + radeon_add_atom_encoder(struct drm_device *dev, uint32_t encoder_enum, uint32_t supported_device) 1661 1663 { 1662 1664 struct radeon_device *rdev = dev->dev_private; 1663 1665 struct drm_encoder *encoder; ··· 1671 1663 /* see if we already added it */ 1672 1664 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { 1673 1665 radeon_encoder = to_radeon_encoder(encoder); 1674 - if (radeon_encoder->encoder_id == encoder_id) { 1666 + if (radeon_encoder->encoder_enum == encoder_enum) { 1675 1667 radeon_encoder->devices |= supported_device; 1676 1668 return; 1677 1669 } ··· 1699 1691 1700 1692 radeon_encoder->enc_priv = NULL; 1701 1693 1702 - radeon_encoder->encoder_id = encoder_id; 1694 + radeon_encoder->encoder_enum = encoder_enum; 1695 + radeon_encoder->encoder_id = (encoder_enum & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; 1703 1696 radeon_encoder->devices = supported_device; 1704 1697 radeon_encoder->rmx_type = RMX_OFF; 1705 1698 radeon_encoder->underscan_type = UNDERSCAN_OFF;
+1 -1
drivers/gpu/drm/radeon/radeon_fb.c
··· 118 118 aligned_size = ALIGN(size, PAGE_SIZE); 119 119 ret = radeon_gem_object_create(rdev, aligned_size, 0, 120 120 RADEON_GEM_DOMAIN_VRAM, 121 - false, ttm_bo_type_kernel, 121 + false, true, 122 122 &gobj); 123 123 if (ret) { 124 124 printk(KERN_ERR "failed to allocate framebuffer (%d)\n",
+7
drivers/gpu/drm/radeon/radeon_i2c.c
··· 99 99 } 100 100 } 101 101 102 + /* switch the pads to ddc mode */ 103 + if (ASIC_IS_DCE3(rdev) && rec->hw_capable) { 104 + temp = RREG32(rec->mask_clk_reg); 105 + temp &= ~(1 << 16); 106 + WREG32(rec->mask_clk_reg, temp); 107 + } 108 + 102 109 /* clear the output pin values */ 103 110 temp = RREG32(rec->a_clk_reg) & ~rec->a_clk_mask; 104 111 WREG32(rec->a_clk_reg, temp);
+3 -2
drivers/gpu/drm/radeon/radeon_irq_kms.c
··· 121 121 * chips. Disable MSI on them for now. 122 122 */ 123 123 if ((rdev->family >= CHIP_RV380) && 124 - (!(rdev->flags & RADEON_IS_IGP))) { 124 + (!(rdev->flags & RADEON_IS_IGP)) && 125 + (!(rdev->flags & RADEON_IS_AGP))) { 125 126 int ret = pci_enable_msi(rdev->pdev); 126 127 if (!ret) { 127 128 rdev->msi_enabled = 1; 128 - DRM_INFO("radeon: using MSI.\n"); 129 + dev_info(rdev->dev, "radeon: using MSI.\n"); 129 130 } 130 131 } 131 132 rdev->irq.installed = true;
+40 -39
drivers/gpu/drm/radeon/radeon_kms.c
··· 161 161 DRM_DEBUG_KMS("tiling config is r6xx+ only!\n"); 162 162 return -EINVAL; 163 163 } 164 + break; 164 165 case RADEON_INFO_WANT_HYPERZ: 165 166 /* The "value" here is both an input and output parameter. 166 167 * If the input value is 1, filp requests hyper-z access. ··· 324 323 325 324 326 325 struct drm_ioctl_desc radeon_ioctls_kms[] = { 327 - DRM_IOCTL_DEF(DRM_RADEON_CP_INIT, radeon_cp_init_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 328 - DRM_IOCTL_DEF(DRM_RADEON_CP_START, radeon_cp_start_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 329 - DRM_IOCTL_DEF(DRM_RADEON_CP_STOP, radeon_cp_stop_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 330 - DRM_IOCTL_DEF(DRM_RADEON_CP_RESET, radeon_cp_reset_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 331 - DRM_IOCTL_DEF(DRM_RADEON_CP_IDLE, radeon_cp_idle_kms, DRM_AUTH), 332 - DRM_IOCTL_DEF(DRM_RADEON_CP_RESUME, radeon_cp_resume_kms, DRM_AUTH), 333 - DRM_IOCTL_DEF(DRM_RADEON_RESET, radeon_engine_reset_kms, DRM_AUTH), 334 - DRM_IOCTL_DEF(DRM_RADEON_FULLSCREEN, radeon_fullscreen_kms, DRM_AUTH), 335 - DRM_IOCTL_DEF(DRM_RADEON_SWAP, radeon_cp_swap_kms, DRM_AUTH), 336 - DRM_IOCTL_DEF(DRM_RADEON_CLEAR, radeon_cp_clear_kms, DRM_AUTH), 337 - DRM_IOCTL_DEF(DRM_RADEON_VERTEX, radeon_cp_vertex_kms, DRM_AUTH), 338 - DRM_IOCTL_DEF(DRM_RADEON_INDICES, radeon_cp_indices_kms, DRM_AUTH), 339 - DRM_IOCTL_DEF(DRM_RADEON_TEXTURE, radeon_cp_texture_kms, DRM_AUTH), 340 - DRM_IOCTL_DEF(DRM_RADEON_STIPPLE, radeon_cp_stipple_kms, DRM_AUTH), 341 - DRM_IOCTL_DEF(DRM_RADEON_INDIRECT, radeon_cp_indirect_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 342 - DRM_IOCTL_DEF(DRM_RADEON_VERTEX2, radeon_cp_vertex2_kms, DRM_AUTH), 343 - DRM_IOCTL_DEF(DRM_RADEON_CMDBUF, radeon_cp_cmdbuf_kms, DRM_AUTH), 344 - DRM_IOCTL_DEF(DRM_RADEON_GETPARAM, radeon_cp_getparam_kms, DRM_AUTH), 345 - DRM_IOCTL_DEF(DRM_RADEON_FLIP, radeon_cp_flip_kms, DRM_AUTH), 346 - DRM_IOCTL_DEF(DRM_RADEON_ALLOC, radeon_mem_alloc_kms, DRM_AUTH), 347 - DRM_IOCTL_DEF(DRM_RADEON_FREE, radeon_mem_free_kms, DRM_AUTH), 348 - DRM_IOCTL_DEF(DRM_RADEON_INIT_HEAP, radeon_mem_init_heap_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 349 - DRM_IOCTL_DEF(DRM_RADEON_IRQ_EMIT, radeon_irq_emit_kms, DRM_AUTH), 350 - DRM_IOCTL_DEF(DRM_RADEON_IRQ_WAIT, radeon_irq_wait_kms, DRM_AUTH), 351 - DRM_IOCTL_DEF(DRM_RADEON_SETPARAM, radeon_cp_setparam_kms, DRM_AUTH), 352 - DRM_IOCTL_DEF(DRM_RADEON_SURF_ALLOC, radeon_surface_alloc_kms, DRM_AUTH), 353 - DRM_IOCTL_DEF(DRM_RADEON_SURF_FREE, radeon_surface_free_kms, DRM_AUTH), 326 + DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, radeon_cp_init_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 327 + DRM_IOCTL_DEF_DRV(RADEON_CP_START, radeon_cp_start_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 328 + DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, radeon_cp_stop_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 329 + DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, radeon_cp_reset_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 330 + DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, radeon_cp_idle_kms, DRM_AUTH), 331 + DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, radeon_cp_resume_kms, DRM_AUTH), 332 + DRM_IOCTL_DEF_DRV(RADEON_RESET, radeon_engine_reset_kms, DRM_AUTH), 333 + DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, radeon_fullscreen_kms, DRM_AUTH), 334 + DRM_IOCTL_DEF_DRV(RADEON_SWAP, radeon_cp_swap_kms, DRM_AUTH), 335 + DRM_IOCTL_DEF_DRV(RADEON_CLEAR, radeon_cp_clear_kms, DRM_AUTH), 336 + DRM_IOCTL_DEF_DRV(RADEON_VERTEX, radeon_cp_vertex_kms, DRM_AUTH), 337 + DRM_IOCTL_DEF_DRV(RADEON_INDICES, radeon_cp_indices_kms, DRM_AUTH), 338 + DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, radeon_cp_texture_kms, DRM_AUTH), 339 + DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, radeon_cp_stipple_kms, DRM_AUTH), 340 + DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, radeon_cp_indirect_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 341 + DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, radeon_cp_vertex2_kms, DRM_AUTH), 342 + DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, radeon_cp_cmdbuf_kms, DRM_AUTH), 343 + DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, radeon_cp_getparam_kms, DRM_AUTH), 344 + DRM_IOCTL_DEF_DRV(RADEON_FLIP, radeon_cp_flip_kms, DRM_AUTH), 345 + DRM_IOCTL_DEF_DRV(RADEON_ALLOC, radeon_mem_alloc_kms, DRM_AUTH), 346 + DRM_IOCTL_DEF_DRV(RADEON_FREE, radeon_mem_free_kms, DRM_AUTH), 347 + DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, radeon_mem_init_heap_kms, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 348 + DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, radeon_irq_emit_kms, DRM_AUTH), 349 + DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, radeon_irq_wait_kms, DRM_AUTH), 350 + DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, radeon_cp_setparam_kms, DRM_AUTH), 351 + DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, radeon_surface_alloc_kms, DRM_AUTH), 352 + DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, radeon_surface_free_kms, DRM_AUTH), 354 353 /* KMS */ 355 - DRM_IOCTL_DEF(DRM_RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_UNLOCKED), 356 - DRM_IOCTL_DEF(DRM_RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_UNLOCKED), 357 - DRM_IOCTL_DEF(DRM_RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_UNLOCKED), 358 - DRM_IOCTL_DEF(DRM_RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_UNLOCKED), 359 - DRM_IOCTL_DEF(DRM_RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH|DRM_UNLOCKED), 360 - DRM_IOCTL_DEF(DRM_RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH|DRM_UNLOCKED), 361 - DRM_IOCTL_DEF(DRM_RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_UNLOCKED), 362 - DRM_IOCTL_DEF(DRM_RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_UNLOCKED), 363 - DRM_IOCTL_DEF(DRM_RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_UNLOCKED), 364 - DRM_IOCTL_DEF(DRM_RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_UNLOCKED), 365 - DRM_IOCTL_DEF(DRM_RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_UNLOCKED), 366 - DRM_IOCTL_DEF(DRM_RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED), 354 + DRM_IOCTL_DEF_DRV(RADEON_GEM_INFO, radeon_gem_info_ioctl, DRM_AUTH|DRM_UNLOCKED), 355 + DRM_IOCTL_DEF_DRV(RADEON_GEM_CREATE, radeon_gem_create_ioctl, DRM_AUTH|DRM_UNLOCKED), 356 + DRM_IOCTL_DEF_DRV(RADEON_GEM_MMAP, radeon_gem_mmap_ioctl, DRM_AUTH|DRM_UNLOCKED), 357 + DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_DOMAIN, radeon_gem_set_domain_ioctl, DRM_AUTH|DRM_UNLOCKED), 358 + DRM_IOCTL_DEF_DRV(RADEON_GEM_PREAD, radeon_gem_pread_ioctl, DRM_AUTH|DRM_UNLOCKED), 359 + DRM_IOCTL_DEF_DRV(RADEON_GEM_PWRITE, radeon_gem_pwrite_ioctl, DRM_AUTH|DRM_UNLOCKED), 360 + DRM_IOCTL_DEF_DRV(RADEON_GEM_WAIT_IDLE, radeon_gem_wait_idle_ioctl, DRM_AUTH|DRM_UNLOCKED), 361 + DRM_IOCTL_DEF_DRV(RADEON_CS, radeon_cs_ioctl, DRM_AUTH|DRM_UNLOCKED), 362 + DRM_IOCTL_DEF_DRV(RADEON_INFO, radeon_info_ioctl, DRM_AUTH|DRM_UNLOCKED), 363 + DRM_IOCTL_DEF_DRV(RADEON_GEM_SET_TILING, radeon_gem_set_tiling_ioctl, DRM_AUTH|DRM_UNLOCKED), 364 + DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_UNLOCKED), 365 + DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED), 367 366 }; 368 367 int radeon_max_kms_ioctl = DRM_ARRAY_SIZE(radeon_ioctls_kms);
+1 -1
drivers/gpu/drm/radeon/radeon_legacy_crtc.c
··· 272 272 if (!ref_div) 273 273 return 1; 274 274 275 - vcoFreq = ((unsigned)ref_freq & fb_div) / ref_div; 275 + vcoFreq = ((unsigned)ref_freq * fb_div) / ref_div; 276 276 277 277 /* 278 278 * This is horribly crude: the VCO frequency range is divided into
+4 -3
drivers/gpu/drm/radeon/radeon_legacy_encoders.c
··· 1345 1345 } 1346 1346 1347 1347 void 1348 - radeon_add_legacy_encoder(struct drm_device *dev, uint32_t encoder_id, uint32_t supported_device) 1348 + radeon_add_legacy_encoder(struct drm_device *dev, uint32_t encoder_enum, uint32_t supported_device) 1349 1349 { 1350 1350 struct radeon_device *rdev = dev->dev_private; 1351 1351 struct drm_encoder *encoder; ··· 1354 1354 /* see if we already added it */ 1355 1355 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { 1356 1356 radeon_encoder = to_radeon_encoder(encoder); 1357 - if (radeon_encoder->encoder_id == encoder_id) { 1357 + if (radeon_encoder->encoder_enum == encoder_enum) { 1358 1358 radeon_encoder->devices |= supported_device; 1359 1359 return; 1360 1360 } ··· 1374 1374 1375 1375 radeon_encoder->enc_priv = NULL; 1376 1376 1377 - radeon_encoder->encoder_id = encoder_id; 1377 + radeon_encoder->encoder_enum = encoder_enum; 1378 + radeon_encoder->encoder_id = (encoder_enum & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT; 1378 1379 radeon_encoder->devices = supported_device; 1379 1380 radeon_encoder->rmx_type = RMX_OFF; 1380 1381
+2 -1
drivers/gpu/drm/radeon/radeon_mode.h
··· 342 342 }; 343 343 344 344 struct radeon_encoder_atom_dig { 345 + bool linkb; 345 346 /* atom dig */ 346 347 bool coherent_mode; 347 348 int dig_encoder; /* -1 disabled, 0 DIGA, 1 DIGB */ ··· 361 360 362 361 struct radeon_encoder { 363 362 struct drm_encoder base; 363 + uint32_t encoder_enum; 364 364 uint32_t encoder_id; 365 365 uint32_t devices; 366 366 uint32_t active_device; ··· 380 378 381 379 struct radeon_connector_atom_dig { 382 380 uint32_t igp_lane_info; 383 - bool linkb; 384 381 /* displayport */ 385 382 struct radeon_i2c_chan *dp_i2c_bus; 386 383 u8 dpcd[8];
+5
drivers/gpu/drm/radeon/radeon_pm.c
··· 226 226 { 227 227 int i; 228 228 229 + /* no need to take locks, etc. if nothing's going to change */ 230 + if ((rdev->pm.requested_clock_mode_index == rdev->pm.current_clock_mode_index) && 231 + (rdev->pm.requested_power_state_index == rdev->pm.current_power_state_index)) 232 + return; 233 + 229 234 mutex_lock(&rdev->ddev->struct_mutex); 230 235 mutex_lock(&rdev->vram_mutex); 231 236 mutex_lock(&rdev->cp.mutex);
+28 -28
drivers/gpu/drm/radeon/radeon_state.c
··· 3228 3228 } 3229 3229 3230 3230 struct drm_ioctl_desc radeon_ioctls[] = { 3231 - DRM_IOCTL_DEF(DRM_RADEON_CP_INIT, radeon_cp_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3232 - DRM_IOCTL_DEF(DRM_RADEON_CP_START, radeon_cp_start, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3233 - DRM_IOCTL_DEF(DRM_RADEON_CP_STOP, radeon_cp_stop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3234 - DRM_IOCTL_DEF(DRM_RADEON_CP_RESET, radeon_cp_reset, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3235 - DRM_IOCTL_DEF(DRM_RADEON_CP_IDLE, radeon_cp_idle, DRM_AUTH), 3236 - DRM_IOCTL_DEF(DRM_RADEON_CP_RESUME, radeon_cp_resume, DRM_AUTH), 3237 - DRM_IOCTL_DEF(DRM_RADEON_RESET, radeon_engine_reset, DRM_AUTH), 3238 - DRM_IOCTL_DEF(DRM_RADEON_FULLSCREEN, radeon_fullscreen, DRM_AUTH), 3239 - DRM_IOCTL_DEF(DRM_RADEON_SWAP, radeon_cp_swap, DRM_AUTH), 3240 - DRM_IOCTL_DEF(DRM_RADEON_CLEAR, radeon_cp_clear, DRM_AUTH), 3241 - DRM_IOCTL_DEF(DRM_RADEON_VERTEX, radeon_cp_vertex, DRM_AUTH), 3242 - DRM_IOCTL_DEF(DRM_RADEON_INDICES, radeon_cp_indices, DRM_AUTH), 3243 - DRM_IOCTL_DEF(DRM_RADEON_TEXTURE, radeon_cp_texture, DRM_AUTH), 3244 - DRM_IOCTL_DEF(DRM_RADEON_STIPPLE, radeon_cp_stipple, DRM_AUTH), 3245 - DRM_IOCTL_DEF(DRM_RADEON_INDIRECT, radeon_cp_indirect, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3246 - DRM_IOCTL_DEF(DRM_RADEON_VERTEX2, radeon_cp_vertex2, DRM_AUTH), 3247 - DRM_IOCTL_DEF(DRM_RADEON_CMDBUF, radeon_cp_cmdbuf, DRM_AUTH), 3248 - DRM_IOCTL_DEF(DRM_RADEON_GETPARAM, radeon_cp_getparam, DRM_AUTH), 3249 - DRM_IOCTL_DEF(DRM_RADEON_FLIP, radeon_cp_flip, DRM_AUTH), 3250 - DRM_IOCTL_DEF(DRM_RADEON_ALLOC, radeon_mem_alloc, DRM_AUTH), 3251 - DRM_IOCTL_DEF(DRM_RADEON_FREE, radeon_mem_free, DRM_AUTH), 3252 - DRM_IOCTL_DEF(DRM_RADEON_INIT_HEAP, radeon_mem_init_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3253 - DRM_IOCTL_DEF(DRM_RADEON_IRQ_EMIT, radeon_irq_emit, DRM_AUTH), 3254 - DRM_IOCTL_DEF(DRM_RADEON_IRQ_WAIT, radeon_irq_wait, DRM_AUTH), 3255 - DRM_IOCTL_DEF(DRM_RADEON_SETPARAM, radeon_cp_setparam, DRM_AUTH), 3256 - DRM_IOCTL_DEF(DRM_RADEON_SURF_ALLOC, radeon_surface_alloc, DRM_AUTH), 3257 - DRM_IOCTL_DEF(DRM_RADEON_SURF_FREE, radeon_surface_free, DRM_AUTH), 3258 - DRM_IOCTL_DEF(DRM_RADEON_CS, r600_cs_legacy_ioctl, DRM_AUTH) 3231 + DRM_IOCTL_DEF_DRV(RADEON_CP_INIT, radeon_cp_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3232 + DRM_IOCTL_DEF_DRV(RADEON_CP_START, radeon_cp_start, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3233 + DRM_IOCTL_DEF_DRV(RADEON_CP_STOP, radeon_cp_stop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3234 + DRM_IOCTL_DEF_DRV(RADEON_CP_RESET, radeon_cp_reset, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3235 + DRM_IOCTL_DEF_DRV(RADEON_CP_IDLE, radeon_cp_idle, DRM_AUTH), 3236 + DRM_IOCTL_DEF_DRV(RADEON_CP_RESUME, radeon_cp_resume, DRM_AUTH), 3237 + DRM_IOCTL_DEF_DRV(RADEON_RESET, radeon_engine_reset, DRM_AUTH), 3238 + DRM_IOCTL_DEF_DRV(RADEON_FULLSCREEN, radeon_fullscreen, DRM_AUTH), 3239 + DRM_IOCTL_DEF_DRV(RADEON_SWAP, radeon_cp_swap, DRM_AUTH), 3240 + DRM_IOCTL_DEF_DRV(RADEON_CLEAR, radeon_cp_clear, DRM_AUTH), 3241 + DRM_IOCTL_DEF_DRV(RADEON_VERTEX, radeon_cp_vertex, DRM_AUTH), 3242 + DRM_IOCTL_DEF_DRV(RADEON_INDICES, radeon_cp_indices, DRM_AUTH), 3243 + DRM_IOCTL_DEF_DRV(RADEON_TEXTURE, radeon_cp_texture, DRM_AUTH), 3244 + DRM_IOCTL_DEF_DRV(RADEON_STIPPLE, radeon_cp_stipple, DRM_AUTH), 3245 + DRM_IOCTL_DEF_DRV(RADEON_INDIRECT, radeon_cp_indirect, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3246 + DRM_IOCTL_DEF_DRV(RADEON_VERTEX2, radeon_cp_vertex2, DRM_AUTH), 3247 + DRM_IOCTL_DEF_DRV(RADEON_CMDBUF, radeon_cp_cmdbuf, DRM_AUTH), 3248 + DRM_IOCTL_DEF_DRV(RADEON_GETPARAM, radeon_cp_getparam, DRM_AUTH), 3249 + DRM_IOCTL_DEF_DRV(RADEON_FLIP, radeon_cp_flip, DRM_AUTH), 3250 + DRM_IOCTL_DEF_DRV(RADEON_ALLOC, radeon_mem_alloc, DRM_AUTH), 3251 + DRM_IOCTL_DEF_DRV(RADEON_FREE, radeon_mem_free, DRM_AUTH), 3252 + DRM_IOCTL_DEF_DRV(RADEON_INIT_HEAP, radeon_mem_init_heap, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 3253 + DRM_IOCTL_DEF_DRV(RADEON_IRQ_EMIT, radeon_irq_emit, DRM_AUTH), 3254 + DRM_IOCTL_DEF_DRV(RADEON_IRQ_WAIT, radeon_irq_wait, DRM_AUTH), 3255 + DRM_IOCTL_DEF_DRV(RADEON_SETPARAM, radeon_cp_setparam, DRM_AUTH), 3256 + DRM_IOCTL_DEF_DRV(RADEON_SURF_ALLOC, radeon_surface_alloc, DRM_AUTH), 3257 + DRM_IOCTL_DEF_DRV(RADEON_SURF_FREE, radeon_surface_free, DRM_AUTH), 3258 + DRM_IOCTL_DEF_DRV(RADEON_CS, r600_cs_legacy_ioctl, DRM_AUTH) 3259 3259 }; 3260 3260 3261 3261 int radeon_max_ioctl = DRM_ARRAY_SIZE(radeon_ioctls);
+4 -4
drivers/gpu/drm/savage/savage_bci.c
··· 1082 1082 } 1083 1083 1084 1084 struct drm_ioctl_desc savage_ioctls[] = { 1085 - DRM_IOCTL_DEF(DRM_SAVAGE_BCI_INIT, savage_bci_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1086 - DRM_IOCTL_DEF(DRM_SAVAGE_BCI_CMDBUF, savage_bci_cmdbuf, DRM_AUTH), 1087 - DRM_IOCTL_DEF(DRM_SAVAGE_BCI_EVENT_EMIT, savage_bci_event_emit, DRM_AUTH), 1088 - DRM_IOCTL_DEF(DRM_SAVAGE_BCI_EVENT_WAIT, savage_bci_event_wait, DRM_AUTH), 1085 + DRM_IOCTL_DEF_DRV(SAVAGE_BCI_INIT, savage_bci_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), 1086 + DRM_IOCTL_DEF_DRV(SAVAGE_BCI_CMDBUF, savage_bci_cmdbuf, DRM_AUTH), 1087 + DRM_IOCTL_DEF_DRV(SAVAGE_BCI_EVENT_EMIT, savage_bci_event_emit, DRM_AUTH), 1088 + DRM_IOCTL_DEF_DRV(SAVAGE_BCI_EVENT_WAIT, savage_bci_event_wait, DRM_AUTH), 1089 1089 }; 1090 1090 1091 1091 int savage_max_ioctl = DRM_ARRAY_SIZE(savage_ioctls);
+6 -6
drivers/gpu/drm/sis/sis_mm.c
··· 320 320 } 321 321 322 322 struct drm_ioctl_desc sis_ioctls[] = { 323 - DRM_IOCTL_DEF(DRM_SIS_FB_ALLOC, sis_fb_alloc, DRM_AUTH), 324 - DRM_IOCTL_DEF(DRM_SIS_FB_FREE, sis_drm_free, DRM_AUTH), 325 - DRM_IOCTL_DEF(DRM_SIS_AGP_INIT, sis_ioctl_agp_init, DRM_AUTH | DRM_MASTER | DRM_ROOT_ONLY), 326 - DRM_IOCTL_DEF(DRM_SIS_AGP_ALLOC, sis_ioctl_agp_alloc, DRM_AUTH), 327 - DRM_IOCTL_DEF(DRM_SIS_AGP_FREE, sis_drm_free, DRM_AUTH), 328 - DRM_IOCTL_DEF(DRM_SIS_FB_INIT, sis_fb_init, DRM_AUTH | DRM_MASTER | DRM_ROOT_ONLY), 323 + DRM_IOCTL_DEF_DRV(SIS_FB_ALLOC, sis_fb_alloc, DRM_AUTH), 324 + DRM_IOCTL_DEF_DRV(SIS_FB_FREE, sis_drm_free, DRM_AUTH), 325 + DRM_IOCTL_DEF_DRV(SIS_AGP_INIT, sis_ioctl_agp_init, DRM_AUTH | DRM_MASTER | DRM_ROOT_ONLY), 326 + DRM_IOCTL_DEF_DRV(SIS_AGP_ALLOC, sis_ioctl_agp_alloc, DRM_AUTH), 327 + DRM_IOCTL_DEF_DRV(SIS_AGP_FREE, sis_drm_free, DRM_AUTH), 328 + DRM_IOCTL_DEF_DRV(SIS_FB_INIT, sis_fb_init, DRM_AUTH | DRM_MASTER | DRM_ROOT_ONLY), 329 329 }; 330 330 331 331 int sis_max_ioctl = DRM_ARRAY_SIZE(sis_ioctls);
+14 -14
drivers/gpu/drm/via/via_dma.c
··· 722 722 } 723 723 724 724 struct drm_ioctl_desc via_ioctls[] = { 725 - DRM_IOCTL_DEF(DRM_VIA_ALLOCMEM, via_mem_alloc, DRM_AUTH), 726 - DRM_IOCTL_DEF(DRM_VIA_FREEMEM, via_mem_free, DRM_AUTH), 727 - DRM_IOCTL_DEF(DRM_VIA_AGP_INIT, via_agp_init, DRM_AUTH|DRM_MASTER), 728 - DRM_IOCTL_DEF(DRM_VIA_FB_INIT, via_fb_init, DRM_AUTH|DRM_MASTER), 729 - DRM_IOCTL_DEF(DRM_VIA_MAP_INIT, via_map_init, DRM_AUTH|DRM_MASTER), 730 - DRM_IOCTL_DEF(DRM_VIA_DEC_FUTEX, via_decoder_futex, DRM_AUTH), 731 - DRM_IOCTL_DEF(DRM_VIA_DMA_INIT, via_dma_init, DRM_AUTH), 732 - DRM_IOCTL_DEF(DRM_VIA_CMDBUFFER, via_cmdbuffer, DRM_AUTH), 733 - DRM_IOCTL_DEF(DRM_VIA_FLUSH, via_flush_ioctl, DRM_AUTH), 734 - DRM_IOCTL_DEF(DRM_VIA_PCICMD, via_pci_cmdbuffer, DRM_AUTH), 735 - DRM_IOCTL_DEF(DRM_VIA_CMDBUF_SIZE, via_cmdbuf_size, DRM_AUTH), 736 - DRM_IOCTL_DEF(DRM_VIA_WAIT_IRQ, via_wait_irq, DRM_AUTH), 737 - DRM_IOCTL_DEF(DRM_VIA_DMA_BLIT, via_dma_blit, DRM_AUTH), 738 - DRM_IOCTL_DEF(DRM_VIA_BLIT_SYNC, via_dma_blit_sync, DRM_AUTH) 725 + DRM_IOCTL_DEF_DRV(VIA_ALLOCMEM, via_mem_alloc, DRM_AUTH), 726 + DRM_IOCTL_DEF_DRV(VIA_FREEMEM, via_mem_free, DRM_AUTH), 727 + DRM_IOCTL_DEF_DRV(VIA_AGP_INIT, via_agp_init, DRM_AUTH|DRM_MASTER), 728 + DRM_IOCTL_DEF_DRV(VIA_FB_INIT, via_fb_init, DRM_AUTH|DRM_MASTER), 729 + DRM_IOCTL_DEF_DRV(VIA_MAP_INIT, via_map_init, DRM_AUTH|DRM_MASTER), 730 + DRM_IOCTL_DEF_DRV(VIA_DEC_FUTEX, via_decoder_futex, DRM_AUTH), 731 + DRM_IOCTL_DEF_DRV(VIA_DMA_INIT, via_dma_init, DRM_AUTH), 732 + DRM_IOCTL_DEF_DRV(VIA_CMDBUFFER, via_cmdbuffer, DRM_AUTH), 733 + DRM_IOCTL_DEF_DRV(VIA_FLUSH, via_flush_ioctl, DRM_AUTH), 734 + DRM_IOCTL_DEF_DRV(VIA_PCICMD, via_pci_cmdbuffer, DRM_AUTH), 735 + DRM_IOCTL_DEF_DRV(VIA_CMDBUF_SIZE, via_cmdbuf_size, DRM_AUTH), 736 + DRM_IOCTL_DEF_DRV(VIA_WAIT_IRQ, via_wait_irq, DRM_AUTH), 737 + DRM_IOCTL_DEF_DRV(VIA_DMA_BLIT, via_dma_blit, DRM_AUTH), 738 + DRM_IOCTL_DEF_DRV(VIA_BLIT_SYNC, via_dma_blit_sync, DRM_AUTH) 739 739 }; 740 740 741 741 int via_max_ioctl = DRM_ARRAY_SIZE(via_ioctls);
+17 -17
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
··· 99 99 */ 100 100 101 101 #define VMW_IOCTL_DEF(ioctl, func, flags) \ 102 - [DRM_IOCTL_NR(ioctl) - DRM_COMMAND_BASE] = {ioctl, flags, func} 102 + [DRM_IOCTL_NR(DRM_IOCTL_##ioctl) - DRM_COMMAND_BASE] = {DRM_##ioctl, flags, func, DRM_IOCTL_##ioctl} 103 103 104 104 /** 105 105 * Ioctl definitions. 106 106 */ 107 107 108 108 static struct drm_ioctl_desc vmw_ioctls[] = { 109 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_GET_PARAM, vmw_getparam_ioctl, 109 + VMW_IOCTL_DEF(VMW_GET_PARAM, vmw_getparam_ioctl, 110 110 DRM_AUTH | DRM_UNLOCKED), 111 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_ALLOC_DMABUF, vmw_dmabuf_alloc_ioctl, 111 + VMW_IOCTL_DEF(VMW_ALLOC_DMABUF, vmw_dmabuf_alloc_ioctl, 112 112 DRM_AUTH | DRM_UNLOCKED), 113 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_UNREF_DMABUF, vmw_dmabuf_unref_ioctl, 113 + VMW_IOCTL_DEF(VMW_UNREF_DMABUF, vmw_dmabuf_unref_ioctl, 114 114 DRM_AUTH | DRM_UNLOCKED), 115 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_CURSOR_BYPASS, 115 + VMW_IOCTL_DEF(VMW_CURSOR_BYPASS, 116 116 vmw_kms_cursor_bypass_ioctl, 117 117 DRM_MASTER | DRM_CONTROL_ALLOW | DRM_UNLOCKED), 118 118 119 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_CONTROL_STREAM, vmw_overlay_ioctl, 119 + VMW_IOCTL_DEF(VMW_CONTROL_STREAM, vmw_overlay_ioctl, 120 120 DRM_MASTER | DRM_CONTROL_ALLOW | DRM_UNLOCKED), 121 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_CLAIM_STREAM, vmw_stream_claim_ioctl, 121 + VMW_IOCTL_DEF(VMW_CLAIM_STREAM, vmw_stream_claim_ioctl, 122 122 DRM_MASTER | DRM_CONTROL_ALLOW | DRM_UNLOCKED), 123 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_UNREF_STREAM, vmw_stream_unref_ioctl, 123 + VMW_IOCTL_DEF(VMW_UNREF_STREAM, vmw_stream_unref_ioctl, 124 124 DRM_MASTER | DRM_CONTROL_ALLOW | DRM_UNLOCKED), 125 125 126 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_CREATE_CONTEXT, vmw_context_define_ioctl, 126 + VMW_IOCTL_DEF(VMW_CREATE_CONTEXT, vmw_context_define_ioctl, 127 127 DRM_AUTH | DRM_UNLOCKED), 128 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_UNREF_CONTEXT, vmw_context_destroy_ioctl, 128 + VMW_IOCTL_DEF(VMW_UNREF_CONTEXT, vmw_context_destroy_ioctl, 129 129 DRM_AUTH | DRM_UNLOCKED), 130 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_CREATE_SURFACE, vmw_surface_define_ioctl, 130 + VMW_IOCTL_DEF(VMW_CREATE_SURFACE, vmw_surface_define_ioctl, 131 131 DRM_AUTH | DRM_UNLOCKED), 132 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_UNREF_SURFACE, vmw_surface_destroy_ioctl, 132 + VMW_IOCTL_DEF(VMW_UNREF_SURFACE, vmw_surface_destroy_ioctl, 133 133 DRM_AUTH | DRM_UNLOCKED), 134 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_REF_SURFACE, vmw_surface_reference_ioctl, 134 + VMW_IOCTL_DEF(VMW_REF_SURFACE, vmw_surface_reference_ioctl, 135 135 DRM_AUTH | DRM_UNLOCKED), 136 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_EXECBUF, vmw_execbuf_ioctl, 136 + VMW_IOCTL_DEF(VMW_EXECBUF, vmw_execbuf_ioctl, 137 137 DRM_AUTH | DRM_UNLOCKED), 138 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_FIFO_DEBUG, vmw_fifo_debug_ioctl, 138 + VMW_IOCTL_DEF(VMW_FIFO_DEBUG, vmw_fifo_debug_ioctl, 139 139 DRM_AUTH | DRM_ROOT_ONLY | DRM_MASTER | DRM_UNLOCKED), 140 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_FENCE_WAIT, vmw_fence_wait_ioctl, 140 + VMW_IOCTL_DEF(VMW_FENCE_WAIT, vmw_fence_wait_ioctl, 141 141 DRM_AUTH | DRM_UNLOCKED), 142 - VMW_IOCTL_DEF(DRM_IOCTL_VMW_UPDATE_LAYOUT, vmw_kms_update_layout_ioctl, 142 + VMW_IOCTL_DEF(VMW_UPDATE_LAYOUT, vmw_kms_update_layout_ioctl, 143 143 DRM_MASTER | DRM_CONTROL_ALLOW | DRM_UNLOCKED) 144 144 }; 145 145
+4 -2
include/drm/drmP.h
··· 305 305 unsigned int cmd; 306 306 int flags; 307 307 drm_ioctl_t *func; 308 + unsigned int cmd_drv; 308 309 }; 309 310 310 311 /** 311 312 * Creates a driver or general drm_ioctl_desc array entry for the given 312 313 * ioctl, for use by drm_ioctl(). 313 314 */ 314 - #define DRM_IOCTL_DEF(ioctl, _func, _flags) \ 315 - [DRM_IOCTL_NR(ioctl)] = {.cmd = ioctl, .func = _func, .flags = _flags} 315 + 316 + #define DRM_IOCTL_DEF_DRV(ioctl, _func, _flags) \ 317 + [DRM_IOCTL_NR(DRM_##ioctl)] = {.cmd = DRM_##ioctl, .func = _func, .flags = _flags, .cmd_drv = DRM_IOCTL_##ioctl} 316 318 317 319 struct drm_magic_entry { 318 320 struct list_head head;
+14 -14
include/drm/i830_drm.h
··· 264 264 #define DRM_I830_GETPARAM 0x0c 265 265 #define DRM_I830_SETPARAM 0x0d 266 266 267 - #define DRM_IOCTL_I830_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_IOCTL_I830_INIT, drm_i830_init_t) 268 - #define DRM_IOCTL_I830_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_IOCTL_I830_VERTEX, drm_i830_vertex_t) 269 - #define DRM_IOCTL_I830_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_IOCTL_I830_CLEAR, drm_i830_clear_t) 270 - #define DRM_IOCTL_I830_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_IOCTL_I830_FLUSH) 271 - #define DRM_IOCTL_I830_GETAGE DRM_IO ( DRM_COMMAND_BASE + DRM_IOCTL_I830_GETAGE) 272 - #define DRM_IOCTL_I830_GETBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_IOCTL_I830_GETBUF, drm_i830_dma_t) 273 - #define DRM_IOCTL_I830_SWAP DRM_IO ( DRM_COMMAND_BASE + DRM_IOCTL_I830_SWAP) 274 - #define DRM_IOCTL_I830_COPY DRM_IOW( DRM_COMMAND_BASE + DRM_IOCTL_I830_COPY, drm_i830_copy_t) 275 - #define DRM_IOCTL_I830_DOCOPY DRM_IO ( DRM_COMMAND_BASE + DRM_IOCTL_I830_DOCOPY) 276 - #define DRM_IOCTL_I830_FLIP DRM_IO ( DRM_COMMAND_BASE + DRM_IOCTL_I830_FLIP) 277 - #define DRM_IOCTL_I830_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_IOCTL_I830_IRQ_EMIT, drm_i830_irq_emit_t) 278 - #define DRM_IOCTL_I830_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_IOCTL_I830_IRQ_WAIT, drm_i830_irq_wait_t) 279 - #define DRM_IOCTL_I830_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_IOCTL_I830_GETPARAM, drm_i830_getparam_t) 280 - #define DRM_IOCTL_I830_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_IOCTL_I830_SETPARAM, drm_i830_setparam_t) 267 + #define DRM_IOCTL_I830_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I830_INIT, drm_i830_init_t) 268 + #define DRM_IOCTL_I830_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_I830_VERTEX, drm_i830_vertex_t) 269 + #define DRM_IOCTL_I830_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_I830_CLEAR, drm_i830_clear_t) 270 + #define DRM_IOCTL_I830_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I830_FLUSH) 271 + #define DRM_IOCTL_I830_GETAGE DRM_IO ( DRM_COMMAND_BASE + DRM_I830_GETAGE) 272 + #define DRM_IOCTL_I830_GETBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_I830_GETBUF, drm_i830_dma_t) 273 + #define DRM_IOCTL_I830_SWAP DRM_IO ( DRM_COMMAND_BASE + DRM_I830_SWAP) 274 + #define DRM_IOCTL_I830_COPY DRM_IOW( DRM_COMMAND_BASE + DRM_I830_COPY, drm_i830_copy_t) 275 + #define DRM_IOCTL_I830_DOCOPY DRM_IO ( DRM_COMMAND_BASE + DRM_I830_DOCOPY) 276 + #define DRM_IOCTL_I830_FLIP DRM_IO ( DRM_COMMAND_BASE + DRM_I830_FLIP) 277 + #define DRM_IOCTL_I830_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I830_IRQ_EMIT, drm_i830_irq_emit_t) 278 + #define DRM_IOCTL_I830_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_I830_IRQ_WAIT, drm_i830_irq_wait_t) 279 + #define DRM_IOCTL_I830_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I830_GETPARAM, drm_i830_getparam_t) 280 + #define DRM_IOCTL_I830_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I830_SETPARAM, drm_i830_setparam_t) 281 281 282 282 typedef struct _drm_i830_clear { 283 283 int clear_color;
+1
include/drm/i915_drm.h
··· 215 215 #define DRM_IOCTL_I915_SET_VBLANK_PIPE DRM_IOW( DRM_COMMAND_BASE + DRM_I915_SET_VBLANK_PIPE, drm_i915_vblank_pipe_t) 216 216 #define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t) 217 217 #define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t) 218 + #define DRM_IOCTL_I915_HWS_ADDR DRM_IOW(DRM_COMMAND_BASE + DRM_I915_HWS_ADDR, struct drm_i915_gem_init) 218 219 #define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init) 219 220 #define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer) 220 221 #define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
+1 -1
include/drm/mga_drm.h
··· 248 248 #define DRM_MGA_DMA_BOOTSTRAP 0x0c 249 249 250 250 #define DRM_IOCTL_MGA_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_INIT, drm_mga_init_t) 251 - #define DRM_IOCTL_MGA_FLUSH DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_FLUSH, drm_lock_t) 251 + #define DRM_IOCTL_MGA_FLUSH DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_FLUSH, struct drm_lock) 252 252 #define DRM_IOCTL_MGA_RESET DRM_IO( DRM_COMMAND_BASE + DRM_MGA_RESET) 253 253 #define DRM_IOCTL_MGA_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_MGA_SWAP) 254 254 #define DRM_IOCTL_MGA_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_MGA_CLEAR, drm_mga_clear_t)
+13
include/drm/nouveau_drm.h
··· 197 197 #define DRM_NOUVEAU_GEM_CPU_FINI 0x43 198 198 #define DRM_NOUVEAU_GEM_INFO 0x44 199 199 200 + #define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam) 201 + #define DRM_IOCTL_NOUVEAU_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SETPARAM, struct drm_nouveau_setparam) 202 + #define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc) 203 + #define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free) 204 + #define DRM_IOCTL_NOUVEAU_GROBJ_ALLOC DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GROBJ_ALLOC, struct drm_nouveau_grobj_alloc) 205 + #define DRM_IOCTL_NOUVEAU_NOTIFIEROBJ_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_NOTIFIEROBJ_ALLOC, struct drm_nouveau_notifierobj_alloc) 206 + #define DRM_IOCTL_NOUVEAU_GPUOBJ_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GPUOBJ_FREE, struct drm_nouveau_gpuobj_free) 207 + #define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new) 208 + #define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf) 209 + #define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep) 210 + #define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini) 211 + #define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info) 212 + 200 213 #endif /* __NOUVEAU_DRM_H__ */
+2 -2
include/drm/radeon_drm.h
··· 547 547 #define DRM_IOCTL_RADEON_GEM_WAIT_IDLE DRM_IOW(DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE, struct drm_radeon_gem_wait_idle) 548 548 #define DRM_IOCTL_RADEON_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_CS, struct drm_radeon_cs) 549 549 #define DRM_IOCTL_RADEON_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INFO, struct drm_radeon_info) 550 - #define DRM_IOCTL_RADEON_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_TILING, struct drm_radeon_gem_set_tiling) 551 - #define DRM_IOCTL_RADEON_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_GET_TILING, struct drm_radeon_gem_get_tiling) 550 + #define DRM_IOCTL_RADEON_GEM_SET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_TILING, struct drm_radeon_gem_set_tiling) 551 + #define DRM_IOCTL_RADEON_GEM_GET_TILING DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_GET_TILING, struct drm_radeon_gem_get_tiling) 552 552 #define DRM_IOCTL_RADEON_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GEM_BUSY, struct drm_radeon_gem_busy) 553 553 554 554 typedef struct drm_radeon_init {
+4 -4
include/drm/savage_drm.h
··· 63 63 #define DRM_SAVAGE_BCI_EVENT_EMIT 0x02 64 64 #define DRM_SAVAGE_BCI_EVENT_WAIT 0x03 65 65 66 - #define DRM_IOCTL_SAVAGE_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t) 67 - #define DRM_IOCTL_SAVAGE_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t) 68 - #define DRM_IOCTL_SAVAGE_EVENT_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_EMIT, drm_savage_event_emit_t) 69 - #define DRM_IOCTL_SAVAGE_EVENT_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t) 66 + #define DRM_IOCTL_SAVAGE_BCI_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t) 67 + #define DRM_IOCTL_SAVAGE_BCI_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t) 68 + #define DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_EMIT, drm_savage_event_emit_t) 69 + #define DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t) 70 70 71 71 #define SAVAGE_DMA_PCI 1 72 72 #define SAVAGE_DMA_AGP 3