usb: modify usb_gadget_handle_interrupts to take controller index
authorKishon Vijay Abraham I <kishon@ti.com>
Mon, 23 Feb 2015 13:10:23 +0000 (18:40 +0530)
committerMarek Vasut <marex@denx.de>
Tue, 14 Apr 2015 03:48:11 +0000 (05:48 +0200)
Since we support multiple dwc3 controllers to be existent at the same
time, in order to handle the interrupts of a particular dwc3 controller
usb_gadget_handle_interrutps should take controller index as an
argument.

Hence the API of usb_gadget_handle_interrupts is modified to take
controller index as an argument and made the corresponding changes to all
the usb_gadget_handle_interrupts calls.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
15 files changed:
board/ti/am43xx/board.c
board/ti/dra7xx/evm.c
common/cmd_dfu.c
common/cmd_fastboot.c
common/cmd_usb_mass_storage.c
drivers/usb/gadget/atmel_usba_udc.c
drivers/usb/gadget/ci_udc.c
drivers/usb/gadget/ether.c
drivers/usb/gadget/f_mass_storage.c
drivers/usb/gadget/f_thor.c
drivers/usb/gadget/fotg210.c
drivers/usb/gadget/pxa25x_udc.c
drivers/usb/gadget/s3c_udc_otg.c
drivers/usb/musb-new/musb_uboot.c
include/linux/usb/gadget.h

index 6c4fe48a38024d3b79735abd00a08c8a839c9223..ddf4c5fc13db9a8afd780a529a2eb81ffe264d18 100644 (file)
@@ -732,13 +732,13 @@ int board_usb_cleanup(int index, enum usb_init_type init)
        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;
 }
index 284775ca9f34fd296c21659bf48f213f8132bccd..3089fa23342cb20c22f7bb033336ebbedfea3509 100644 (file)
@@ -220,13 +220,13 @@ int board_usb_cleanup(int index, enum usb_init_type init)
        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;
 }
index 161d38bf283d753d3b61efdfd86ca8450b4944ea..ec909981762185bb498c8b2330dda79d76666152 100644 (file)
@@ -64,7 +64,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                if (ctrlc())
                        goto exit;
 
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(controller_index);
        }
 exit:
        g_dnl_unregister();
index 346ab804541fd951316ca962ca3f5bb727f53244..30bfc9b709386ded6e2b549407cfbf1c2c82e26a 100644 (file)
@@ -31,7 +31,7 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
                        break;
                if (ctrlc())
                        break;
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
        }
 
        g_dnl_unregister();
index 51c3fffb46ce2914ecf14e44a65723e1cd487216..6cfee47a346b550e8496685aefbfa0a195cd66b4 100644 (file)
@@ -137,7 +137,7 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
        }
 
        while (1) {
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(controller_index);
 
                rc = fsg_main_thread(NULL);
                if (rc) {
index fbc74f3bed829a8bc2c8b6c88cf44306c415f5bc..1e23d09c77af9a02b8d57516d9f9689b44d46872 100644 (file)
@@ -1199,7 +1199,7 @@ static struct usba_udc controller = {
        },
 };
 
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
 {
        struct usba_udc *udc = &controller;
 
index a231abfa755577f92f9e665d49829478d807cada..3b7024c4986c63d5b116fa58f4761c6cbe1bdff3 100644 (file)
@@ -741,7 +741,7 @@ void udc_irq(void)
        }
 }
 
-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;
index 1b0e766a947ad5b330cf4b23c8147e24d7ea427e..7e3b3ed859560ecc27ec8a373431a400ce63eddf 100644 (file)
@@ -1907,7 +1907,7 @@ static int eth_stop(struct eth_dev *dev)
                /* 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);
@@ -2358,7 +2358,7 @@ static int usb_eth_init(struct eth_device *netdev, bd_t *bd)
                        error("The remote end did not respond in time.");
                        goto fail;
                }
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
        }
 
        packet_received = 0;
@@ -2426,7 +2426,7 @@ static int usb_eth_send(struct eth_device *netdev, void *packet, int length)
                        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);
@@ -2441,7 +2441,7 @@ static int usb_eth_recv(struct eth_device *netdev)
 {
        struct eth_dev *dev = &l_ethdev;
 
-       usb_gadget_handle_interrupts();
+       usb_gadget_handle_interrupts(0);
 
        if (packet_received) {
                debug("%s: packet received\n", __func__);
@@ -2486,7 +2486,7 @@ void usb_eth_halt(struct eth_device *netdev)
 
        /* Clear pending interrupt */
        if (dev->network_started) {
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
                dev->network_started = 0;
        }
 
index 71fd49db7f246df33a602f42cfcda0d50d74bcec..d1bc5efa9b39dfe48d03f7fe94d245f203d60caa 100644 (file)
@@ -689,7 +689,7 @@ static int sleep_thread(struct fsg_common *common)
                        k = 0;
                }
 
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
        }
        common->thread_wakeup_needed = 0;
        return rc;
index 2d0410d795677c3925f739811cc671efa633e37f..1fd41ff790dbdeab6ed69b76a8cc4cce51f310fa 100644 (file)
@@ -543,7 +543,7 @@ static int thor_rx_data(void)
                }
 
                while (!dev->rxdata) {
-                       usb_gadget_handle_interrupts();
+                       usb_gadget_handle_interrupts(0);
                        if (ctrlc())
                                return -1;
                }
@@ -577,7 +577,7 @@ static void thor_tx_data(unsigned char *data, int len)
 
        /* Wait until tx interrupt received */
        while (!dev->txdata)
-               usb_gadget_handle_interrupts();
+               usb_gadget_handle_interrupts(0);
 
        dev->txdata = 0;
 }
@@ -694,7 +694,7 @@ int thor_init(void)
        /* 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 */
index 3acf6a1f41dfd35897d84262871c71f5203e1de3..1d8f58fd7201ae18814b7bc8ab1a74e12a3827f1 100644 (file)
@@ -832,7 +832,7 @@ static struct fotg210_chip controller = {
        },
 };
 
-int usb_gadget_handle_interrupts(void)
+int usb_gadget_handle_interrupts(int index)
 {
        struct fotg210_chip *chip = &controller;
        struct fotg210_regs *regs = chip->regs;
index d4460b2dc715fe2ca197533aed285ee63fe35f0f..6a8949da34a8d0bf0a44ced0bcbe977faf15d554 100644 (file)
@@ -2041,7 +2041,7 @@ extern void udc_disconnect(void)
 /*-------------------------------------------------------------------------*/
 
 extern int
-usb_gadget_handle_interrupts(void)
+usb_gadget_handle_interrupts(int index)
 {
        return pxa25x_udc_irq();
 }
index 7653f03949a114c1d32274a6cd1ff41b32b48c93..7a2d1e7d8836244c0319dac7b2244f43c591b511 100644 (file)
@@ -833,7 +833,7 @@ int s3c_udc_probe(struct s3c_plat_otg_data *pdata)
        return retval;
 }
 
-int usb_gadget_handle_interrupts()
+int usb_gadget_handle_interrupts(int index)
 {
        u32 intr_status = readl(&reg->gintsts);
        u32 gintmsk = readl(&reg->gintmsk);
index 51fb3fd7e2ecd75f7a55d68ab688f8e0883c6a86..053d94560d4c443c5b68f515ddafa0afe614bba9 100644 (file)
@@ -252,7 +252,7 @@ int usb_lowlevel_stop(int index)
 #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)
index 93a5ffc4f4c9a20d72b1d5ca2b749f7b6ab15af2..230f47d67e2d580211901cbadd186e406ec86d5c 100644 (file)
@@ -937,6 +937,6 @@ extern struct usb_ep *usb_ep_autoconfig(struct usb_gadget *,
 
 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 */