From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 1/5] drm/usb: add a busid implementation Date: Mon, 20 Feb 2012 16:13:45 +0000 Message-ID: <1329754429-5491-2-git-send-email-airlied@gmail.com> References: <1329754429-5491-1-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTP id 61263A08E1 for ; Mon, 20 Feb 2012 08:16:28 -0800 (PST) Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q1KGGRgZ009403 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 20 Feb 2012 11:16:28 -0500 Received: from optimus.redhat.com (vpn1-5-163.ams2.redhat.com [10.36.5.163]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q1KGGPsR020110 for ; Mon, 20 Feb 2012 11:16:27 -0500 In-Reply-To: <1329754429-5491-1-git-send-email-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org From: Dave Airlie This adds an implementation for the busid callback so userspace can distinguish usb devices better. Signed-off-by: Dave Airlie --- drivers/gpu/drm/drm_usb.c | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/drm_usb.c b/drivers/gpu/drm/drm_usb.c index 445003f..ca77aa6 100644 --- a/drivers/gpu/drm/drm_usb.c +++ b/drivers/gpu/drm/drm_usb.c @@ -85,7 +85,39 @@ static const char *drm_usb_get_name(struct drm_device *dev) static int drm_usb_set_busid(struct drm_device *dev, struct drm_master *master) { + struct usb_driver *udriver = dev->driver->kdriver.usb; + int len, ret; + + master->unique_len = 40; + master->unique_size = master->unique_len; + master->unique = kmalloc(master->unique_size, GFP_KERNEL); + if (master->unique == NULL) + return -ENOMEM; + + len = snprintf(master->unique, master->unique_len, + "usb:%s", dev_name(&dev->usbdev->dev)); + + if (len >= master->unique_len) { + DRM_ERROR("buffer overflow"); + ret = -EINVAL; + goto err; + } else + master->unique_len = len; + + dev->devname = kmalloc(strlen(udriver->name) + + master->unique_len + 2, GFP_KERNEL); + + if (dev->devname == NULL) { + ret = -ENOMEM; + goto err; + } + + sprintf(dev->devname, "%s@%s", udriver->name, + master->unique); + return 0; +err: + return ret; } static struct drm_bus drm_usb_bus = { -- 1.7.6