|
|
|
@ -87,6 +87,24 @@ static int sandbox_submit_bulk(struct udevice *bus, struct usb_device *udev, |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int sandbox_submit_int(struct udevice *bus, struct usb_device *udev, |
|
|
|
|
unsigned long pipe, void *buffer, int length, |
|
|
|
|
int interval) |
|
|
|
|
{ |
|
|
|
|
struct udevice *emul; |
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
|
/* Just use child of dev as emulator? */ |
|
|
|
|
debug("%s: bus=%s\n", __func__, bus->name); |
|
|
|
|
ret = usb_emul_find(bus, pipe, &emul); |
|
|
|
|
usbmon_trace(bus, pipe, NULL, emul); |
|
|
|
|
if (ret) |
|
|
|
|
return ret; |
|
|
|
|
ret = usb_emul_int(emul, udev, pipe, buffer, length, interval); |
|
|
|
|
|
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int sandbox_alloc_device(struct udevice *dev, struct usb_device *udev) |
|
|
|
|
{ |
|
|
|
|
return 0; |
|
|
|
@ -100,6 +118,7 @@ static int sandbox_usb_probe(struct udevice *dev) |
|
|
|
|
static const struct dm_usb_ops sandbox_usb_ops = { |
|
|
|
|
.control = sandbox_submit_control, |
|
|
|
|
.bulk = sandbox_submit_bulk, |
|
|
|
|
.interrupt = sandbox_submit_int, |
|
|
|
|
.alloc_device = sandbox_alloc_device, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|