mirror of https://gitee.com/openkylin/qemu.git
usb: use USBDescriptor for interface descriptors.
Add interface descriptor substruct to USBDescriptor, use it in the descriptor generator code. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
0a263db17a
commit
feafd797ee
|
@ -159,20 +159,22 @@ int usb_desc_iface(const USBDescIface *iface, uint8_t *dest, size_t len)
|
|||
{
|
||||
uint8_t bLength = 0x09;
|
||||
int i, rc, pos = 0;
|
||||
USBDescriptor *d = (void *)dest;
|
||||
|
||||
if (len < bLength) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
dest[0x00] = bLength;
|
||||
dest[0x01] = USB_DT_INTERFACE;
|
||||
dest[0x02] = iface->bInterfaceNumber;
|
||||
dest[0x03] = iface->bAlternateSetting;
|
||||
dest[0x04] = iface->bNumEndpoints;
|
||||
dest[0x05] = iface->bInterfaceClass;
|
||||
dest[0x06] = iface->bInterfaceSubClass;
|
||||
dest[0x07] = iface->bInterfaceProtocol;
|
||||
dest[0x08] = iface->iInterface;
|
||||
d->bLength = bLength;
|
||||
d->bDescriptorType = USB_DT_INTERFACE;
|
||||
|
||||
d->u.interface.bInterfaceNumber = iface->bInterfaceNumber;
|
||||
d->u.interface.bAlternateSetting = iface->bAlternateSetting;
|
||||
d->u.interface.bNumEndpoints = iface->bNumEndpoints;
|
||||
d->u.interface.bInterfaceClass = iface->bInterfaceClass;
|
||||
d->u.interface.bInterfaceSubClass = iface->bInterfaceSubClass;
|
||||
d->u.interface.bInterfaceProtocol = iface->bInterfaceProtocol;
|
||||
d->u.interface.iInterface = iface->iInterface;
|
||||
pos += bLength;
|
||||
|
||||
for (i = 0; i < iface->ndesc; i++) {
|
||||
|
|
|
@ -45,6 +45,15 @@ typedef struct USBDescriptor {
|
|||
uint8_t bmAttributes;
|
||||
uint8_t bMaxPower;
|
||||
} config;
|
||||
struct {
|
||||
uint8_t bInterfaceNumber;
|
||||
uint8_t bAlternateSetting;
|
||||
uint8_t bNumEndpoints;
|
||||
uint8_t bInterfaceClass;
|
||||
uint8_t bInterfaceSubClass;
|
||||
uint8_t bInterfaceProtocol;
|
||||
uint8_t iInterface;
|
||||
} interface;
|
||||
} u;
|
||||
} QEMU_PACKED USBDescriptor;
|
||||
|
||||
|
|
Loading…
Reference in New Issue