From a980a065fb5e86d6dec337e6cb6ff432f1a143c9 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 26 Nov 2010 20:20:41 +0100 Subject: usb: move USB_REQ_{GET,SET}_CONFIGURATION handling to common code This patch adds fields to the USBDevice struct for the current speed (hard-wired to full speed for now) and current device configuration. Also a init function is added which inializes these fields. This allows USB_REQ_{GET,SET}_CONFIGURATION handling to be moved to common code. For most drivers the conversion is trivial ad they support a single configuration only anyway. One exception is bluetooth where some device-specific setup code runs after get/set configuration. The other is usb-net which actually has two configurations so the the code to check for the active configuration has been adapted. Signed-off-by: Gerd Hoffmann --- hw/usb-serial.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'hw/usb-serial.c') diff --git a/hw/usb-serial.c b/hw/usb-serial.c index c1f31c76d..2bdb10b8f 100644 --- a/hw/usb-serial.c +++ b/hw/usb-serial.c @@ -254,13 +254,6 @@ static int usb_serial_handle_control(USBDevice *dev, int request, int value, } ret = 0; break; - case DeviceRequest | USB_REQ_GET_CONFIGURATION: - data[0] = 1; - ret = 1; - break; - case DeviceOutRequest | USB_REQ_SET_CONFIGURATION: - ret = 0; - break; case DeviceRequest | USB_REQ_GET_INTERFACE: data[0] = 0; ret = 1; @@ -507,7 +500,8 @@ static void usb_serial_event(void *opaque, int event) static int usb_serial_initfn(USBDevice *dev) { USBSerialState *s = DO_UPCAST(USBSerialState, dev, dev); - s->dev.speed = USB_SPEED_FULL; + + usb_desc_init(dev); if (!s->cs) { error_report("Property chardev is required"); -- cgit v1.2.3