sandbox: usb: Allow finding a USB emulator for a device
[platform/kernel/u-boot.git] / drivers / usb / emul / usb-emul-uclass.c
index 205f2c5..6b5f3c0 100644 (file)
@@ -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)