aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_kms.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_kms.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_kms.c30
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};
822int radeon_max_kms_ioctl = DRM_ARRAY_SIZE(radeon_ioctls_kms); 850int radeon_max_kms_ioctl = DRM_ARRAY_SIZE(radeon_ioctls_kms);