mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-28 01:51:33 +00:00
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: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
80438a6c71
commit
af9c7c11e9
2 changed files with 25 additions and 2 deletions
|
@ -108,9 +108,8 @@ static int usb_emul_get_descriptor(struct usb_dev_platdata *plat, int value,
|
||||||
return upto ? upto : length ? -EIO : 0;
|
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 udevice *dev;
|
||||||
struct uclass *uc;
|
struct uclass *uc;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -134,6 +133,20 @@ int usb_emul_find(struct udevice *bus, ulong pipe, struct udevice **emulp)
|
||||||
return -ENOENT;
|
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,
|
int usb_emul_control(struct udevice *emul, struct usb_device *udev,
|
||||||
unsigned long pipe, void *buffer, int length,
|
unsigned long pipe, void *buffer, int length,
|
||||||
struct devrequest *setup)
|
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);
|
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
|
* usb_emul_reset() - Reset all emulators ready for use
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue