Add DRM_IVPU_PARAM_CAPABILITIES ioctl to query driver capabilities.
For now use it for identify metric streamer and new dma memory range
features. Currently upstream version of intel_vpu does not have those,
they will be added it the future.

Reviewed-by: Jacek Lawrynowicz <jacek.lawrynow...@linux.intel.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.grus...@linux.intel.com>
---
 drivers/accel/ivpu/ivpu_drv.c | 19 +++++++++++++++++++
 include/uapi/drm/ivpu_accel.h |  4 ++++
 2 files changed, 23 insertions(+)

diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
index fad607dbb2c6..d33eb17007bf 100644
--- a/drivers/accel/ivpu/ivpu_drv.c
+++ b/drivers/accel/ivpu/ivpu_drv.c
@@ -115,6 +115,22 @@ void ivpu_file_priv_put(struct ivpu_file_priv **link)
        kref_put(&file_priv->ref, file_priv_release);
 }
 
+static int ivpu_get_capabilities(struct ivpu_device *vdev, struct 
drm_ivpu_param *args)
+{
+       switch (args->index) {
+       case DRM_IVPU_CAP_METRIC_STREAMER:
+               args->value = 0;
+               break;
+       case DRM_IVPU_CAP_DMA_MEMORY_RANGE:
+               args->value = 0;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
 static int ivpu_get_param_ioctl(struct drm_device *dev, void *data, struct 
drm_file *file)
 {
        struct ivpu_file_priv *file_priv = file->driver_priv;
@@ -174,6 +190,9 @@ static int ivpu_get_param_ioctl(struct drm_device *dev, 
void *data, struct drm_f
        case DRM_IVPU_PARAM_SKU:
                args->value = vdev->hw->sku;
                break;
+       case DRM_IVPU_PARAM_CAPABILITIES:
+               ret = ivpu_get_capabilities(vdev, args);
+               break;
        default:
                ret = -EINVAL;
                break;
diff --git a/include/uapi/drm/ivpu_accel.h b/include/uapi/drm/ivpu_accel.h
index 839820aed87e..3e99b74eef04 100644
--- a/include/uapi/drm/ivpu_accel.h
+++ b/include/uapi/drm/ivpu_accel.h
@@ -60,6 +60,7 @@ extern "C" {
 #define DRM_IVPU_PARAM_UNIQUE_INFERENCE_ID  10
 #define DRM_IVPU_PARAM_TILE_CONFIG         11
 #define DRM_IVPU_PARAM_SKU                 12
+#define DRM_IVPU_PARAM_CAPABILITIES        13
 
 #define DRM_IVPU_PLATFORM_TYPE_SILICON     0
 
@@ -68,6 +69,9 @@ extern "C" {
 #define DRM_IVPU_CONTEXT_PRIORITY_FOCUS            2
 #define DRM_IVPU_CONTEXT_PRIORITY_REALTIME  3
 
+#define DRM_IVPU_CAP_METRIC_STREAMER       1
+#define DRM_IVPU_CAP_DMA_MEMORY_RANGE       2
+
 /**
  * struct drm_ivpu_param - Get/Set VPU parameters
  */
-- 
2.25.1

Reply via email to