qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [usb] display device identifier string for user with info usb
@ 2006-05-22 20:12 Lonnie Mendez
  2006-05-22 20:15 ` Lonnie Mendez
  0 siblings, 1 reply; 3+ messages in thread
From: Lonnie Mendez @ 2006-05-22 20:12 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 316 bytes --]

   The attached patch provides more output to accompany info usb.  A 
device name is provided which is obtained from product string 
descriptor.  This is to help clear up what device is which as the only 
information currently provided to the user are the bus and address the 
device has been given from the guest.


[-- Attachment #2: qemu-info-usb.diff --]
[-- Type: text/plain, Size: 4031 bytes --]

--- qemu/hw/usb.h	2006-05-21 11:30:15.000000000 -0500
+++ qemu/hw/usb.h	2006-05-22 13:23:10.000000000 -0500
@@ -127,6 +127,7 @@
     int (*handle_data)(USBDevice *dev, int pid, uint8_t devep,
                        uint8_t *data, int len);
     uint8_t addr;
+    char devname[32];
     
     int state;
     uint8_t setup_buf[8];
--- qemu/hw/usb-hub.c	2006-05-21 11:30:15.000000000 -0500
+++ qemu/hw/usb-hub.c	2006-05-22 13:23:53.000000000 -0500
@@ -542,6 +542,8 @@
     s->dev.handle_control = usb_hub_handle_control;
     s->dev.handle_data = usb_hub_handle_data;
 
+    strcpy(s->dev.devname, "QEMU USB Hub");
+
     s->nb_ports = nb_ports;
     for(i = 0; i < s->nb_ports; i++) {
         port = &s->ports[i];
--- qemu/hw/usb-hid.c	2006-04-12 16:09:07.000000000 -0500
+++ qemu/hw/usb-hid.c	2006-05-22 13:24:57.000000000 -0500
@@ -515,6 +515,8 @@
     s->dev.handle_data = usb_mouse_handle_data;
     s->kind = USB_TABLET;
 
+    strcpy(s->dev.devname, "QEMU USB Tablet");
+
     return (USBDevice *)s;
 }
 
@@ -533,5 +535,7 @@
     s->dev.handle_data = usb_mouse_handle_data;
     s->kind = USB_MOUSE;
 
+    strcpy(s->dev.devname, "QEMU USB Mouse");
+
     return (USBDevice *)s;
 }
--- qemu/usb-linux.c	2006-03-11 12:03:38.000000000 -0600
+++ qemu/usb-linux.c	2006-05-22 15:06:28.000000000 -0500
@@ -44,6 +44,7 @@
                         int vendor_id, int product_id, 
                         const char *product_name, int speed);
 static int usb_host_find_device(int *pbus_num, int *paddr, 
+                                char *product_name, 
                                 const char *devname);
 
 //#define DEBUG
@@ -145,8 +146,9 @@
     char buf[1024];
     int descr_len, dev_descr_len, config_descr_len, nb_interfaces;
     int bus_num, addr;
+    char product_name[32];
 
-    if (usb_host_find_device(&bus_num, &addr, devname) < 0) 
+    if (usb_host_find_device(&bus_num, &addr, product_name, devname) < 0) 
         return NULL;
     
     snprintf(buf, sizeof(buf), USBDEVFS_PATH "/%03d/%03d", 
@@ -230,6 +232,12 @@
     dev->dev.handle_reset = usb_host_handle_reset;
     dev->dev.handle_control = usb_host_handle_control;
     dev->dev.handle_data = usb_host_handle_data;
+
+    if (product_name[0] == '\0')
+        snprintf(dev->dev.devname, 31, "host:%s", devname);
+    else
+        strncpy(dev->dev.devname, product_name, 31);
+
     return (USBDevice *)dev;
 }
 
@@ -337,6 +345,7 @@
     int product_id;
     int bus_num;
     int addr;
+    char product_name[32];
 } FindDeviceState;
 
 static int usb_host_find_device_scan(void *opaque, int bus_num, int addr, 
@@ -345,8 +354,11 @@
                                      const char *product_name, int speed)
 {
     FindDeviceState *s = opaque;
-    if (vendor_id == s->vendor_id &&
-        product_id == s->product_id) {
+    if ((vendor_id == s->vendor_id &&
+        product_id == s->product_id) ||
+        (bus_num == s->bus_num &&
+        addr == s->addr)) {
+        strncpy(s->product_name, product_name, 31);
         s->bus_num = bus_num;
         s->addr = addr;
         return 1;
@@ -358,7 +370,8 @@
 /* the syntax is : 
    'bus.addr' (decimal numbers) or 
    'vendor_id:product_id' (hexa numbers) */
-static int usb_host_find_device(int *pbus_num, int *paddr, 
+static int usb_host_find_device(int *pbus_num, int *paddr,
+                                char *product_name,
                                 const char *devname)
 {
     const char *p;
@@ -369,6 +382,11 @@
     if (p) {
         *pbus_num = strtoul(devname, NULL, 0);
         *paddr = strtoul(p + 1, NULL, 0);
+        fs.bus_num = *pbus_num;
+        fs.addr = *paddr;
+        ret = usb_host_scan(&fs, usb_host_find_device_scan);
+        if (ret)
+            strcpy(product_name, fs.product_name);
         return 0;
     }
     p = strchr(devname, ':');
@@ -379,6 +397,7 @@
         if (ret) {
             *pbus_num = fs.bus_num;
             *paddr = fs.addr;
+            strcpy(product_name, fs.product_name);
             return 0;
         }
     }

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-06-15  7:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-22 20:12 [Qemu-devel] [usb] display device identifier string for user with info usb Lonnie Mendez
2006-05-22 20:15 ` Lonnie Mendez
     [not found]   ` <4490367D.605@bellard.org>
2006-06-15  7:52     ` Lonnie Mendez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).