usb: use USBDescriptor for config descriptors.
Add config 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
3cfeee6177
commit
0a263db17a
@ -78,19 +78,21 @@ int usb_desc_config(const USBDescConfig *conf, uint8_t *dest, size_t len)
|
||||
{
|
||||
uint8_t bLength = 0x09;
|
||||
uint16_t wTotalLength = 0;
|
||||
USBDescriptor *d = (void *)dest;
|
||||
int i, rc;
|
||||
|
||||
if (len < bLength) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
dest[0x00] = bLength;
|
||||
dest[0x01] = USB_DT_CONFIG;
|
||||
dest[0x04] = conf->bNumInterfaces;
|
||||
dest[0x05] = conf->bConfigurationValue;
|
||||
dest[0x06] = conf->iConfiguration;
|
||||
dest[0x07] = conf->bmAttributes;
|
||||
dest[0x08] = conf->bMaxPower;
|
||||
d->bLength = bLength;
|
||||
d->bDescriptorType = USB_DT_CONFIG;
|
||||
|
||||
d->u.config.bNumInterfaces = conf->bNumInterfaces;
|
||||
d->u.config.bConfigurationValue = conf->bConfigurationValue;
|
||||
d->u.config.iConfiguration = conf->iConfiguration;
|
||||
d->u.config.bmAttributes = conf->bmAttributes;
|
||||
d->u.config.bMaxPower = conf->bMaxPower;
|
||||
wTotalLength += bLength;
|
||||
|
||||
/* handle grouped interfaces if any */
|
||||
@ -113,8 +115,8 @@ int usb_desc_config(const USBDescConfig *conf, uint8_t *dest, size_t len)
|
||||
wTotalLength += rc;
|
||||
}
|
||||
|
||||
dest[0x02] = usb_lo(wTotalLength);
|
||||
dest[0x03] = usb_hi(wTotalLength);
|
||||
d->u.config.wTotalLength_lo = usb_lo(wTotalLength);
|
||||
d->u.config.wTotalLength_hi = usb_hi(wTotalLength);
|
||||
return wTotalLength;
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,15 @@ typedef struct USBDescriptor {
|
||||
uint8_t bNumConfigurations;
|
||||
uint8_t bReserved;
|
||||
} device_qualifier;
|
||||
struct {
|
||||
uint8_t wTotalLength_lo;
|
||||
uint8_t wTotalLength_hi;
|
||||
uint8_t bNumInterfaces;
|
||||
uint8_t bConfigurationValue;
|
||||
uint8_t iConfiguration;
|
||||
uint8_t bmAttributes;
|
||||
uint8_t bMaxPower;
|
||||
} config;
|
||||
} u;
|
||||
} QEMU_PACKED USBDescriptor;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user