hw/usb-msd: fix some usb requests
The usb-msd device emulation needs some small tweaks in the requests emulations. For instance, the reset/maxlun requests are class/interface specific so requests for them with the type class and recipient interface bits sets have to be handled. Signed-off-by: Arnaud Patard <arnaud.patard@rtp-net.org> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
314b1811c1
commit
e5322f76a7
|
@ -321,17 +321,19 @@ static int usb_msd_handle_control(USBDevice *dev, int request, int value,
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
case EndpointOutRequest | USB_REQ_CLEAR_FEATURE:
|
case EndpointOutRequest | USB_REQ_CLEAR_FEATURE:
|
||||||
if (value == 0 && index != 0x81) { /* clear ep halt */
|
ret = 0;
|
||||||
goto fail;
|
break;
|
||||||
}
|
case InterfaceOutRequest | USB_REQ_SET_INTERFACE:
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
/* Class specific requests. */
|
/* Class specific requests. */
|
||||||
|
case (((USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8) | MassStorageReset):
|
||||||
case MassStorageReset:
|
case MassStorageReset:
|
||||||
/* Reset state ready for the next CBW. */
|
/* Reset state ready for the next CBW. */
|
||||||
s->mode = USB_MSDM_CBW;
|
s->mode = USB_MSDM_CBW;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
|
case (((USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8) | GetMaxLun):
|
||||||
case GetMaxLun:
|
case GetMaxLun:
|
||||||
data[0] = 0;
|
data[0] = 0;
|
||||||
ret = 1;
|
ret = 1;
|
||||||
|
|
Loading…
Reference in New Issue