#include <linux/usb/gadget.h>
#if CONFIG_IS_ENABLED(DM_USB_GADGET)
-#define MAX_UDC_DEVICES 4
-static struct udevice *dev_array[MAX_UDC_DEVICES];
-
int udc_device_get_by_index(int index, struct udevice **udev)
{
struct udevice *dev = NULL;
#endif
}
-int usb_gadget_initialize(int index)
-{
- int ret;
- struct udevice *dev = NULL;
-
- if (index < 0 || index >= ARRAY_SIZE(dev_array))
- return -EINVAL;
- if (dev_array[index])
- return 0;
- ret = udc_device_get_by_index(index, &dev);
- if (!dev || ret) {
- pr_err("No USB device found\n");
- return -ENODEV;
- }
- dev_array[index] = dev;
- return 0;
-}
-
-int usb_gadget_release(int index)
+int usb_gadget_handle_interrupts(int index)
{
-#if CONFIG_IS_ENABLED(DM_DEVICE_REMOVE)
+ struct udevice *udc;
int ret;
- if (index < 0 || index >= ARRAY_SIZE(dev_array))
- return -EINVAL;
- ret = device_remove(dev_array[index]);
- if (!ret)
- dev_array[index] = NULL;
- return ret;
-#else
- return -ENOSYS;
-#endif
-}
+ ret = udc_device_get_by_index(index, &udc);
+ if (ret)
+ return ret;
-int usb_gadget_handle_interrupts(int index)
-{
- if (index < 0 || index >= ARRAY_SIZE(dev_array))
- return -EINVAL;
- return dm_usb_gadget_handle_interrupts(dev_array[index]);
+ return dm_usb_gadget_handle_interrupts(udc);
}
#else
/* Backwards hardware compatibility -- switch to DM_USB_GADGET */
*/
int udc_device_put(struct udevice *udev);
-#if CONFIG_IS_ENABLED(DM_USB_GADGET)
-int usb_gadget_initialize(int index);
-int usb_gadget_release(int index);
-int dm_usb_gadget_handle_interrupts(struct udevice *dev);
-#else
-#include <usb.h>
-static inline int usb_gadget_initialize(int index)
-{
- return board_usb_init(index, USB_INIT_DEVICE);
-}
-
-static inline int usb_gadget_release(int index)
-{
- return board_usb_cleanup(index, USB_INIT_DEVICE);
-}
-#endif
-
#endif /* __LINUX_USB_GADGET_H */