Message ID | 1423212497-11970-41-git-send-email-kishon@ti.com |
---|---|
State | Accepted |
Delegated to: | Łukasz Majewski |
Headers | show |
Hi Kishon, > 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> > --- > board/ti/am43xx/board.c | 6 +++--- > board/ti/dra7xx/evm.c | 6 +++--- > common/cmd_dfu.c | 2 +- > common/cmd_fastboot.c | 2 +- > common/cmd_usb_mass_storage.c | 2 +- > drivers/usb/gadget/atmel_usba_udc.c | 2 +- > drivers/usb/gadget/ci_udc.c | 2 +- > drivers/usb/gadget/ether.c | 10 +++++----- > drivers/usb/gadget/f_mass_storage.c | 2 +- > drivers/usb/gadget/f_thor.c | 6 +++--- > drivers/usb/gadget/fotg210.c | 2 +- > drivers/usb/gadget/pxa25x_udc.c | 2 +- > drivers/usb/gadget/s3c_udc_otg.c | 2 +- > drivers/usb/musb-new/musb_uboot.c | 2 +- > include/linux/usb/gadget.h | 2 +- > 15 files changed, 25 insertions(+), 25 deletions(-) > > diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c > index a8796b1..096e5db 100644 > --- a/board/ti/am43xx/board.c > +++ b/board/ti/am43xx/board.c > @@ -782,13 +782,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; > } > diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c > index 284775c..3089fa2 100644 > --- a/board/ti/dra7xx/evm.c > +++ b/board/ti/dra7xx/evm.c > @@ -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; > } > diff --git a/common/cmd_dfu.c b/common/cmd_dfu.c > index 161d38b..ec90998 100644 > --- a/common/cmd_dfu.c > +++ b/common/cmd_dfu.c > @@ -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(); > diff --git a/common/cmd_fastboot.c b/common/cmd_fastboot.c > index b72f4f3..8281f8e 100644 > --- a/common/cmd_fastboot.c > +++ b/common/cmd_fastboot.c > @@ -25,7 +25,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(); > diff --git a/common/cmd_usb_mass_storage.c > b/common/cmd_usb_mass_storage.c index 2c879ea..c5f909d 100644 > --- a/common/cmd_usb_mass_storage.c > +++ b/common/cmd_usb_mass_storage.c > @@ -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) { > diff --git a/drivers/usb/gadget/atmel_usba_udc.c > b/drivers/usb/gadget/atmel_usba_udc.c index fbc74f3..1e23d09 100644 > --- a/drivers/usb/gadget/atmel_usba_udc.c > +++ b/drivers/usb/gadget/atmel_usba_udc.c > @@ -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; > > diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c > index b0ef35e..a7dc0b2 100644 > --- a/drivers/usb/gadget/ci_udc.c > +++ b/drivers/usb/gadget/ci_udc.c > @@ -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; > diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c > index 8ccf9b0..ba79faf 100644 > --- a/drivers/usb/gadget/ether.c > +++ b/drivers/usb/gadget/ether.c > @@ -1908,7 +1908,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); > @@ -2359,7 +2359,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; > @@ -2427,7 +2427,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); > @@ -2442,7 +2442,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__); > @@ -2487,7 +2487,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; > } > > diff --git a/drivers/usb/gadget/f_mass_storage.c > b/drivers/usb/gadget/f_mass_storage.c index e045957..4fab35e 100644 > --- a/drivers/usb/gadget/f_mass_storage.c > +++ b/drivers/usb/gadget/f_mass_storage.c > @@ -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; > diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c > index 2d0410d..1fd41ff 100644 > --- a/drivers/usb/gadget/f_thor.c > +++ b/drivers/usb/gadget/f_thor.c > @@ -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 */ > diff --git a/drivers/usb/gadget/fotg210.c > b/drivers/usb/gadget/fotg210.c index 3acf6a1..1d8f58f 100644 > --- a/drivers/usb/gadget/fotg210.c > +++ b/drivers/usb/gadget/fotg210.c > @@ -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; > diff --git a/drivers/usb/gadget/pxa25x_udc.c > b/drivers/usb/gadget/pxa25x_udc.c index 8945c5b..1910227 100644 > --- a/drivers/usb/gadget/pxa25x_udc.c > +++ b/drivers/usb/gadget/pxa25x_udc.c > @@ -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(); > } > diff --git a/drivers/usb/gadget/s3c_udc_otg.c > b/drivers/usb/gadget/s3c_udc_otg.c index 7653f03..7a2d1e7 100644 > --- a/drivers/usb/gadget/s3c_udc_otg.c > +++ b/drivers/usb/gadget/s3c_udc_otg.c > @@ -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(®->gintsts); > u32 gintmsk = readl(®->gintmsk); > diff --git a/drivers/usb/musb-new/musb_uboot.c > b/drivers/usb/musb-new/musb_uboot.c index 2676f09..79f29fb 100644 > --- a/drivers/usb/musb-new/musb_uboot.c > +++ b/drivers/usb/musb-new/musb_uboot.c > @@ -162,7 +162,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) > diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h > index 93a5ffc..230f47d 100644 > --- a/include/linux/usb/gadget.h > +++ b/include/linux/usb/gadget.h > @@ -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 */ Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c index a8796b1..096e5db 100644 --- a/board/ti/am43xx/board.c +++ b/board/ti/am43xx/board.c @@ -782,13 +782,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; } diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c index 284775c..3089fa2 100644 --- a/board/ti/dra7xx/evm.c +++ b/board/ti/dra7xx/evm.c @@ -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; } diff --git a/common/cmd_dfu.c b/common/cmd_dfu.c index 161d38b..ec90998 100644 --- a/common/cmd_dfu.c +++ b/common/cmd_dfu.c @@ -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(); diff --git a/common/cmd_fastboot.c b/common/cmd_fastboot.c index b72f4f3..8281f8e 100644 --- a/common/cmd_fastboot.c +++ b/common/cmd_fastboot.c @@ -25,7 +25,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(); diff --git a/common/cmd_usb_mass_storage.c b/common/cmd_usb_mass_storage.c index 2c879ea..c5f909d 100644 --- a/common/cmd_usb_mass_storage.c +++ b/common/cmd_usb_mass_storage.c @@ -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) { diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c index fbc74f3..1e23d09 100644 --- a/drivers/usb/gadget/atmel_usba_udc.c +++ b/drivers/usb/gadget/atmel_usba_udc.c @@ -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; diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c index b0ef35e..a7dc0b2 100644 --- a/drivers/usb/gadget/ci_udc.c +++ b/drivers/usb/gadget/ci_udc.c @@ -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; diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c index 8ccf9b0..ba79faf 100644 --- a/drivers/usb/gadget/ether.c +++ b/drivers/usb/gadget/ether.c @@ -1908,7 +1908,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); @@ -2359,7 +2359,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; @@ -2427,7 +2427,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); @@ -2442,7 +2442,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__); @@ -2487,7 +2487,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; } diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c index e045957..4fab35e 100644 --- a/drivers/usb/gadget/f_mass_storage.c +++ b/drivers/usb/gadget/f_mass_storage.c @@ -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; diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c index 2d0410d..1fd41ff 100644 --- a/drivers/usb/gadget/f_thor.c +++ b/drivers/usb/gadget/f_thor.c @@ -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 */ diff --git a/drivers/usb/gadget/fotg210.c b/drivers/usb/gadget/fotg210.c index 3acf6a1..1d8f58f 100644 --- a/drivers/usb/gadget/fotg210.c +++ b/drivers/usb/gadget/fotg210.c @@ -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; diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c index 8945c5b..1910227 100644 --- a/drivers/usb/gadget/pxa25x_udc.c +++ b/drivers/usb/gadget/pxa25x_udc.c @@ -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(); } diff --git a/drivers/usb/gadget/s3c_udc_otg.c b/drivers/usb/gadget/s3c_udc_otg.c index 7653f03..7a2d1e7 100644 --- a/drivers/usb/gadget/s3c_udc_otg.c +++ b/drivers/usb/gadget/s3c_udc_otg.c @@ -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(®->gintsts); u32 gintmsk = readl(®->gintmsk); diff --git a/drivers/usb/musb-new/musb_uboot.c b/drivers/usb/musb-new/musb_uboot.c index 2676f09..79f29fb 100644 --- a/drivers/usb/musb-new/musb_uboot.c +++ b/drivers/usb/musb-new/musb_uboot.c @@ -162,7 +162,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) diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 93a5ffc..230f47d 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -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 */
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> --- board/ti/am43xx/board.c | 6 +++--- board/ti/dra7xx/evm.c | 6 +++--- common/cmd_dfu.c | 2 +- common/cmd_fastboot.c | 2 +- common/cmd_usb_mass_storage.c | 2 +- drivers/usb/gadget/atmel_usba_udc.c | 2 +- drivers/usb/gadget/ci_udc.c | 2 +- drivers/usb/gadget/ether.c | 10 +++++----- drivers/usb/gadget/f_mass_storage.c | 2 +- drivers/usb/gadget/f_thor.c | 6 +++--- drivers/usb/gadget/fotg210.c | 2 +- drivers/usb/gadget/pxa25x_udc.c | 2 +- drivers/usb/gadget/s3c_udc_otg.c | 2 +- drivers/usb/musb-new/musb_uboot.c | 2 +- include/linux/usb/gadget.h | 2 +- 15 files changed, 25 insertions(+), 25 deletions(-)