drm/nouveau/drm/nouveau: Don't forget to label dp_aux devices
authorLyude Paul <lyude@redhat.com>
Thu, 12 Jul 2018 17:13:52 +0000 (13:13 -0400)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 11 Dec 2018 05:37:09 +0000 (15:37 +1000)
This makes debugging with DP tracing a lot harder to interpret, so name
each i2c based off the name of the encoder that it's for

Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Karol Herbst <karolherbst@gmail.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/dispnv04/disp.c
drivers/gpu/drm/nouveau/dispnv50/disp.c
drivers/gpu/drm/nouveau/nouveau_connector.c
drivers/gpu/drm/nouveau/nouveau_connector.h

index 70dce544984e848b54409a390a41c2a3f9c24d4f..1727d399833cc2fd17b0fcb477b70a573aac30a9 100644 (file)
@@ -67,7 +67,7 @@ nv04_display_create(struct drm_device *dev)
        for (i = 0; i < dcb->entries; i++) {
                struct dcb_output *dcbent = &dcb->entry[i];
 
-               connector = nouveau_connector_create(dev, dcbent->connector);
+               connector = nouveau_connector_create(dev, dcbent);
                if (IS_ERR(connector))
                        continue;
 
index 6aa3521b6326c8b0ddf65fe0caa1ea3d5ed66140..00add3ba051fb5644b4cd0640a8e6ce5e4ddda8b 100644 (file)
@@ -2301,7 +2301,7 @@ nv50_display_create(struct drm_device *dev)
 
        /* create encoder/connector objects based on VBIOS DCB table */
        for (i = 0, dcbe = &dcb->entry[0]; i < dcb->entries; i++, dcbe++) {
-               connector = nouveau_connector_create(dev, dcbe->connector);
+               connector = nouveau_connector_create(dev, dcbe);
                if (IS_ERR(connector))
                        continue;
 
index fd80661dff92691f94c9b91c3799712d04cb9c17..96d7a92e30237e8dbc6e736c0288b2bdbc1da433 100644 (file)
@@ -403,6 +403,7 @@ nouveau_connector_destroy(struct drm_connector *connector)
        if (nv_connector->aux.transfer) {
                drm_dp_cec_unregister_connector(&nv_connector->aux);
                drm_dp_aux_unregister(&nv_connector->aux);
+               kfree(nv_connector->aux.name);
        }
        kfree(connector);
 }
@@ -1232,7 +1233,8 @@ drm_conntype_from_dcb(enum dcb_connector_type dcb)
 }
 
 struct drm_connector *
-nouveau_connector_create(struct drm_device *dev, int index)
+nouveau_connector_create(struct drm_device *dev,
+                        const struct dcb_output *dcbe)
 {
        const struct drm_connector_funcs *funcs = &nouveau_connector_funcs;
        struct nouveau_drm *drm = nouveau_drm(dev);
@@ -1240,6 +1242,8 @@ nouveau_connector_create(struct drm_device *dev, int index)
        struct nouveau_connector *nv_connector = NULL;
        struct drm_connector *connector;
        struct drm_connector_list_iter conn_iter;
+       char aux_name[48] = {0};
+       int index = dcbe->connector;
        int type, ret = 0;
        bool dummy;
 
@@ -1342,6 +1346,9 @@ nouveau_connector_create(struct drm_device *dev, int index)
        case DRM_MODE_CONNECTOR_eDP:
                nv_connector->aux.dev = dev->dev;
                nv_connector->aux.transfer = nouveau_connector_aux_xfer;
+               snprintf(aux_name, sizeof(aux_name), "sor-%04x-%04x",
+                        dcbe->hasht, dcbe->hashm);
+               nv_connector->aux.name = kstrdup(aux_name, GFP_KERNEL);
                ret = drm_dp_aux_register(&nv_connector->aux);
                if (ret) {
                        NV_ERROR(drm, "failed to register aux channel\n");
index f57ef35b1e5e6b6b5ce222bfc1f16fa9c757fa31..f43a8d63aef86e07c7078501ff4bad0e33ba937b 100644 (file)
@@ -38,6 +38,7 @@
 #include "nouveau_encoder.h"
 
 struct nvkm_i2c_port;
+struct dcb_output;
 
 #ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
 struct nouveau_backlight;
@@ -113,7 +114,7 @@ nouveau_crtc_connector_get(struct nouveau_crtc *nv_crtc)
 }
 
 struct drm_connector *
-nouveau_connector_create(struct drm_device *, int index);
+nouveau_connector_create(struct drm_device *, const struct dcb_output *);
 
 extern int nouveau_tv_disable;
 extern int nouveau_ignorelid;