drm: cope with platformdev->id == -1
authorRob Clark <rob@ti.com>
Tue, 6 Mar 2012 16:20:36 +0000 (10:20 -0600)
committerDave Airlie <airlied@redhat.com>
Wed, 7 Mar 2012 14:03:40 +0000 (14:03 +0000)
If there are not multiple instances of a platform device, the id
should apparently be set to -1.  Which results in a odd looking
bus-id like "platform:foodrm:-1".  Probably we should just treat
this case as id 0.

Signed-off-by: Rob Clark <rob@ti.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_platform.c

index ae9db5e2b27c2449b04150be14eee439a608c0db..82431dcae37bdb6c2f97b3c2954d96c62a2e5e35 100644 (file)
@@ -122,7 +122,7 @@ static const char *drm_platform_get_name(struct drm_device *dev)
 
 static int drm_platform_set_busid(struct drm_device *dev, struct drm_master *master)
 {
-       int len, ret;
+       int len, ret, id;
 
        master->unique_len = 13 + strlen(dev->platformdev->name);
        master->unique_size = master->unique_len;
@@ -131,8 +131,16 @@ static int drm_platform_set_busid(struct drm_device *dev, struct drm_master *mas
        if (master->unique == NULL)
                return -ENOMEM;
 
+       id = dev->platformdev->id;
+
+       /* if only a single instance of the platform device, id will be
+        * set to -1.. use 0 instead to avoid a funny looking bus-id:
+        */
+       if (id == -1)
+               id = 0;
+
        len = snprintf(master->unique, master->unique_len,
-                       "platform:%s:%02d", dev->platformdev->name, dev->platformdev->id);
+                       "platform:%s:%02d", dev->platformdev->name, id);
 
        if (len > master->unique_len) {
                DRM_ERROR("Unique buffer overflowed\n");