Commit af9c7c11 authored by Simon Glass's avatar Simon Glass
Browse files

sandbox: usb: Allow finding a USB emulator for a device



Each USB device has an emulator. Currently this can only be found by
supplying the 'pipe' value, which contains the device number. Add a way
to find it directly from the emulated device.
Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
parent 80438a6c
......@@ -108,9 +108,8 @@ static int usb_emul_get_descriptor(struct usb_dev_platdata *plat, int value,
return upto ? upto : length ? -EIO : 0;
}
int usb_emul_find(struct udevice *bus, ulong pipe, struct udevice **emulp)
static int usb_emul_find_devnum(int devnum, struct udevice **emulp)
{
int devnum = usb_pipedevice(pipe);
struct udevice *dev;
struct uclass *uc;
int ret;
......@@ -134,6 +133,20 @@ int usb_emul_find(struct udevice *bus, ulong pipe, struct udevice **emulp)
return -ENOENT;
}
int usb_emul_find(struct udevice *bus, ulong pipe, struct udevice **emulp)
{
int devnum = usb_pipedevice(pipe);
return usb_emul_find_devnum(devnum, emulp);
}
int usb_emul_find_for_dev(struct udevice *dev, struct udevice **emulp)
{
struct usb_dev_platdata *udev = dev_get_parent_platdata(dev);
return usb_emul_find_devnum(udev->devnum, emulp);
}
int usb_emul_control(struct udevice *emul, struct usb_device *udev,
unsigned long pipe, void *buffer, int length,
struct devrequest *setup)
......
......@@ -949,6 +949,16 @@ int usb_emul_bulk(struct udevice *emul, struct usb_device *udev,
*/
int usb_emul_find(struct udevice *bus, ulong pipe, struct udevice **emulp);
/**
* usb_emul_find_for_dev() - Find an emulator for a particular device
*
* @bus: USB bus (controller)
* @dev: USB device to check
* @emulp: Returns pointer to emulator, or NULL if not found
* @return 0 if found, -ve on error
*/
int usb_emul_find_for_dev(struct udevice *dev, struct udevice **emulp);
/**
* usb_emul_reset() - Reset all emulators ready for use
*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment