usb: Add usb_device_alloc/free_streams

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Hans de Goede 2013-11-19 14:36:57 +01:00 committed by Gerd Hoffmann
parent 04b300f85f
commit 3b444eadf7
2 changed files with 30 additions and 0 deletions

View File

@ -203,6 +203,24 @@ void usb_device_ep_stopped(USBDevice *dev, USBEndpoint *ep)
} }
} }
int usb_device_alloc_streams(USBDevice *dev, USBEndpoint **eps, int nr_eps,
int streams)
{
USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);
if (klass->alloc_streams) {
return klass->alloc_streams(dev, eps, nr_eps, streams);
}
return 0;
}
void usb_device_free_streams(USBDevice *dev, USBEndpoint **eps, int nr_eps)
{
USBDeviceClass *klass = USB_DEVICE_GET_CLASS(dev);
if (klass->free_streams) {
klass->free_streams(dev, eps, nr_eps);
}
}
static int usb_qdev_init(DeviceState *qdev) static int usb_qdev_init(DeviceState *qdev)
{ {
USBDevice *dev = USB_DEVICE(qdev); USBDevice *dev = USB_DEVICE(qdev);

View File

@ -315,6 +315,14 @@ typedef struct USBDeviceClass {
*/ */
void (*ep_stopped)(USBDevice *dev, USBEndpoint *ep); void (*ep_stopped)(USBDevice *dev, USBEndpoint *ep);
/*
* Called by the hcd to alloc / free streams on a bulk endpoint.
* Optional may be NULL.
*/
int (*alloc_streams)(USBDevice *dev, USBEndpoint **eps, int nr_eps,
int streams);
void (*free_streams)(USBDevice *dev, USBEndpoint **eps, int nr_eps);
const char *product_desc; const char *product_desc;
const USBDesc *usb_desc; const USBDesc *usb_desc;
} USBDeviceClass; } USBDeviceClass;
@ -553,6 +561,10 @@ void usb_device_flush_ep_queue(USBDevice *dev, USBEndpoint *ep);
void usb_device_ep_stopped(USBDevice *dev, USBEndpoint *ep); void usb_device_ep_stopped(USBDevice *dev, USBEndpoint *ep);
int usb_device_alloc_streams(USBDevice *dev, USBEndpoint **eps, int nr_eps,
int streams);
void usb_device_free_streams(USBDevice *dev, USBEndpoint **eps, int nr_eps);
const char *usb_device_get_product_desc(USBDevice *dev); const char *usb_device_get_product_desc(USBDevice *dev);
const USBDesc *usb_device_get_usb_desc(USBDevice *dev); const USBDesc *usb_device_get_usb_desc(USBDevice *dev);