]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/gpu/drm/drm_crtc.c
drm: Add crtc->name and use it in debug messages
[mirror_ubuntu-jammy-kernel.git] / drivers / gpu / drm / drm_crtc.c
index aade4640fa6dccdc580dc146a107c40c3c88a060..efa57e8a99b5bf535fc8a6b1c3b1f3ab7160172a 100644 (file)
@@ -649,6 +649,18 @@ EXPORT_SYMBOL(drm_framebuffer_remove);
 
 DEFINE_WW_CLASS(crtc_ww_class);
 
+static unsigned int drm_num_crtcs(struct drm_device *dev)
+{
+       unsigned int num = 0;
+       struct drm_crtc *tmp;
+
+       drm_for_each_crtc(tmp, dev) {
+               num++;
+       }
+
+       return num;
+}
+
 /**
  * drm_crtc_init_with_planes - Initialise a new CRTC object with
  *    specified primary and cursor planes.
@@ -684,6 +696,21 @@ int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc,
        if (ret)
                return ret;
 
+       if (name) {
+               va_list ap;
+
+               va_start(ap, name);
+               crtc->name = kvasprintf(GFP_KERNEL, name, ap);
+               va_end(ap);
+       } else {
+               crtc->name = kasprintf(GFP_KERNEL, "crtc-%d",
+                                      drm_num_crtcs(dev));
+       }
+       if (!crtc->name) {
+               drm_mode_object_put(dev, &crtc->base);
+               return -ENOMEM;
+       }
+
        crtc->base.properties = &crtc->properties;
 
        list_add_tail(&crtc->head, &config->crtc_list);
@@ -730,6 +757,8 @@ void drm_crtc_cleanup(struct drm_crtc *crtc)
        if (crtc->state && crtc->funcs->atomic_destroy_state)
                crtc->funcs->atomic_destroy_state(crtc, crtc->state);
 
+       kfree(crtc->name);
+
        memset(crtc, 0, sizeof(*crtc));
 }
 EXPORT_SYMBOL(drm_crtc_cleanup);
@@ -1814,7 +1843,8 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
                copied = 0;
                crtc_id = (uint32_t __user *)(unsigned long)card_res->crtc_id_ptr;
                drm_for_each_crtc(crtc, dev) {
-                       DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id);
+                       DRM_DEBUG_KMS("[CRTC:%d:%s]\n",
+                                     crtc->base.id, crtc->name);
                        if (put_user(crtc->base.id, crtc_id + copied)) {
                                ret = -EFAULT;
                                goto out;
@@ -2659,7 +2689,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
                ret = -ENOENT;
                goto out;
        }
-       DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id);
+       DRM_DEBUG_KMS("[CRTC:%d:%s]\n", crtc->base.id, crtc->name);
 
        if (crtc_req->mode_valid) {
                /* If we have a mode we need a framebuffer. */