mirror of
https://xff.cz/git/u-boot/
synced 2025-09-25 20:41:16 +02:00
usb: modify usb_gadget_handle_interrupts to take controller index
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>
This commit is contained in:
committed by
Marek Vasut
parent
a69e2c225d
commit
2d48aa69bd
@@ -732,13 +732,13 @@ int board_usb_cleanup(int index, enum usb_init_type init)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int usb_gadget_handle_interrupts(void)
|
int usb_gadget_handle_interrupts(int index)
|
||||||
{
|
{
|
||||||
u32 status;
|
u32 status;
|
||||||
|
|
||||||
status = dwc3_omap_uboot_interrupt_status(0);
|
status = dwc3_omap_uboot_interrupt_status(index);
|
||||||
if (status)
|
if (status)
|
||||||
dwc3_uboot_handle_interrupt(0);
|
dwc3_uboot_handle_interrupt(index);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -220,13 +220,13 @@ int board_usb_cleanup(int index, enum usb_init_type init)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int usb_gadget_handle_interrupts(void)
|
int usb_gadget_handle_interrupts(int index)
|
||||||
{
|
{
|
||||||
u32 status;
|
u32 status;
|
||||||
|
|
||||||
status = dwc3_omap_uboot_interrupt_status(0);
|
status = dwc3_omap_uboot_interrupt_status(index);
|
||||||
if (status)
|
if (status)
|
||||||
dwc3_uboot_handle_interrupt(0);
|
dwc3_uboot_handle_interrupt(index);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -64,7 +64,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||||||
if (ctrlc())
|
if (ctrlc())
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(controller_index);
|
||||||
}
|
}
|
||||||
exit:
|
exit:
|
||||||
g_dnl_unregister();
|
g_dnl_unregister();
|
||||||
|
@@ -31,7 +31,7 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
|||||||
break;
|
break;
|
||||||
if (ctrlc())
|
if (ctrlc())
|
||||||
break;
|
break;
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_dnl_unregister();
|
g_dnl_unregister();
|
||||||
|
@@ -137,7 +137,7 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(controller_index);
|
||||||
|
|
||||||
rc = fsg_main_thread(NULL);
|
rc = fsg_main_thread(NULL);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
|
@@ -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;
|
struct usba_udc *udc = &controller;
|
||||||
|
|
||||||
|
@@ -741,7 +741,7 @@ void udc_irq(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int usb_gadget_handle_interrupts(void)
|
int usb_gadget_handle_interrupts(int index)
|
||||||
{
|
{
|
||||||
u32 value;
|
u32 value;
|
||||||
struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
|
struct ci_udc *udc = (struct ci_udc *)controller.ctrl->hcor;
|
||||||
|
@@ -1907,7 +1907,7 @@ static int eth_stop(struct eth_dev *dev)
|
|||||||
/* Wait until host receives OID_GEN_MEDIA_CONNECT_STATUS */
|
/* Wait until host receives OID_GEN_MEDIA_CONNECT_STATUS */
|
||||||
ts = get_timer(0);
|
ts = get_timer(0);
|
||||||
while (get_timer(ts) < timeout)
|
while (get_timer(ts) < timeout)
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rndis_uninit(dev->rndis_config);
|
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.");
|
error("The remote end did not respond in time.");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
packet_received = 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");
|
printf("timeout sending packets to usb ethernet\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
}
|
}
|
||||||
if (rndis_pkt)
|
if (rndis_pkt)
|
||||||
free(rndis_pkt);
|
free(rndis_pkt);
|
||||||
@@ -2441,7 +2441,7 @@ static int usb_eth_recv(struct eth_device *netdev)
|
|||||||
{
|
{
|
||||||
struct eth_dev *dev = &l_ethdev;
|
struct eth_dev *dev = &l_ethdev;
|
||||||
|
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
|
|
||||||
if (packet_received) {
|
if (packet_received) {
|
||||||
debug("%s: packet received\n", __func__);
|
debug("%s: packet received\n", __func__);
|
||||||
@@ -2486,7 +2486,7 @@ void usb_eth_halt(struct eth_device *netdev)
|
|||||||
|
|
||||||
/* Clear pending interrupt */
|
/* Clear pending interrupt */
|
||||||
if (dev->network_started) {
|
if (dev->network_started) {
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
dev->network_started = 0;
|
dev->network_started = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -689,7 +689,7 @@ static int sleep_thread(struct fsg_common *common)
|
|||||||
k = 0;
|
k = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
}
|
}
|
||||||
common->thread_wakeup_needed = 0;
|
common->thread_wakeup_needed = 0;
|
||||||
return rc;
|
return rc;
|
||||||
|
@@ -543,7 +543,7 @@ static int thor_rx_data(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (!dev->rxdata) {
|
while (!dev->rxdata) {
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
if (ctrlc())
|
if (ctrlc())
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -577,7 +577,7 @@ static void thor_tx_data(unsigned char *data, int len)
|
|||||||
|
|
||||||
/* Wait until tx interrupt received */
|
/* Wait until tx interrupt received */
|
||||||
while (!dev->txdata)
|
while (!dev->txdata)
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
|
|
||||||
dev->txdata = 0;
|
dev->txdata = 0;
|
||||||
}
|
}
|
||||||
@@ -694,7 +694,7 @@ int thor_init(void)
|
|||||||
/* Wait for a device enumeration and configuration settings */
|
/* Wait for a device enumeration and configuration settings */
|
||||||
debug("THOR enumeration/configuration setting....\n");
|
debug("THOR enumeration/configuration setting....\n");
|
||||||
while (!dev->configuration_done)
|
while (!dev->configuration_done)
|
||||||
usb_gadget_handle_interrupts();
|
usb_gadget_handle_interrupts(0);
|
||||||
|
|
||||||
thor_set_dma(thor_rx_data_buf, strlen("THOR"));
|
thor_set_dma(thor_rx_data_buf, strlen("THOR"));
|
||||||
/* detect the download request from Host PC */
|
/* detect the download request from Host PC */
|
||||||
|
@@ -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_chip *chip = &controller;
|
||||||
struct fotg210_regs *regs = chip->regs;
|
struct fotg210_regs *regs = chip->regs;
|
||||||
|
@@ -2041,7 +2041,7 @@ extern void udc_disconnect(void)
|
|||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
usb_gadget_handle_interrupts(void)
|
usb_gadget_handle_interrupts(int index)
|
||||||
{
|
{
|
||||||
return pxa25x_udc_irq();
|
return pxa25x_udc_irq();
|
||||||
}
|
}
|
||||||
|
@@ -833,7 +833,7 @@ int s3c_udc_probe(struct s3c_plat_otg_data *pdata)
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
int usb_gadget_handle_interrupts()
|
int usb_gadget_handle_interrupts(int index)
|
||||||
{
|
{
|
||||||
u32 intr_status = readl(®->gintsts);
|
u32 intr_status = readl(®->gintsts);
|
||||||
u32 gintmsk = readl(®->gintmsk);
|
u32 gintmsk = readl(®->gintmsk);
|
||||||
|
@@ -252,7 +252,7 @@ int usb_lowlevel_stop(int index)
|
|||||||
#ifdef CONFIG_MUSB_GADGET
|
#ifdef CONFIG_MUSB_GADGET
|
||||||
static struct musb *gadget;
|
static struct musb *gadget;
|
||||||
|
|
||||||
int usb_gadget_handle_interrupts(void)
|
int usb_gadget_handle_interrupts(int index)
|
||||||
{
|
{
|
||||||
WATCHDOG_RESET();
|
WATCHDOG_RESET();
|
||||||
if (!gadget || !gadget->isr)
|
if (!gadget || !gadget->isr)
|
||||||
|
@@ -937,6 +937,6 @@ extern struct usb_ep *usb_ep_autoconfig(struct usb_gadget *,
|
|||||||
|
|
||||||
extern void usb_ep_autoconfig_reset(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 */
|
#endif /* __LINUX_USB_GADGET_H */
|
||||||
|
Reference in New Issue
Block a user