[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 26/30] usb storage: high speed support
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 26/30] usb storage: high speed support |
Date: |
Fri, 17 Dec 2010 12:26:42 +0100 |
Add high speed support to the usb mass storage device. With this patch
applied the linux kernel recognises the usb storage device as highspeed
capable device and suggests to connect it to a highspeed port instead of
the uhci. Tested with both uhci and (not-yet submitted) ehci.
Signed-off-by: Gerd Hoffmann <address@hidden>
---
hw/usb-msd.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 46 insertions(+), 5 deletions(-)
diff --git a/hw/usb-msd.c b/hw/usb-msd.c
index 74e657e..7b8189f 100644
--- a/hw/usb-msd.c
+++ b/hw/usb-msd.c
@@ -77,15 +77,19 @@ enum {
STR_MANUFACTURER = 1,
STR_PRODUCT,
STR_SERIALNUMBER,
+ STR_CONFIG_FULL,
+ STR_CONFIG_HIGH,
};
static const USBDescStrings desc_strings = {
[STR_MANUFACTURER] = "QEMU " QEMU_VERSION,
[STR_PRODUCT] = "QEMU USB HARDDRIVE",
[STR_SERIALNUMBER] = "1",
+ [STR_CONFIG_FULL] = "Full speed config (usb 1.1)",
+ [STR_CONFIG_HIGH] = "High speed config (usb 2.0)",
};
-static const USBDescIface desc_iface0 = {
+static const USBDescIface desc_iface_full = {
.bInterfaceNumber = 0,
.bNumEndpoints = 2,
.bInterfaceClass = USB_CLASS_MASS_STORAGE,
@@ -104,16 +108,51 @@ static const USBDescIface desc_iface0 = {
}
};
-static const USBDescDevice desc_device = {
- .bcdUSB = 0x0100,
+static const USBDescDevice desc_device_full = {
+ .bcdUSB = 0x0200,
.bMaxPacketSize0 = 8,
.bNumConfigurations = 1,
.confs = (USBDescConfig[]) {
{
.bNumInterfaces = 1,
.bConfigurationValue = 1,
+ .iConfiguration = STR_CONFIG_FULL,
.bmAttributes = 0xc0,
- .ifs = &desc_iface0,
+ .ifs = &desc_iface_full,
+ },
+ },
+};
+
+static const USBDescIface desc_iface_high = {
+ .bInterfaceNumber = 0,
+ .bNumEndpoints = 2,
+ .bInterfaceClass = USB_CLASS_MASS_STORAGE,
+ .bInterfaceSubClass = 0x06, /* SCSI */
+ .bInterfaceProtocol = 0x50, /* Bulk */
+ .eps = (USBDescEndpoint[]) {
+ {
+ .bEndpointAddress = USB_DIR_IN | 0x01,
+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
+ .wMaxPacketSize = 512,
+ },{
+ .bEndpointAddress = USB_DIR_OUT | 0x02,
+ .bmAttributes = USB_ENDPOINT_XFER_BULK,
+ .wMaxPacketSize = 512,
+ },
+ }
+};
+
+static const USBDescDevice desc_device_high = {
+ .bcdUSB = 0x0200,
+ .bMaxPacketSize0 = 64,
+ .bNumConfigurations = 1,
+ .confs = (USBDescConfig[]) {
+ {
+ .bNumInterfaces = 1,
+ .bConfigurationValue = 1,
+ .iConfiguration = STR_CONFIG_HIGH,
+ .bmAttributes = 0xc0,
+ .ifs = &desc_iface_high,
},
},
};
@@ -127,7 +166,8 @@ static const USBDesc desc = {
.iProduct = STR_PRODUCT,
.iSerialNumber = STR_SERIALNUMBER,
},
- .full = &desc_device,
+ .full = &desc_device_full,
+ .high = &desc_device_high,
.str = desc_strings,
};
@@ -558,6 +598,7 @@ static struct USBDeviceInfo msd_info = {
.usb_desc = &desc,
.init = usb_msd_initfn,
.handle_packet = usb_generic_handle_packet,
+ .handle_attach = usb_desc_attach,
.handle_reset = usb_msd_handle_reset,
.handle_control = usb_msd_handle_control,
.handle_data = usb_msd_handle_data,
--
1.7.1
- [Qemu-devel] [PATCH 19/30] usb: hub: remote wakeup support., (continued)
- [Qemu-devel] [PATCH 19/30] usb: hub: remote wakeup support., Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 15/30] usb: create USBPortOps, move attach there., Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 11/30] usb network: use new descriptor infrastructure., Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 20/30] usb: hid: remote wakeup support., Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 21/30] usb: hid: change serial number to "42"., Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 27/30] usb storage: fix status reporting, Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 28/30] usb storage: handle long responses, Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 24/30] usb: add usb_desc_attach, Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 16/30] usb: rework attach/detach workflow, Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 22/30] usb: add speed mask to ports, Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 26/30] usb storage: high speed support,
Gerd Hoffmann <=
- [Qemu-devel] [PATCH 23/30] usb: add attach callback, Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 25/30] usb: add device qualifier support, Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 18/30] usb: uhci: remote wakeup support., Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 29/30] usb: keep track of physical port address., Gerd Hoffmann, 2010/12/17
- [Qemu-devel] [PATCH 30/30] usb: add port property., Gerd Hoffmann, 2010/12/17