diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_kms.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_kms.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c index 66ed3ea71440..3e49342a20e6 100644 --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c | |||
@@ -441,6 +441,9 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
441 | case RADEON_CS_RING_UVD: | 441 | case RADEON_CS_RING_UVD: |
442 | *value = rdev->ring[R600_RING_TYPE_UVD_INDEX].ready; | 442 | *value = rdev->ring[R600_RING_TYPE_UVD_INDEX].ready; |
443 | break; | 443 | break; |
444 | case RADEON_CS_RING_VCE: | ||
445 | *value = rdev->ring[TN_RING_TYPE_VCE1_INDEX].ready; | ||
446 | break; | ||
444 | default: | 447 | default: |
445 | return -EINVAL; | 448 | return -EINVAL; |
446 | } | 449 | } |
@@ -485,6 +488,27 @@ static int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file | |||
485 | else | 488 | else |
486 | *value = rdev->pm.default_sclk * 10; | 489 | *value = rdev->pm.default_sclk * 10; |
487 | break; | 490 | break; |
491 | case RADEON_INFO_VCE_FW_VERSION: | ||
492 | *value = rdev->vce.fw_version; | ||
493 | break; | ||
494 | case RADEON_INFO_VCE_FB_VERSION: | ||
495 | *value = rdev->vce.fb_version; | ||
496 | break; | ||
497 | case RADEON_INFO_NUM_BYTES_MOVED: | ||
498 | value = (uint32_t*)&value64; | ||
499 | value_size = sizeof(uint64_t); | ||
500 | value64 = atomic64_read(&rdev->num_bytes_moved); | ||
501 | break; | ||
502 | case RADEON_INFO_VRAM_USAGE: | ||
503 | value = (uint32_t*)&value64; | ||
504 | value_size = sizeof(uint64_t); | ||
505 | value64 = atomic64_read(&rdev->vram_usage); | ||
506 | break; | ||
507 | case RADEON_INFO_GTT_USAGE: | ||
508 | value = (uint32_t*)&value64; | ||
509 | value_size = sizeof(uint64_t); | ||
510 | value64 = atomic64_read(&rdev->gtt_usage); | ||
511 | break; | ||
488 | default: | 512 | default: |
489 | DRM_DEBUG_KMS("Invalid request %d\n", info->request); | 513 | DRM_DEBUG_KMS("Invalid request %d\n", info->request); |
490 | return -EINVAL; | 514 | return -EINVAL; |
@@ -543,7 +567,9 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) | |||
543 | return -ENOMEM; | 567 | return -ENOMEM; |
544 | } | 568 | } |
545 | 569 | ||
546 | radeon_vm_init(rdev, &fpriv->vm); | 570 | r = radeon_vm_init(rdev, &fpriv->vm); |
571 | if (r) | ||
572 | return r; | ||
547 | 573 | ||
548 | r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); | 574 | r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); |
549 | if (r) | 575 | if (r) |
@@ -624,6 +650,7 @@ void radeon_driver_preclose_kms(struct drm_device *dev, | |||
624 | if (rdev->cmask_filp == file_priv) | 650 | if (rdev->cmask_filp == file_priv) |
625 | rdev->cmask_filp = NULL; | 651 | rdev->cmask_filp = NULL; |
626 | radeon_uvd_free_handles(rdev, file_priv); | 652 | radeon_uvd_free_handles(rdev, file_priv); |
653 | radeon_vce_free_handles(rdev, file_priv); | ||
627 | } | 654 | } |
628 | 655 | ||
629 | /* | 656 | /* |
@@ -818,5 +845,6 @@ const struct drm_ioctl_desc radeon_ioctls_kms[] = { | |||
818 | DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), | 845 | DRM_IOCTL_DEF_DRV(RADEON_GEM_GET_TILING, radeon_gem_get_tiling_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), |
819 | DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), | 846 | DRM_IOCTL_DEF_DRV(RADEON_GEM_BUSY, radeon_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), |
820 | DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), | 847 | DRM_IOCTL_DEF_DRV(RADEON_GEM_VA, radeon_gem_va_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), |
848 | DRM_IOCTL_DEF_DRV(RADEON_GEM_OP, radeon_gem_op_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), | ||
821 | }; | 849 | }; |
822 | int radeon_max_kms_ioctl = DRM_ARRAY_SIZE(radeon_ioctls_kms); | 850 | int radeon_max_kms_ioctl = DRM_ARRAY_SIZE(radeon_ioctls_kms); |