Commit 1f6e24e73ccdca64864da009a21f5b7051d200a1

Authored by bellard
1 parent 3e382bc8

display device identifier string for user with info usb (Lonnie Mendez)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2029 c046a42c-6fe2-441c-8c8c-71466251a162
hw/usb-hid.c
@@ -521,6 +521,8 @@ USBDevice *usb_tablet_init(void) @@ -521,6 +521,8 @@ USBDevice *usb_tablet_init(void)
521 s->dev.handle_data = usb_mouse_handle_data; 521 s->dev.handle_data = usb_mouse_handle_data;
522 s->kind = USB_TABLET; 522 s->kind = USB_TABLET;
523 523
  524 + pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Tablet");
  525 +
524 return (USBDevice *)s; 526 return (USBDevice *)s;
525 } 527 }
526 528
@@ -539,5 +541,7 @@ USBDevice *usb_mouse_init(void) @@ -539,5 +541,7 @@ USBDevice *usb_mouse_init(void)
539 s->dev.handle_data = usb_mouse_handle_data; 541 s->dev.handle_data = usb_mouse_handle_data;
540 s->kind = USB_MOUSE; 542 s->kind = USB_MOUSE;
541 543
  544 + pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Mouse");
  545 +
542 return (USBDevice *)s; 546 return (USBDevice *)s;
543 } 547 }
hw/usb-hub.c
@@ -544,6 +544,8 @@ USBDevice *usb_hub_init(int nb_ports) @@ -544,6 +544,8 @@ USBDevice *usb_hub_init(int nb_ports)
544 s->dev.handle_control = usb_hub_handle_control; 544 s->dev.handle_control = usb_hub_handle_control;
545 s->dev.handle_data = usb_hub_handle_data; 545 s->dev.handle_data = usb_hub_handle_data;
546 546
  547 + pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Hub");
  548 +
547 s->nb_ports = nb_ports; 549 s->nb_ports = nb_ports;
548 for(i = 0; i < s->nb_ports; i++) { 550 for(i = 0; i < s->nb_ports; i++) {
549 port = &s->ports[i]; 551 port = &s->ports[i];
hw/usb-msd.c
@@ -389,6 +389,9 @@ USBDevice *usb_msd_init(const char *filename) @@ -389,6 +389,9 @@ USBDevice *usb_msd_init(const char *filename)
389 s->dev.handle_control = usb_msd_handle_control; 389 s->dev.handle_control = usb_msd_handle_control;
390 s->dev.handle_data = usb_msd_handle_data; 390 s->dev.handle_data = usb_msd_handle_data;
391 391
  392 + snprintf(s->dev.devname, sizeof(s->dev.devname), "QEMU USB MSD(%.16s)",
  393 + filename);
  394 +
392 s->scsi_dev = scsi_disk_init(bdrv, usb_msd_command_complete, s); 395 s->scsi_dev = scsi_disk_init(bdrv, usb_msd_command_complete, s);
393 usb_msd_handle_reset((USBDevice *)s, 0); 396 usb_msd_handle_reset((USBDevice *)s, 0);
394 return (USBDevice *)s; 397 return (USBDevice *)s;
hw/usb.h
@@ -128,6 +128,7 @@ struct USBDevice { @@ -128,6 +128,7 @@ struct USBDevice {
128 int (*handle_data)(USBDevice *dev, int pid, uint8_t devep, 128 int (*handle_data)(USBDevice *dev, int pid, uint8_t devep,
129 uint8_t *data, int len); 129 uint8_t *data, int len);
130 uint8_t addr; 130 uint8_t addr;
  131 + char devname[32];
131 132
132 int state; 133 int state;
133 uint8_t setup_buf[8]; 134 uint8_t setup_buf[8];
usb-linux.c
@@ -44,11 +44,13 @@ typedef int USBScanFunc(void *opaque, int bus_num, int addr, int class_id, @@ -44,11 +44,13 @@ typedef int USBScanFunc(void *opaque, int bus_num, int addr, int class_id,
44 int vendor_id, int product_id, 44 int vendor_id, int product_id,
45 const char *product_name, int speed); 45 const char *product_name, int speed);
46 static int usb_host_find_device(int *pbus_num, int *paddr, 46 static int usb_host_find_device(int *pbus_num, int *paddr,
  47 + char *product_name, int product_name_size,
47 const char *devname); 48 const char *devname);
48 49
49 //#define DEBUG 50 //#define DEBUG
50 51
51 #define USBDEVFS_PATH "/proc/bus/usb" 52 #define USBDEVFS_PATH "/proc/bus/usb"
  53 +#define PRODUCT_NAME_SZ 32
52 54
53 typedef struct USBHostDevice { 55 typedef struct USBHostDevice {
54 USBDevice dev; 56 USBDevice dev;
@@ -145,8 +147,11 @@ USBDevice *usb_host_device_open(const char *devname) @@ -145,8 +147,11 @@ USBDevice *usb_host_device_open(const char *devname)
145 char buf[1024]; 147 char buf[1024];
146 int descr_len, dev_descr_len, config_descr_len, nb_interfaces; 148 int descr_len, dev_descr_len, config_descr_len, nb_interfaces;
147 int bus_num, addr; 149 int bus_num, addr;
  150 + char product_name[PRODUCT_NAME_SZ];
148 151
149 - if (usb_host_find_device(&bus_num, &addr, devname) < 0) 152 + if (usb_host_find_device(&bus_num, &addr,
  153 + product_name, sizeof(product_name),
  154 + devname) < 0)
150 return NULL; 155 return NULL;
151 156
152 snprintf(buf, sizeof(buf), USBDEVFS_PATH "/%03d/%03d", 157 snprintf(buf, sizeof(buf), USBDEVFS_PATH "/%03d/%03d",
@@ -230,6 +235,14 @@ USBDevice *usb_host_device_open(const char *devname) @@ -230,6 +235,14 @@ USBDevice *usb_host_device_open(const char *devname)
230 dev->dev.handle_reset = usb_host_handle_reset; 235 dev->dev.handle_reset = usb_host_handle_reset;
231 dev->dev.handle_control = usb_host_handle_control; 236 dev->dev.handle_control = usb_host_handle_control;
232 dev->dev.handle_data = usb_host_handle_data; 237 dev->dev.handle_data = usb_host_handle_data;
  238 +
  239 + if (product_name[0] == '\0')
  240 + snprintf(dev->dev.devname, sizeof(dev->dev.devname),
  241 + "host:%s", devname);
  242 + else
  243 + pstrcpy(dev->dev.devname, sizeof(dev->dev.devname),
  244 + product_name);
  245 +
233 return (USBDevice *)dev; 246 return (USBDevice *)dev;
234 } 247 }
235 248
@@ -337,6 +350,7 @@ typedef struct FindDeviceState { @@ -337,6 +350,7 @@ typedef struct FindDeviceState {
337 int product_id; 350 int product_id;
338 int bus_num; 351 int bus_num;
339 int addr; 352 int addr;
  353 + char product_name[PRODUCT_NAME_SZ];
340 } FindDeviceState; 354 } FindDeviceState;
341 355
342 static int usb_host_find_device_scan(void *opaque, int bus_num, int addr, 356 static int usb_host_find_device_scan(void *opaque, int bus_num, int addr,
@@ -345,8 +359,11 @@ static int usb_host_find_device_scan(void *opaque, int bus_num, int addr, @@ -345,8 +359,11 @@ static int usb_host_find_device_scan(void *opaque, int bus_num, int addr,
345 const char *product_name, int speed) 359 const char *product_name, int speed)
346 { 360 {
347 FindDeviceState *s = opaque; 361 FindDeviceState *s = opaque;
348 - if (vendor_id == s->vendor_id &&  
349 - product_id == s->product_id) { 362 + if ((vendor_id == s->vendor_id &&
  363 + product_id == s->product_id) ||
  364 + (bus_num == s->bus_num &&
  365 + addr == s->addr)) {
  366 + pstrcpy(s->product_name, PRODUCT_NAME_SZ, product_name);
350 s->bus_num = bus_num; 367 s->bus_num = bus_num;
351 s->addr = addr; 368 s->addr = addr;
352 return 1; 369 return 1;
@@ -359,6 +376,7 @@ static int usb_host_find_device_scan(void *opaque, int bus_num, int addr, @@ -359,6 +376,7 @@ static int usb_host_find_device_scan(void *opaque, int bus_num, int addr,
359 'bus.addr' (decimal numbers) or 376 'bus.addr' (decimal numbers) or
360 'vendor_id:product_id' (hexa numbers) */ 377 'vendor_id:product_id' (hexa numbers) */
361 static int usb_host_find_device(int *pbus_num, int *paddr, 378 static int usb_host_find_device(int *pbus_num, int *paddr,
  379 + char *product_name, int product_name_size,
362 const char *devname) 380 const char *devname)
363 { 381 {
364 const char *p; 382 const char *p;
@@ -369,6 +387,11 @@ static int usb_host_find_device(int *pbus_num, int *paddr, @@ -369,6 +387,11 @@ static int usb_host_find_device(int *pbus_num, int *paddr,
369 if (p) { 387 if (p) {
370 *pbus_num = strtoul(devname, NULL, 0); 388 *pbus_num = strtoul(devname, NULL, 0);
371 *paddr = strtoul(p + 1, NULL, 0); 389 *paddr = strtoul(p + 1, NULL, 0);
  390 + fs.bus_num = *pbus_num;
  391 + fs.addr = *paddr;
  392 + ret = usb_host_scan(&fs, usb_host_find_device_scan);
  393 + if (ret)
  394 + pstrcpy(product_name, product_name_size, fs.product_name);
372 return 0; 395 return 0;
373 } 396 }
374 p = strchr(devname, ':'); 397 p = strchr(devname, ':');
@@ -379,6 +402,7 @@ static int usb_host_find_device(int *pbus_num, int *paddr, @@ -379,6 +402,7 @@ static int usb_host_find_device(int *pbus_num, int *paddr,
379 if (ret) { 402 if (ret) {
380 *pbus_num = fs.bus_num; 403 *pbus_num = fs.bus_num;
381 *paddr = fs.addr; 404 *paddr = fs.addr;
  405 + pstrcpy(product_name, product_name_size, fs.product_name);
382 return 0; 406 return 0;
383 } 407 }
384 } 408 }
@@ -3785,8 +3785,8 @@ void usb_info(void) @@ -3785,8 +3785,8 @@ void usb_info(void)
3785 speed_str = "?"; 3785 speed_str = "?";
3786 break; 3786 break;
3787 } 3787 }
3788 - term_printf(" Device %d.%d, speed %s Mb/s\n",  
3789 - 0, dev->addr, speed_str); 3788 + term_printf(" Device %d.%d, Speed %s Mb/s, Product %s\n",
  3789 + 0, dev->addr, speed_str, dev->devname);
3790 } 3790 }
3791 } 3791 }
3792 3792