hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/usb/gadget/udc/snps_udc_core.c
....@@ -2,7 +2,7 @@
22 /*
33 * amd5536.c -- AMD 5536 UDC high/full speed USB device controller
44 *
5
- * Copyright (C) 2005-2007 AMD (http://www.amd.com)
5
+ * Copyright (C) 2005-2007 AMD (https://www.amd.com)
66 * Author: Thomas Dahlmann
77 */
88
....@@ -36,7 +36,6 @@
3636 #include <asm/unaligned.h>
3737 #include "amd5536udc.h"
3838
39
-static void udc_tasklet_disconnect(unsigned long);
4039 static void udc_setup_endpoints(struct udc *dev);
4140 static void udc_soft_reset(struct udc *dev);
4241 static struct udc_request *udc_alloc_bna_dummy(struct udc_ep *ep);
....@@ -94,11 +93,6 @@
9493 static struct timer_list udc_pollstall_timer;
9594 static int stop_pollstall_timer;
9695 static DECLARE_COMPLETION(on_pollstall_exit);
97
-
98
-/* tasklet for usb disconnect */
99
-static DECLARE_TASKLET(disconnect_tasklet, udc_tasklet_disconnect,
100
- (unsigned long) &udc);
101
-
10296
10397 /* endpoint names used for print */
10498 static const char ep0_string[] = "ep0in";
....@@ -947,15 +941,14 @@
947941 UDC_DMA_STP_STS_BS_HOST_READY,
948942 UDC_DMA_STP_STS_BS);
949943
950
-
951
- /* clear NAK by writing CNAK */
952
- if (ep->naking) {
953
- tmp = readl(&ep->regs->ctl);
954
- tmp |= AMD_BIT(UDC_EPCTL_CNAK);
955
- writel(tmp, &ep->regs->ctl);
956
- ep->naking = 0;
957
- UDC_QUEUE_CNAK(ep, ep->num);
958
- }
944
+ /* clear NAK by writing CNAK */
945
+ if (ep->naking) {
946
+ tmp = readl(&ep->regs->ctl);
947
+ tmp |= AMD_BIT(UDC_EPCTL_CNAK);
948
+ writel(tmp, &ep->regs->ctl);
949
+ ep->naking = 0;
950
+ UDC_QUEUE_CNAK(ep, ep->num);
951
+ }
959952
960953 }
961954
....@@ -1640,6 +1633,8 @@
16401633 */
16411634 static void usb_disconnect(struct udc *dev)
16421635 {
1636
+ u32 tmp;
1637
+
16431638 /* Return if already disconnected */
16441639 if (!dev->connected)
16451640 return;
....@@ -1651,23 +1646,6 @@
16511646 /* mask interrupts */
16521647 udc_mask_unused_interrupts(dev);
16531648
1654
- /* REVISIT there doesn't seem to be a point to having this
1655
- * talk to a tasklet ... do it directly, we already hold
1656
- * the spinlock needed to process the disconnect.
1657
- */
1658
-
1659
- tasklet_schedule(&disconnect_tasklet);
1660
-}
1661
-
1662
-/* Tasklet for disconnect to be outside of interrupt context */
1663
-static void udc_tasklet_disconnect(unsigned long par)
1664
-{
1665
- struct udc *dev = (struct udc *)(*((struct udc **) par));
1666
- u32 tmp;
1667
-
1668
- DBG(dev, "Tasklet disconnect\n");
1669
- spin_lock_irq(&dev->lock);
1670
-
16711649 if (dev->driver) {
16721650 spin_unlock(&dev->lock);
16731651 dev->driver->disconnect(&dev->gadget);
....@@ -1676,13 +1654,10 @@
16761654 /* empty queues */
16771655 for (tmp = 0; tmp < UDC_EP_NUM; tmp++)
16781656 empty_req_queue(&dev->ep[tmp]);
1679
-
16801657 }
16811658
16821659 /* disable ep0 */
1683
- ep_init(dev->regs,
1684
- &dev->ep[UDC_EP0IN_IX]);
1685
-
1660
+ ep_init(dev->regs, &dev->ep[UDC_EP0IN_IX]);
16861661
16871662 if (!soft_reset_occured) {
16881663 /* init controller by soft reset */
....@@ -1698,8 +1673,6 @@
16981673 tmp = AMD_ADDBITS(tmp, UDC_DEVCFG_SPD_FS, UDC_DEVCFG_SPD);
16991674 writel(tmp, &dev->regs->cfg);
17001675 }
1701
-
1702
- spin_unlock_irq(&dev->lock);
17031676 }
17041677
17051678 /* Reset the UDC core */