Revision 2850ca9e
b/hw/usb-xhci.c | ||
---|---|---|
1470 | 1470 |
static int xhci_fire_ctl_transfer(XHCIState *xhci, XHCITransfer *xfer) |
1471 | 1471 |
{ |
1472 | 1472 |
XHCITRB *trb_setup, *trb_status; |
1473 |
uint8_t bmRequestType, bRequest;
|
|
1474 |
uint16_t wValue, wLength, wIndex;
|
|
1473 |
uint8_t bmRequestType; |
|
1474 |
uint16_t wLength;
|
|
1475 | 1475 |
XHCIPort *port; |
1476 | 1476 |
USBDevice *dev; |
1477 | 1477 |
int ret; |
... | ... | |
1508 | 1508 |
} |
1509 | 1509 |
|
1510 | 1510 |
bmRequestType = trb_setup->parameter; |
1511 |
bRequest = trb_setup->parameter >> 8; |
|
1512 |
wValue = trb_setup->parameter >> 16; |
|
1513 |
wIndex = trb_setup->parameter >> 32; |
|
1514 | 1511 |
wLength = trb_setup->parameter >> 48; |
1515 | 1512 |
|
1516 | 1513 |
if (xfer->data && xfer->data_alloced < wLength) { |
... | ... | |
1537 | 1534 |
xfer->iso_xfer = false; |
1538 | 1535 |
|
1539 | 1536 |
xhci_setup_packet(xfer, dev); |
1537 |
xfer->packet.parameter = trb_setup->parameter; |
|
1540 | 1538 |
if (!xfer->in_xfer) { |
1541 | 1539 |
xhci_xfer_data(xfer, xfer->data, wLength, 0, 1, 0); |
1542 | 1540 |
} |
1543 |
ret = usb_device_handle_control(dev, &xfer->packet, |
|
1544 |
(bmRequestType << 8) | bRequest, |
|
1545 |
wValue, wIndex, wLength, xfer->data); |
|
1541 |
|
|
1542 |
ret = usb_handle_packet(dev, &xfer->packet); |
|
1546 | 1543 |
|
1547 | 1544 |
xhci_complete_packet(xfer, ret); |
1548 | 1545 |
if (!xfer->running_async && !xfer->running_retry) { |
Also available in: Unified diff