return 0;
 }
 
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
 {
        u32 status;
 
-       status = dwc3_omap_uboot_interrupt_status(0);
+       status = dwc3_omap_uboot_interrupt_status(index);
        if (status)
-               dwc3_uboot_handle_interrupt(0);
+               dwc3_uboot_handle_interrupt(index);
 
        return 0;
 }
 
        return 0;
 }
 
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
 {
        u32 status;
 
-       status = dwc3_omap_uboot_interrupt_status(0);
+       status = dwc3_omap_uboot_interrupt_status(index);
        if (status)
-               dwc3_uboot_handle_interrupt(0);
+               dwc3_uboot_handle_interrupt(index);
 
        return 0;
 }
 
                if (ctrlc())
                        goto exit;
 
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(controller_index);
        }
 exit:
        g_dnl_unregister();
 
                        break;
                if (ctrlc())
                        break;
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
        }
 
        g_dnl_unregister();
 
        }
 
        while (1) {
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(controller_index);
 
                rc = fsg_main_thread(NULL);
                if (rc) {
 
        },
 };
 
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
 {
        struct usba_udc *udc = &controller;
 
 
        }
 }
 
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
 {
        u32 value;
        struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
 
                /* Wait until host receives OID_GEN_MEDIA_CONNECT_STATUS */
                ts = get_timer(0);
                while (get_timer(ts) < timeout)
-                       usb_gadget_handle_interrupts();
+                       usb_gadget_handle_interrupts(0);
 #endif
 
                rndis_uninit(dev->rndis_config);
                        error("The remote end did not respond in time.");
                        goto fail;
                }
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
        }
 
        packet_received = 0;
                        printf("timeout sending packets to usb ethernet\n");
                        return -1;
                }
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
        }
        if (rndis_pkt)
                free(rndis_pkt);
 {
        struct eth_dev *dev = &l_ethdev;
 
-       usb_gadget_handle_interrupts();
+       usb_gadget_handle_interrupts(0);
 
        if (packet_received) {
                debug("%s: packet received\n", __func__);
 
        /* Clear pending interrupt */
        if (dev->network_started) {
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
                dev->network_started = 0;
        }
 
 
                        k = 0;
                }
 
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
        }
        common->thread_wakeup_needed = 0;
        return rc;
 
                }
 
                while (!dev->rxdata) {
-                       usb_gadget_handle_interrupts();
+                       usb_gadget_handle_interrupts(0);
                        if (ctrlc())
                                return -1;
                }
 
        /* Wait until tx interrupt received */
        while (!dev->txdata)
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
 
        dev->txdata = 0;
 }
        /* Wait for a device enumeration and configuration settings */
        debug("THOR enumeration/configuration setting....\n");
        while (!dev->configuration_done)
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
 
        thor_set_dma(thor_rx_data_buf, strlen("THOR"));
        /* detect the download request from Host PC */
 
        },
 };
 
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
 {
        struct fotg210_chip *chip = &controller;
        struct fotg210_regs *regs = chip->regs;
 
 /*-------------------------------------------------------------------------*/
 
 extern int
-usb_gadget_handle_interrupts(void)
+usb_gadget_handle_interrupts(int index)
 {
        return pxa25x_udc_irq();
 }
 
        return retval;
 }
 
-int usb_gadget_handle_interrupts()
+int usb_gadget_handle_interrupts(int index)
 {
        u32 intr_status = readl(®->gintsts);
        u32 gintmsk = readl(®->gintmsk);
 
 #ifdef CONFIG_MUSB_GADGET
 static struct musb *gadget;
 
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
 {
        WATCHDOG_RESET();
        if (!gadget || !gadget->isr)
 
 
 extern void usb_ep_autoconfig_reset(struct usb_gadget *);
 
-extern int usb_gadget_handle_interrupts(void);
+extern int usb_gadget_handle_interrupts(int index);
 
 #endif /* __LINUX_USB_GADGET_H */