usb: track altsetting in USBDevice

Also handle {GET,SET}_INTERFACE in common code (usb-desc.c).

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2011-08-30 13:21:27 +02:00
parent 65360511a2
commit 1de14d43e2
12 changed files with 90 additions and 79 deletions

View file

@ -161,6 +161,9 @@ struct USBDescString {
QLIST_ENTRY(USBDescString) next;
};
#define USB_MAX_ENDPOINTS 15
#define USB_MAX_INTERFACES 16
/* definition of a USB device */
struct USBDevice {
DeviceState qdev;
@ -191,7 +194,9 @@ struct USBDevice {
int configuration;
int ninterfaces;
int altsetting[USB_MAX_INTERFACES];
const USBDescConfig *config;
const USBDescIface *ifaces[USB_MAX_INTERFACES];
};
struct USBDeviceInfo {
@ -244,6 +249,9 @@ struct USBDeviceInfo {
*/
int (*handle_data)(USBDevice *dev, USBPacket *p);
void (*set_interface)(USBDevice *dev, int interface,
int alt_old, int alt_new);
const char *product_desc;
const USBDesc *usb_desc;