drm/radeon: add ring working query
authorChristian König <christian.koenig@amd.com>
Tue, 9 Apr 2013 14:35:42 +0000 (10:35 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 11 Apr 2013 13:22:05 +0000 (09:22 -0400)
Add new ioctl option and bumb minor version number.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/radeon/radeon_kms.c
include/uapi/drm/radeon_drm.h

index b500bbc3e4112fedefca69da5cb8dc0573d94729..6e1b2e66e837fd9a28e550a8023a4660c3d87939 100644 (file)
  *   2.29.0 - R500 FP16 color clear registers
  *   2.30.0 - fix for FMASK texturing
  *   2.31.0 - Add fastfb support for rs690
+ *   2.32.0 - new info request for rings working
  */
 #define KMS_DRIVER_MAJOR       2
-#define KMS_DRIVER_MINOR       31
+#define KMS_DRIVER_MINOR       32
 #define KMS_DRIVER_PATCHLEVEL  0
 int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags);
 int radeon_driver_unload_kms(struct drm_device *dev);
index 8365c75b31b6838bdbc6f42c561432d2f8c4be6b..3037c38d9aa9b99b097ce692c3e70a73f3b9bef4 100644 (file)
@@ -379,6 +379,23 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
        case RADEON_INFO_FASTFB_WORKING:
                value = rdev->fastfb_working;
                break;
+       case RADEON_INFO_RING_WORKING:
+               switch (value) {
+               case RADEON_CS_RING_GFX:
+               case RADEON_CS_RING_COMPUTE:
+                       value = rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ready;
+                       break;
+               case RADEON_CS_RING_DMA:
+                       value = rdev->ring[R600_RING_TYPE_DMA_INDEX].ready;
+                       value |= rdev->ring[CAYMAN_RING_TYPE_DMA1_INDEX].ready;
+                       break;
+               case RADEON_CS_RING_UVD:
+                       value = rdev->ring[R600_RING_TYPE_UVD_INDEX].ready;
+                       break;
+               default:
+                       return -EINVAL;
+               }
+               break;
        default:
                DRM_DEBUG_KMS("Invalid request %d\n", info->request);
                return -EINVAL;
index b1c1a2a4fe330cdb52cd46c5143efa9da6da9004..05ed0107584d7669c922a0b641cd8622e81cdcbc 100644 (file)
@@ -975,6 +975,8 @@ struct drm_radeon_cs {
 #define RADEON_INFO_MAX_SH_PER_SE      0x13
 /* fast fb access is enabled */
 #define RADEON_INFO_FASTFB_WORKING     0x14
+/* query if a RADEON_CS_RING_* submission is supported */
+#define RADEON_INFO_RING_WORKING       0x15
 
 
 struct drm_radeon_info {