mirror of https://github.com/xemu-project/xemu.git
usb-desc: USBEndpoint support
Initialize USBEndpoint structs from USBDesc* data. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
82f02fe965
commit
83a53bbcda
|
@ -231,6 +231,27 @@ int usb_desc_other(const USBDescOther *desc, uint8_t *dest, size_t len)
|
||||||
|
|
||||||
/* ------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
static void usb_desc_ep_init(USBDevice *dev)
|
||||||
|
{
|
||||||
|
const USBDescIface *iface;
|
||||||
|
int i, e, pid, ep;
|
||||||
|
|
||||||
|
usb_ep_init(dev);
|
||||||
|
for (i = 0; i < dev->ninterfaces; i++) {
|
||||||
|
iface = dev->ifaces[i];
|
||||||
|
if (iface == NULL) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (e = 0; e < iface->bNumEndpoints; e++) {
|
||||||
|
pid = (iface->eps[e].bEndpointAddress & USB_DIR_IN) ?
|
||||||
|
USB_TOKEN_IN : USB_TOKEN_OUT;
|
||||||
|
ep = iface->eps[e].bEndpointAddress & 0x0f;
|
||||||
|
usb_ep_set_type(dev, pid, ep, iface->eps[e].bmAttributes & 0x03);
|
||||||
|
usb_ep_set_ifnum(dev, pid, ep, iface->bInterfaceNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const USBDescIface *usb_desc_find_interface(USBDevice *dev,
|
static const USBDescIface *usb_desc_find_interface(USBDevice *dev,
|
||||||
int nif, int alt)
|
int nif, int alt)
|
||||||
{
|
{
|
||||||
|
@ -272,6 +293,7 @@ static int usb_desc_set_interface(USBDevice *dev, int index, int value)
|
||||||
old = dev->altsetting[index];
|
old = dev->altsetting[index];
|
||||||
dev->altsetting[index] = value;
|
dev->altsetting[index] = value;
|
||||||
dev->ifaces[index] = iface;
|
dev->ifaces[index] = iface;
|
||||||
|
usb_desc_ep_init(dev);
|
||||||
|
|
||||||
if (dev->info->set_interface && old != value) {
|
if (dev->info->set_interface && old != value) {
|
||||||
dev->info->set_interface(dev, index, old, value);
|
dev->info->set_interface(dev, index, old, value);
|
||||||
|
|
Loading…
Reference in New Issue