qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 16/20] qdev/usb: print usb dev info


From: Gerd Hoffmann
Subject: [Qemu-devel] [PATCH 16/20] qdev/usb: print usb dev info
Date: Mon, 29 Jun 2009 14:46:17 +0200

Signed-off-by: Gerd Hoffmann <address@hidden>
---
 hw/usb-bus.c |   26 ++++++++++++++++++++++++++
 hw/usb.h     |    1 +
 vl.c         |   17 +----------------
 3 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/hw/usb-bus.c b/hw/usb-bus.c
index 689df9f..9f07946 100644
--- a/hw/usb-bus.c
+++ b/hw/usb-bus.c
@@ -1,10 +1,14 @@
 #include "hw.h"
 #include "usb.h"
 #include "qdev.h"
+#include "monitor.h"
+
+static void usb_bus_dev_print(Monitor *mon, DeviceState *qdev, int indent);
 
 static struct BusInfo usb_bus_info = {
     .name  = "USB",
     .size  = sizeof(USBBus),
+    .print = usb_bus_dev_print,
 };
 
 USBBus *usb_bus_new(DeviceState *host)
@@ -137,3 +141,25 @@ int usb_device_delete_addr(int busnr, int addr)
     bus->nfree++;
     return 0;
 }
+
+const char *usb_speed(unsigned int speed)
+{
+    static const char *txt[] = {
+        [ USB_SPEED_LOW  ] = "1.5",
+        [ USB_SPEED_FULL ] = "12",
+        [ USB_SPEED_HIGH ] = "480",
+    };
+    if (speed >= ARRAY_SIZE(txt))
+        return "?";
+    return txt[speed];
+}
+
+static void usb_bus_dev_print(Monitor *mon, DeviceState *qdev, int indent)
+{
+    USBDevice *dev = DO_UPCAST(USBDevice, qdev, qdev);
+    USBBus *bus = usb_bus_from_device(dev);
+
+    monitor_printf(mon, "%*saddr %d.%d, speed %s, name %s\n", indent, "",
+                   bus->qbus.busnr, dev->addr,
+                   usb_speed(dev->speed), dev->devname);
+}
diff --git a/hw/usb.h b/hw/usb.h
index d68988a..3169bc9 100644
--- a/hw/usb.h
+++ b/hw/usb.h
@@ -309,6 +309,7 @@ void usb_register_port(USBBus *bus, USBPort *port, void 
*opaque, int index,
                        usb_attachfn attach);
 int usb_device_attach(USBDevice *dev);
 int usb_device_delete_addr(int busnr, int addr);
+const char *usb_speed(unsigned int speed);
 
 static inline USBBus *usb_bus_from_device(USBDevice *d)
 {
diff --git a/vl.c b/vl.c
index 7add3d7..0462892 100644
--- a/vl.c
+++ b/vl.c
@@ -2746,7 +2746,6 @@ void usb_info(Monitor *mon)
     USBBus *bus;
     USBDevice *dev;
     USBPort *port;
-    const char *speed_str;
     int busnr;
 
     if (!usb_enabled) {
@@ -2762,22 +2761,8 @@ void usb_info(Monitor *mon)
             dev = port->dev;
             if (!dev)
                 continue;
-            switch(dev->speed) {
-            case USB_SPEED_LOW:
-                speed_str = "1.5";
-                break;
-            case USB_SPEED_FULL:
-                speed_str = "12";
-                break;
-            case USB_SPEED_HIGH:
-                speed_str = "480";
-                break;
-            default:
-                speed_str = "?";
-                break;
-            }
             monitor_printf(mon, "  Device %d.%d, Speed %s Mb/s, Product %s\n",
-                           busnr, dev->addr, speed_str, dev->devname);
+                           busnr, dev->addr, usb_speed(dev->speed), 
dev->devname);
         }
     }
 }
-- 
1.6.2.5





reply via email to

[Prev in Thread] Current Thread [Next in Thread]