Lines Matching refs:dev

296 	struct pch_udc_dev		*dev;  member
423 static inline u32 pch_udc_readl(struct pch_udc_dev *dev, unsigned long reg) in pch_udc_readl() argument
425 return ioread32(dev->base_addr + reg); in pch_udc_readl()
428 static inline void pch_udc_writel(struct pch_udc_dev *dev, in pch_udc_writel() argument
431 iowrite32(val, dev->base_addr + reg); in pch_udc_writel()
434 static inline void pch_udc_bit_set(struct pch_udc_dev *dev, in pch_udc_bit_set() argument
438 pch_udc_writel(dev, pch_udc_readl(dev, reg) | bitmask, reg); in pch_udc_bit_set()
441 static inline void pch_udc_bit_clr(struct pch_udc_dev *dev, in pch_udc_bit_clr() argument
445 pch_udc_writel(dev, pch_udc_readl(dev, reg) & ~(bitmask), reg); in pch_udc_bit_clr()
450 return ioread32(ep->dev->base_addr + ep->offset_addr + reg); in pch_udc_ep_readl()
456 iowrite32(val, ep->dev->base_addr + ep->offset_addr + reg); in pch_udc_ep_writel()
477 static void pch_udc_csr_busy(struct pch_udc_dev *dev) in pch_udc_csr_busy() argument
482 while ((pch_udc_readl(dev, UDC_CSR_BUSY_ADDR) & UDC_CSR_BUSY) in pch_udc_csr_busy()
486 dev_err(&dev->pdev->dev, "%s: wait error\n", __func__); in pch_udc_csr_busy()
495 static void pch_udc_write_csr(struct pch_udc_dev *dev, unsigned long val, in pch_udc_write_csr() argument
500 pch_udc_csr_busy(dev); /* Wait till idle */ in pch_udc_write_csr()
501 pch_udc_writel(dev, val, reg); in pch_udc_write_csr()
502 pch_udc_csr_busy(dev); /* Wait till idle */ in pch_udc_write_csr()
512 static u32 pch_udc_read_csr(struct pch_udc_dev *dev, unsigned int ep) in pch_udc_read_csr() argument
516 pch_udc_csr_busy(dev); /* Wait till idle */ in pch_udc_read_csr()
517 pch_udc_readl(dev, reg); /* Dummy read */ in pch_udc_read_csr()
518 pch_udc_csr_busy(dev); /* Wait till idle */ in pch_udc_read_csr()
519 return pch_udc_readl(dev, reg); in pch_udc_read_csr()
526 static inline void pch_udc_rmt_wakeup(struct pch_udc_dev *dev) in pch_udc_rmt_wakeup() argument
528 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); in pch_udc_rmt_wakeup()
530 pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); in pch_udc_rmt_wakeup()
538 static inline int pch_udc_get_frame(struct pch_udc_dev *dev) in pch_udc_get_frame() argument
540 u32 frame = pch_udc_readl(dev, UDC_DEVSTS_ADDR); in pch_udc_get_frame()
548 static inline void pch_udc_clear_selfpowered(struct pch_udc_dev *dev) in pch_udc_clear_selfpowered() argument
550 pch_udc_bit_clr(dev, UDC_DEVCFG_ADDR, UDC_DEVCFG_SP); in pch_udc_clear_selfpowered()
557 static inline void pch_udc_set_selfpowered(struct pch_udc_dev *dev) in pch_udc_set_selfpowered() argument
559 pch_udc_bit_set(dev, UDC_DEVCFG_ADDR, UDC_DEVCFG_SP); in pch_udc_set_selfpowered()
566 static inline void pch_udc_set_disconnect(struct pch_udc_dev *dev) in pch_udc_set_disconnect() argument
568 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_SD); in pch_udc_set_disconnect()
575 static void pch_udc_clear_disconnect(struct pch_udc_dev *dev) in pch_udc_clear_disconnect() argument
578 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); in pch_udc_clear_disconnect()
579 pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_SD); in pch_udc_clear_disconnect()
582 pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); in pch_udc_clear_disconnect()
590 static void pch_udc_init(struct pch_udc_dev *dev);
591 static void pch_udc_reconnect(struct pch_udc_dev *dev) in pch_udc_reconnect() argument
593 pch_udc_init(dev); in pch_udc_reconnect()
597 pch_udc_bit_clr(dev, UDC_DEVIRQMSK_ADDR, in pch_udc_reconnect()
601 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); in pch_udc_reconnect()
602 pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_SD); in pch_udc_reconnect()
605 pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RES); in pch_udc_reconnect()
615 static inline void pch_udc_vbus_session(struct pch_udc_dev *dev, in pch_udc_vbus_session() argument
619 pch_udc_reconnect(dev); in pch_udc_vbus_session()
620 dev->vbus_session = 1; in pch_udc_vbus_session()
622 if (dev->driver && dev->driver->disconnect) { in pch_udc_vbus_session()
623 spin_lock(&dev->lock); in pch_udc_vbus_session()
624 dev->driver->disconnect(&dev->gadget); in pch_udc_vbus_session()
625 spin_unlock(&dev->lock); in pch_udc_vbus_session()
627 pch_udc_set_disconnect(dev); in pch_udc_vbus_session()
628 dev->vbus_session = 0; in pch_udc_vbus_session()
757 static inline void pch_udc_set_dma(struct pch_udc_dev *dev, int dir) in pch_udc_set_dma() argument
760 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RDE); in pch_udc_set_dma()
762 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_TDE); in pch_udc_set_dma()
773 static inline void pch_udc_clear_dma(struct pch_udc_dev *dev, int dir) in pch_udc_clear_dma() argument
776 pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_RDE); in pch_udc_clear_dma()
778 pch_udc_bit_clr(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_TDE); in pch_udc_clear_dma()
786 static inline void pch_udc_set_csr_done(struct pch_udc_dev *dev) in pch_udc_set_csr_done() argument
788 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, UDC_DEVCTL_CSR_DONE); in pch_udc_set_csr_done()
796 static inline void pch_udc_disable_interrupts(struct pch_udc_dev *dev, in pch_udc_disable_interrupts() argument
799 pch_udc_bit_set(dev, UDC_DEVIRQMSK_ADDR, mask); in pch_udc_disable_interrupts()
807 static inline void pch_udc_enable_interrupts(struct pch_udc_dev *dev, in pch_udc_enable_interrupts() argument
810 pch_udc_bit_clr(dev, UDC_DEVIRQMSK_ADDR, mask); in pch_udc_enable_interrupts()
818 static inline void pch_udc_disable_ep_interrupts(struct pch_udc_dev *dev, in pch_udc_disable_ep_interrupts() argument
821 pch_udc_bit_set(dev, UDC_EPIRQMSK_ADDR, mask); in pch_udc_disable_ep_interrupts()
829 static inline void pch_udc_enable_ep_interrupts(struct pch_udc_dev *dev, in pch_udc_enable_ep_interrupts() argument
832 pch_udc_bit_clr(dev, UDC_EPIRQMSK_ADDR, mask); in pch_udc_enable_ep_interrupts()
840 static inline u32 pch_udc_read_device_interrupts(struct pch_udc_dev *dev) in pch_udc_read_device_interrupts() argument
842 return pch_udc_readl(dev, UDC_DEVIRQSTS_ADDR); in pch_udc_read_device_interrupts()
850 static inline void pch_udc_write_device_interrupts(struct pch_udc_dev *dev, in pch_udc_write_device_interrupts() argument
853 pch_udc_writel(dev, val, UDC_DEVIRQSTS_ADDR); in pch_udc_write_device_interrupts()
861 static inline u32 pch_udc_read_ep_interrupts(struct pch_udc_dev *dev) in pch_udc_read_ep_interrupts() argument
863 return pch_udc_readl(dev, UDC_EPIRQSTS_ADDR); in pch_udc_read_ep_interrupts()
871 static inline void pch_udc_write_ep_interrupts(struct pch_udc_dev *dev, in pch_udc_write_ep_interrupts() argument
874 pch_udc_writel(dev, val, UDC_EPIRQSTS_ADDR); in pch_udc_write_ep_interrupts()
882 static inline u32 pch_udc_read_device_status(struct pch_udc_dev *dev) in pch_udc_read_device_status() argument
884 return pch_udc_readl(dev, UDC_DEVSTS_ADDR); in pch_udc_read_device_status()
946 struct pch_udc_dev *dev = ep->dev; in pch_udc_ep_clear_nak() local
956 dev_err(&dev->pdev->dev, "%s: RxFIFO not Empty\n", in pch_udc_ep_clear_nak()
965 dev_err(&dev->pdev->dev, "%s: Clear NAK not set for ep%d%s\n", in pch_udc_ep_clear_nak()
1015 pch_udc_write_csr(ep->dev, val, UDC_EPIN_IDX(ep->num)); in pch_udc_ep_enable()
1017 pch_udc_write_csr(ep->dev, val, UDC_EPOUT_IDX(ep->num)); in pch_udc_ep_enable()
1052 dev_err(&ep->dev->pdev->dev, "%s: wait error\n", __func__); in pch_udc_wait_ep_stall()
1059 static void pch_udc_init(struct pch_udc_dev *dev) in pch_udc_init() argument
1061 if (NULL == dev) { in pch_udc_init()
1066 pch_udc_writel(dev, UDC_SRST, UDC_SRST_ADDR); in pch_udc_init()
1067 pch_udc_writel(dev, UDC_SRST | UDC_PSRST, UDC_SRST_ADDR); in pch_udc_init()
1069 pch_udc_writel(dev, UDC_SRST, UDC_SRST_ADDR); in pch_udc_init()
1070 pch_udc_writel(dev, 0x00, UDC_SRST_ADDR); in pch_udc_init()
1073 pch_udc_bit_set(dev, UDC_DEVIRQMSK_ADDR, UDC_DEVINT_MSK); in pch_udc_init()
1074 pch_udc_bit_set(dev, UDC_DEVIRQSTS_ADDR, UDC_DEVINT_MSK); in pch_udc_init()
1077 pch_udc_bit_set(dev, UDC_EPIRQMSK_ADDR, UDC_EPINT_MSK_DISABLE_ALL); in pch_udc_init()
1078 pch_udc_bit_set(dev, UDC_EPIRQSTS_ADDR, UDC_EPINT_MSK_DISABLE_ALL); in pch_udc_init()
1082 pch_udc_bit_set(dev, UDC_DEVCFG_ADDR, UDC_DEVCFG_CSR_PRG | in pch_udc_init()
1085 pch_udc_bit_set(dev, UDC_DEVCFG_ADDR, UDC_DEVCFG_CSR_PRG | in pch_udc_init()
1087 pch_udc_bit_set(dev, UDC_DEVCTL_ADDR, in pch_udc_init()
1098 static void pch_udc_exit(struct pch_udc_dev *dev) in pch_udc_exit() argument
1101 pch_udc_bit_set(dev, UDC_DEVIRQMSK_ADDR, UDC_DEVINT_MSK); in pch_udc_exit()
1103 pch_udc_bit_set(dev, UDC_EPIRQMSK_ADDR, UDC_EPINT_MSK_DISABLE_ALL); in pch_udc_exit()
1105 pch_udc_set_disconnect(dev); in pch_udc_exit()
1118 struct pch_udc_dev *dev; in pch_udc_pcd_get_frame() local
1122 dev = container_of(gadget, struct pch_udc_dev, gadget); in pch_udc_pcd_get_frame()
1123 return pch_udc_get_frame(dev); in pch_udc_pcd_get_frame()
1136 struct pch_udc_dev *dev; in pch_udc_pcd_wakeup() local
1141 dev = container_of(gadget, struct pch_udc_dev, gadget); in pch_udc_pcd_wakeup()
1142 spin_lock_irqsave(&dev->lock, flags); in pch_udc_pcd_wakeup()
1143 pch_udc_rmt_wakeup(dev); in pch_udc_pcd_wakeup()
1144 spin_unlock_irqrestore(&dev->lock, flags); in pch_udc_pcd_wakeup()
1160 struct pch_udc_dev *dev; in pch_udc_pcd_selfpowered() local
1165 dev = container_of(gadget, struct pch_udc_dev, gadget); in pch_udc_pcd_selfpowered()
1167 pch_udc_set_selfpowered(dev); in pch_udc_pcd_selfpowered()
1169 pch_udc_clear_selfpowered(dev); in pch_udc_pcd_selfpowered()
1185 struct pch_udc_dev *dev; in pch_udc_pcd_pullup() local
1189 dev = container_of(gadget, struct pch_udc_dev, gadget); in pch_udc_pcd_pullup()
1191 pch_udc_reconnect(dev); in pch_udc_pcd_pullup()
1193 if (dev->driver && dev->driver->disconnect) { in pch_udc_pcd_pullup()
1194 spin_lock(&dev->lock); in pch_udc_pcd_pullup()
1195 dev->driver->disconnect(&dev->gadget); in pch_udc_pcd_pullup()
1196 spin_unlock(&dev->lock); in pch_udc_pcd_pullup()
1198 pch_udc_set_disconnect(dev); in pch_udc_pcd_pullup()
1217 struct pch_udc_dev *dev; in pch_udc_pcd_vbus_session() local
1221 dev = container_of(gadget, struct pch_udc_dev, gadget); in pch_udc_pcd_vbus_session()
1222 pch_udc_vbus_session(dev, is_active); in pch_udc_pcd_vbus_session()
1266 static int pch_vbus_gpio_get_value(struct pch_udc_dev *dev) in pch_vbus_gpio_get_value() argument
1270 if (dev->vbus_gpio.port) in pch_vbus_gpio_get_value()
1271 vbus = gpio_get_value(dev->vbus_gpio.port) ? 1 : 0; in pch_vbus_gpio_get_value()
1288 struct pch_udc_dev *dev = in pch_vbus_gpio_work_fall() local
1294 if (!dev->vbus_gpio.port) in pch_vbus_gpio_work_fall()
1299 vbus = pch_vbus_gpio_get_value(dev); in pch_vbus_gpio_work_fall()
1302 dev_dbg(&dev->pdev->dev, "VBUS fell"); in pch_vbus_gpio_work_fall()
1303 if (dev->driver in pch_vbus_gpio_work_fall()
1304 && dev->driver->disconnect) { in pch_vbus_gpio_work_fall()
1305 dev->driver->disconnect( in pch_vbus_gpio_work_fall()
1306 &dev->gadget); in pch_vbus_gpio_work_fall()
1308 if (dev->vbus_gpio.intr) in pch_vbus_gpio_work_fall()
1309 pch_udc_init(dev); in pch_vbus_gpio_work_fall()
1311 pch_udc_reconnect(dev); in pch_vbus_gpio_work_fall()
1329 struct pch_udc_dev *dev = in pch_vbus_gpio_work_rise() local
1333 if (!dev->vbus_gpio.port) in pch_vbus_gpio_work_rise()
1337 vbus = pch_vbus_gpio_get_value(dev); in pch_vbus_gpio_work_rise()
1340 dev_dbg(&dev->pdev->dev, "VBUS rose"); in pch_vbus_gpio_work_rise()
1341 pch_udc_reconnect(dev); in pch_vbus_gpio_work_rise()
1357 struct pch_udc_dev *dev = (struct pch_udc_dev *)data; in pch_vbus_gpio_irq() local
1359 if (!dev->vbus_gpio.port || !dev->vbus_gpio.intr) in pch_vbus_gpio_irq()
1362 if (pch_vbus_gpio_get_value(dev)) in pch_vbus_gpio_irq()
1363 schedule_work(&dev->vbus_gpio.irq_work_rise); in pch_vbus_gpio_irq()
1365 schedule_work(&dev->vbus_gpio.irq_work_fall); in pch_vbus_gpio_irq()
1379 static int pch_vbus_gpio_init(struct pch_udc_dev *dev, int vbus_gpio_port) in pch_vbus_gpio_init() argument
1384 dev->vbus_gpio.port = 0; in pch_vbus_gpio_init()
1385 dev->vbus_gpio.intr = 0; in pch_vbus_gpio_init()
1404 dev->vbus_gpio.port = vbus_gpio_port; in pch_vbus_gpio_init()
1406 INIT_WORK(&dev->vbus_gpio.irq_work_fall, pch_vbus_gpio_work_fall); in pch_vbus_gpio_init()
1412 "vbus_detect", dev); in pch_vbus_gpio_init()
1414 dev->vbus_gpio.intr = irq_num; in pch_vbus_gpio_init()
1415 INIT_WORK(&dev->vbus_gpio.irq_work_rise, in pch_vbus_gpio_init()
1430 static void pch_vbus_gpio_free(struct pch_udc_dev *dev) in pch_vbus_gpio_free() argument
1432 if (dev->vbus_gpio.intr) in pch_vbus_gpio_free()
1433 free_irq(dev->vbus_gpio.intr, dev); in pch_vbus_gpio_free()
1435 if (dev->vbus_gpio.port) in pch_vbus_gpio_free()
1436 gpio_free(dev->vbus_gpio.port); in pch_vbus_gpio_free()
1448 __releases(&dev->lock) in complete_req()
1449 __acquires(&dev->lock) in complete_req()
1451 struct pch_udc_dev *dev; in complete_req() local
1462 dev = ep->dev; in complete_req()
1466 dma_unmap_single(&dev->pdev->dev, req->req.dma, in complete_req()
1470 dma_unmap_single(&dev->pdev->dev, req->req.dma, in complete_req()
1476 dma_unmap_single(&dev->pdev->dev, req->dma, in complete_req()
1480 dma_unmap_single(&dev->pdev->dev, req->dma, in complete_req()
1491 spin_lock(&dev->lock); in complete_req()
1495 spin_unlock(&dev->lock); in complete_req()
1523 static void pch_udc_free_dma_chain(struct pch_udc_dev *dev, in pch_udc_free_dma_chain() argument
1536 pci_pool_free(dev->data_requests, td, addr); in pch_udc_free_dma_chain()
1566 pch_udc_free_dma_chain(ep->dev, req); in pch_udc_create_dma_chain()
1579 td = pci_pool_alloc(ep->dev->data_requests, gfp_flags, in pch_udc_create_dma_chain()
1597 pch_udc_free_dma_chain(ep->dev, req); in pch_udc_create_dma_chain()
1639 struct pch_udc_dev *dev = ep->dev; in process_zlp() local
1647 if (dev->set_cfg_not_acked) { in process_zlp()
1648 pch_udc_set_csr_done(dev); in process_zlp()
1649 dev->set_cfg_not_acked = 0; in process_zlp()
1652 if (!dev->stall && dev->waiting_zlp_ack) { in process_zlp()
1653 pch_udc_ep_clear_nak(&(dev->ep[UDC_EP0IN_IDX])); in process_zlp()
1654 dev->waiting_zlp_ack = 0; in process_zlp()
1668 pch_udc_clear_dma(ep->dev, DMA_DIR_RX); in pch_udc_start_rxrequest()
1681 pch_udc_enable_ep_interrupts(ep->dev, UDC_EPINT_OUT_EP0 << ep->num); in pch_udc_start_rxrequest()
1682 pch_udc_set_dma(ep->dev, DMA_DIR_RX); in pch_udc_start_rxrequest()
1702 struct pch_udc_dev *dev; in pch_udc_pcd_ep_enable() local
1710 dev = ep->dev; in pch_udc_pcd_ep_enable()
1711 if (!dev->driver || (dev->gadget.speed == USB_SPEED_UNKNOWN)) in pch_udc_pcd_ep_enable()
1713 spin_lock_irqsave(&dev->lock, iflags); in pch_udc_pcd_ep_enable()
1716 pch_udc_ep_enable(ep, &ep->dev->cfg_data, desc); in pch_udc_pcd_ep_enable()
1718 pch_udc_enable_ep_interrupts(ep->dev, PCH_UDC_EPINT(ep->in, ep->num)); in pch_udc_pcd_ep_enable()
1719 spin_unlock_irqrestore(&dev->lock, iflags); in pch_udc_pcd_ep_enable()
1735 struct pch_udc_dev *dev; in pch_udc_pcd_ep_disable() local
1742 dev = ep->dev; in pch_udc_pcd_ep_disable()
1746 spin_lock_irqsave(&ep->dev->lock, iflags); in pch_udc_pcd_ep_disable()
1750 pch_udc_disable_ep_interrupts(ep->dev, PCH_UDC_EPINT(ep->in, ep->num)); in pch_udc_pcd_ep_disable()
1753 spin_unlock_irqrestore(&ep->dev->lock, iflags); in pch_udc_pcd_ep_disable()
1773 struct pch_udc_dev *dev; in pch_udc_alloc_request() local
1778 dev = ep->dev; in pch_udc_alloc_request()
1785 if (!ep->dev->dma_addr) in pch_udc_alloc_request()
1788 dma_desc = pci_pool_alloc(ep->dev->data_requests, gfp, in pch_udc_alloc_request()
1814 struct pch_udc_dev *dev; in pch_udc_free_request() local
1820 dev = ep->dev; in pch_udc_free_request()
1822 dev_err(&dev->pdev->dev, "%s: %s req=0x%p queue not empty\n", in pch_udc_free_request()
1826 pch_udc_free_dma_chain(ep->dev, req); in pch_udc_free_request()
1827 pci_pool_free(ep->dev->data_requests, req->td_data, in pch_udc_free_request()
1849 struct pch_udc_dev *dev; in pch_udc_pcd_queue() local
1856 dev = ep->dev; in pch_udc_pcd_queue()
1862 if (!dev->driver || (dev->gadget.speed == USB_SPEED_UNKNOWN)) in pch_udc_pcd_queue()
1864 spin_lock_irqsave(&dev->lock, iflags); in pch_udc_pcd_queue()
1870 usbreq->dma = dma_map_single(&dev->pdev->dev, in pch_udc_pcd_queue()
1875 usbreq->dma = dma_map_single(&dev->pdev->dev, in pch_udc_pcd_queue()
1887 req->dma = dma_map_single(&dev->pdev->dev, in pch_udc_pcd_queue()
1892 req->dma = dma_map_single(&dev->pdev->dev, in pch_udc_pcd_queue()
1924 pch_udc_enable_ep_interrupts(ep->dev, (1 << ep->num)); in pch_udc_pcd_queue()
1932 spin_unlock_irqrestore(&dev->lock, iflags); in pch_udc_pcd_queue()
1951 struct pch_udc_dev *dev; in pch_udc_pcd_dequeue() local
1956 dev = ep->dev; in pch_udc_pcd_dequeue()
1960 spin_lock_irqsave(&ep->dev->lock, flags); in pch_udc_pcd_dequeue()
1971 spin_unlock_irqrestore(&ep->dev->lock, flags); in pch_udc_pcd_dequeue()
1988 struct pch_udc_dev *dev; in pch_udc_pcd_set_halt() local
1995 dev = ep->dev; in pch_udc_pcd_set_halt()
1998 if (!ep->dev->driver || (ep->dev->gadget.speed == USB_SPEED_UNKNOWN)) in pch_udc_pcd_set_halt()
2004 ep->dev->stall = 1; in pch_udc_pcd_set_halt()
2006 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_pcd_set_halt()
2033 struct pch_udc_dev *dev; in pch_udc_pcd_set_wedge() local
2040 dev = ep->dev; in pch_udc_pcd_set_wedge()
2043 if (!ep->dev->driver || (ep->dev->gadget.speed == USB_SPEED_UNKNOWN)) in pch_udc_pcd_set_wedge()
2050 ep->dev->stall = 1; in pch_udc_pcd_set_wedge()
2052 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_pcd_set_wedge()
2054 ep->dev->prot_stall = 1; in pch_udc_pcd_set_wedge()
2139 pch_udc_set_dma(ep->dev, DMA_DIR_TX); in pch_udc_start_next_txrequest()
2141 pch_udc_enable_ep_interrupts(ep->dev, PCH_UDC_EPINT(ep->in, ep->num)); in pch_udc_start_next_txrequest()
2152 struct pch_udc_dev *dev = ep->dev; in pch_udc_complete_transfer() local
2162 dev_err(&dev->pdev->dev, "Invalid RXTX status (0x%08x) " in pch_udc_complete_transfer()
2177 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_complete_transfer()
2180 pch_udc_disable_ep_interrupts(ep->dev, in pch_udc_complete_transfer()
2192 struct pch_udc_dev *dev = ep->dev; in pch_udc_complete_receiver() local
2201 pch_udc_clear_dma(ep->dev, DMA_DIR_RX); in pch_udc_complete_receiver()
2211 dev_err(&dev->pdev->dev, "Invalid RXTX status=0x%08x " in pch_udc_complete_receiver()
2223 dev_err(&dev->pdev->dev, "Not complete RX descriptor"); in pch_udc_complete_receiver()
2251 static void pch_udc_svc_data_in(struct pch_udc_dev *dev, int ep_num) in pch_udc_svc_data_in() argument
2256 ep = &dev->ep[UDC_EPIN_IDX(ep_num)]; in pch_udc_svc_data_in()
2270 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_svc_data_in()
2274 if (!dev->prot_stall) { in pch_udc_svc_data_in()
2278 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_svc_data_in()
2295 static void pch_udc_svc_data_out(struct pch_udc_dev *dev, int ep_num) in pch_udc_svc_data_out() argument
2301 ep = &dev->ep[UDC_EPOUT_IDX(ep_num)]; in pch_udc_svc_data_out()
2320 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_svc_data_out()
2324 if (!dev->prot_stall) { in pch_udc_svc_data_out()
2328 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_svc_data_out()
2334 if (ep->dev->prot_stall == 1) { in pch_udc_svc_data_out()
2336 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_svc_data_out()
2343 pch_udc_set_dma(dev, DMA_DIR_RX); in pch_udc_svc_data_out()
2350 static void pch_udc_svc_control_in(struct pch_udc_dev *dev) in pch_udc_svc_control_in() argument
2356 ep = &dev->ep[UDC_EP0IN_IDX]; in pch_udc_svc_control_in()
2357 ep_out = &dev->ep[UDC_EP0OUT_IDX]; in pch_udc_svc_control_in()
2369 if ((epsts & UDC_EPSTS_TDC) && (!dev->stall)) { in pch_udc_svc_control_in()
2371 pch_udc_clear_dma(dev, DMA_DIR_RX); in pch_udc_svc_control_in()
2376 pch_udc_set_dma(dev, DMA_DIR_RX); in pch_udc_svc_control_in()
2390 static void pch_udc_svc_control_out(struct pch_udc_dev *dev) in pch_udc_svc_control_out() argument
2391 __releases(&dev->lock) in pch_udc_svc_control_out()
2392 __acquires(&dev->lock) in pch_udc_svc_control_out()
2398 ep = &dev->ep[UDC_EP0OUT_IDX]; in pch_udc_svc_control_out()
2405 dev->stall = 0; in pch_udc_svc_control_out()
2406 dev->ep[UDC_EP0IN_IDX].halted = 0; in pch_udc_svc_control_out()
2407 dev->ep[UDC_EP0OUT_IDX].halted = 0; in pch_udc_svc_control_out()
2408 dev->setup_data = ep->td_stp->request; in pch_udc_svc_control_out()
2410 pch_udc_clear_dma(dev, DMA_DIR_RX); in pch_udc_svc_control_out()
2411 pch_udc_ep_fifo_flush(&(dev->ep[UDC_EP0IN_IDX]), in pch_udc_svc_control_out()
2412 dev->ep[UDC_EP0IN_IDX].in); in pch_udc_svc_control_out()
2413 if ((dev->setup_data.bRequestType & USB_DIR_IN)) in pch_udc_svc_control_out()
2414 dev->gadget.ep0 = &dev->ep[UDC_EP0IN_IDX].ep; in pch_udc_svc_control_out()
2416 dev->gadget.ep0 = &ep->ep; in pch_udc_svc_control_out()
2417 spin_lock(&dev->lock); in pch_udc_svc_control_out()
2419 if ((dev->setup_data.bRequestType == 0x21) && in pch_udc_svc_control_out()
2420 (dev->setup_data.bRequest == 0xFF)) in pch_udc_svc_control_out()
2421 dev->prot_stall = 0; in pch_udc_svc_control_out()
2423 setup_supported = dev->driver->setup(&dev->gadget, in pch_udc_svc_control_out()
2424 &dev->setup_data); in pch_udc_svc_control_out()
2425 spin_unlock(&dev->lock); in pch_udc_svc_control_out()
2427 if (dev->setup_data.bRequestType & USB_DIR_IN) { in pch_udc_svc_control_out()
2436 pch_udc_ep_clear_nak(&(dev->ep[UDC_EP0IN_IDX])); in pch_udc_svc_control_out()
2439 if (!(dev->setup_data.bRequestType & USB_DIR_IN)) { in pch_udc_svc_control_out()
2440 pch_udc_set_dma(dev, DMA_DIR_RX); in pch_udc_svc_control_out()
2445 pch_udc_ep_set_stall(&(dev->ep[UDC_EP0IN_IDX])); in pch_udc_svc_control_out()
2446 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_svc_control_out()
2448 dev->stall = 0; in pch_udc_svc_control_out()
2449 pch_udc_set_dma(dev, DMA_DIR_RX); in pch_udc_svc_control_out()
2451 dev->waiting_zlp_ack = 1; in pch_udc_svc_control_out()
2454 UDC_EPSTS_OUT_DATA) && !dev->stall) { in pch_udc_svc_control_out()
2455 pch_udc_clear_dma(dev, DMA_DIR_RX); in pch_udc_svc_control_out()
2459 pch_udc_svc_data_out(dev, PCH_UDC_EP0); in pch_udc_svc_control_out()
2461 pch_udc_set_dma(dev, DMA_DIR_RX); in pch_udc_svc_control_out()
2473 static void pch_udc_postsvc_epinters(struct pch_udc_dev *dev, int ep_num) in pch_udc_postsvc_epinters() argument
2478 ep = &dev->ep[UDC_EPIN_IDX(ep_num)]; in pch_udc_postsvc_epinters()
2481 pch_udc_enable_ep_interrupts(ep->dev, in pch_udc_postsvc_epinters()
2492 static void pch_udc_read_all_epstatus(struct pch_udc_dev *dev, u32 ep_intr) in pch_udc_read_all_epstatus() argument
2500 ep = &dev->ep[UDC_EPIN_IDX(i)]; in pch_udc_read_all_epstatus()
2506 ep = &dev->ep[UDC_EPOUT_IDX(i)]; in pch_udc_read_all_epstatus()
2518 static void pch_udc_activate_control_ep(struct pch_udc_dev *dev) in pch_udc_activate_control_ep() argument
2524 ep = &dev->ep[UDC_EP0IN_IDX]; in pch_udc_activate_control_ep()
2536 ep = &dev->ep[UDC_EP0OUT_IDX]; in pch_udc_activate_control_ep()
2542 pch_udc_write_csr(ep->dev, val, UDC_EP0OUT_IDX); in pch_udc_activate_control_ep()
2553 ep->td_data->dataptr = dev->dma_addr; in pch_udc_activate_control_ep()
2564 static void pch_udc_svc_ur_interrupt(struct pch_udc_dev *dev) in pch_udc_svc_ur_interrupt() argument
2569 pch_udc_clear_dma(dev, DMA_DIR_TX); in pch_udc_svc_ur_interrupt()
2570 pch_udc_clear_dma(dev, DMA_DIR_RX); in pch_udc_svc_ur_interrupt()
2572 pch_udc_disable_ep_interrupts(dev, UDC_EPINT_MSK_DISABLE_ALL); in pch_udc_svc_ur_interrupt()
2574 pch_udc_write_ep_interrupts(dev, UDC_EPINT_MSK_DISABLE_ALL); in pch_udc_svc_ur_interrupt()
2577 ep = &dev->ep[i]; in pch_udc_svc_ur_interrupt()
2581 pch_udc_write_csr(ep->dev, 0x00, i); in pch_udc_svc_ur_interrupt()
2583 dev->stall = 0; in pch_udc_svc_ur_interrupt()
2584 dev->prot_stall = 0; in pch_udc_svc_ur_interrupt()
2585 dev->waiting_zlp_ack = 0; in pch_udc_svc_ur_interrupt()
2586 dev->set_cfg_not_acked = 0; in pch_udc_svc_ur_interrupt()
2590 ep = &dev->ep[i]; in pch_udc_svc_ur_interrupt()
2596 if (dev->driver) { in pch_udc_svc_ur_interrupt()
2597 spin_lock(&dev->lock); in pch_udc_svc_ur_interrupt()
2598 usb_gadget_udc_reset(&dev->gadget, dev->driver); in pch_udc_svc_ur_interrupt()
2599 spin_unlock(&dev->lock); in pch_udc_svc_ur_interrupt()
2608 static void pch_udc_svc_enum_interrupt(struct pch_udc_dev *dev) in pch_udc_svc_enum_interrupt() argument
2613 dev_stat = pch_udc_read_device_status(dev); in pch_udc_svc_enum_interrupt()
2629 dev->gadget.speed = speed; in pch_udc_svc_enum_interrupt()
2630 pch_udc_activate_control_ep(dev); in pch_udc_svc_enum_interrupt()
2631 pch_udc_enable_ep_interrupts(dev, UDC_EPINT_IN_EP0 | UDC_EPINT_OUT_EP0); in pch_udc_svc_enum_interrupt()
2632 pch_udc_set_dma(dev, DMA_DIR_TX); in pch_udc_svc_enum_interrupt()
2633 pch_udc_set_dma(dev, DMA_DIR_RX); in pch_udc_svc_enum_interrupt()
2634 pch_udc_ep_set_rrdy(&(dev->ep[UDC_EP0OUT_IDX])); in pch_udc_svc_enum_interrupt()
2637 pch_udc_enable_interrupts(dev, UDC_DEVINT_UR | UDC_DEVINT_US | in pch_udc_svc_enum_interrupt()
2647 static void pch_udc_svc_intf_interrupt(struct pch_udc_dev *dev) in pch_udc_svc_intf_interrupt() argument
2652 dev_stat = pch_udc_read_device_status(dev); in pch_udc_svc_intf_interrupt()
2653 dev->cfg_data.cur_intf = (dev_stat & UDC_DEVSTS_INTF_MASK) >> in pch_udc_svc_intf_interrupt()
2655 dev->cfg_data.cur_alt = (dev_stat & UDC_DEVSTS_ALT_MASK) >> in pch_udc_svc_intf_interrupt()
2657 dev->set_cfg_not_acked = 1; in pch_udc_svc_intf_interrupt()
2659 memset(&dev->setup_data, 0 , sizeof dev->setup_data); in pch_udc_svc_intf_interrupt()
2660 dev->setup_data.bRequest = USB_REQ_SET_INTERFACE; in pch_udc_svc_intf_interrupt()
2661 dev->setup_data.bRequestType = USB_RECIP_INTERFACE; in pch_udc_svc_intf_interrupt()
2662 dev->setup_data.wValue = cpu_to_le16(dev->cfg_data.cur_alt); in pch_udc_svc_intf_interrupt()
2663 dev->setup_data.wIndex = cpu_to_le16(dev->cfg_data.cur_intf); in pch_udc_svc_intf_interrupt()
2666 reg = pch_udc_read_csr(dev, UDC_EP0OUT_IDX); in pch_udc_svc_intf_interrupt()
2668 (dev->cfg_data.cur_intf << UDC_CSR_NE_INTF_SHIFT); in pch_udc_svc_intf_interrupt()
2670 (dev->cfg_data.cur_alt << UDC_CSR_NE_ALT_SHIFT); in pch_udc_svc_intf_interrupt()
2671 pch_udc_write_csr(dev, reg, UDC_EP0OUT_IDX); in pch_udc_svc_intf_interrupt()
2674 pch_udc_ep_clear_stall(&(dev->ep[i])); in pch_udc_svc_intf_interrupt()
2675 dev->ep[i].halted = 0; in pch_udc_svc_intf_interrupt()
2677 dev->stall = 0; in pch_udc_svc_intf_interrupt()
2678 spin_lock(&dev->lock); in pch_udc_svc_intf_interrupt()
2679 ret = dev->driver->setup(&dev->gadget, &dev->setup_data); in pch_udc_svc_intf_interrupt()
2680 spin_unlock(&dev->lock); in pch_udc_svc_intf_interrupt()
2688 static void pch_udc_svc_cfg_interrupt(struct pch_udc_dev *dev) in pch_udc_svc_cfg_interrupt() argument
2693 dev_stat = pch_udc_read_device_status(dev); in pch_udc_svc_cfg_interrupt()
2694 dev->set_cfg_not_acked = 1; in pch_udc_svc_cfg_interrupt()
2695 dev->cfg_data.cur_cfg = (dev_stat & UDC_DEVSTS_CFG_MASK) >> in pch_udc_svc_cfg_interrupt()
2698 memset(&dev->setup_data, 0 , sizeof dev->setup_data); in pch_udc_svc_cfg_interrupt()
2699 dev->setup_data.bRequest = USB_REQ_SET_CONFIGURATION; in pch_udc_svc_cfg_interrupt()
2700 dev->setup_data.wValue = cpu_to_le16(dev->cfg_data.cur_cfg); in pch_udc_svc_cfg_interrupt()
2703 reg = pch_udc_read_csr(dev, UDC_EP0OUT_IDX); in pch_udc_svc_cfg_interrupt()
2705 (dev->cfg_data.cur_cfg << UDC_CSR_NE_CFG_SHIFT); in pch_udc_svc_cfg_interrupt()
2706 pch_udc_write_csr(dev, reg, UDC_EP0OUT_IDX); in pch_udc_svc_cfg_interrupt()
2709 pch_udc_ep_clear_stall(&(dev->ep[i])); in pch_udc_svc_cfg_interrupt()
2710 dev->ep[i].halted = 0; in pch_udc_svc_cfg_interrupt()
2712 dev->stall = 0; in pch_udc_svc_cfg_interrupt()
2715 spin_lock(&dev->lock); in pch_udc_svc_cfg_interrupt()
2716 ret = dev->driver->setup(&dev->gadget, &dev->setup_data); in pch_udc_svc_cfg_interrupt()
2717 spin_unlock(&dev->lock); in pch_udc_svc_cfg_interrupt()
2726 static void pch_udc_dev_isr(struct pch_udc_dev *dev, u32 dev_intr) in pch_udc_dev_isr() argument
2732 pch_udc_svc_ur_interrupt(dev); in pch_udc_dev_isr()
2733 dev_dbg(&dev->pdev->dev, "USB_RESET\n"); in pch_udc_dev_isr()
2737 pch_udc_svc_enum_interrupt(dev); in pch_udc_dev_isr()
2738 dev_dbg(&dev->pdev->dev, "USB_ENUM\n"); in pch_udc_dev_isr()
2742 pch_udc_svc_intf_interrupt(dev); in pch_udc_dev_isr()
2745 pch_udc_svc_cfg_interrupt(dev); in pch_udc_dev_isr()
2748 if (dev->driver in pch_udc_dev_isr()
2749 && dev->driver->suspend) { in pch_udc_dev_isr()
2750 spin_unlock(&dev->lock); in pch_udc_dev_isr()
2751 dev->driver->suspend(&dev->gadget); in pch_udc_dev_isr()
2752 spin_lock(&dev->lock); in pch_udc_dev_isr()
2755 vbus = pch_vbus_gpio_get_value(dev); in pch_udc_dev_isr()
2756 if ((dev->vbus_session == 0) in pch_udc_dev_isr()
2758 if (dev->driver && dev->driver->disconnect) { in pch_udc_dev_isr()
2759 spin_unlock(&dev->lock); in pch_udc_dev_isr()
2760 dev->driver->disconnect(&dev->gadget); in pch_udc_dev_isr()
2761 spin_lock(&dev->lock); in pch_udc_dev_isr()
2763 pch_udc_reconnect(dev); in pch_udc_dev_isr()
2764 } else if ((dev->vbus_session == 0) in pch_udc_dev_isr()
2766 && !dev->vbus_gpio.intr) in pch_udc_dev_isr()
2767 schedule_work(&dev->vbus_gpio.irq_work_fall); in pch_udc_dev_isr()
2769 dev_dbg(&dev->pdev->dev, "USB_SUSPEND\n"); in pch_udc_dev_isr()
2773 dev_dbg(&dev->pdev->dev, "SOF\n"); in pch_udc_dev_isr()
2776 dev_dbg(&dev->pdev->dev, "ES\n"); in pch_udc_dev_isr()
2779 dev_dbg(&dev->pdev->dev, "RWKP\n"); in pch_udc_dev_isr()
2789 struct pch_udc_dev *dev = (struct pch_udc_dev *) pdev; in pch_udc_isr() local
2793 dev_intr = pch_udc_read_device_interrupts(dev); in pch_udc_isr()
2794 ep_intr = pch_udc_read_ep_interrupts(dev); in pch_udc_isr()
2798 if (dev_intr == pch_udc_readl(dev, UDC_DEVCFG_ADDR)) { in pch_udc_isr()
2799 dev_dbg(&dev->pdev->dev, "UDC: Hung up\n"); in pch_udc_isr()
2801 pch_udc_writel(dev, UDC_SRST, UDC_SRST_ADDR); in pch_udc_isr()
2806 pch_udc_write_device_interrupts(dev, dev_intr); in pch_udc_isr()
2809 pch_udc_write_ep_interrupts(dev, ep_intr); in pch_udc_isr()
2812 spin_lock(&dev->lock); in pch_udc_isr()
2814 pch_udc_dev_isr(dev, dev_intr); in pch_udc_isr()
2816 pch_udc_read_all_epstatus(dev, ep_intr); in pch_udc_isr()
2819 pch_udc_svc_control_in(dev); in pch_udc_isr()
2820 pch_udc_postsvc_epinters(dev, 0); in pch_udc_isr()
2824 pch_udc_svc_control_out(dev); in pch_udc_isr()
2828 pch_udc_svc_data_in(dev, i); in pch_udc_isr()
2829 pch_udc_postsvc_epinters(dev, i); in pch_udc_isr()
2836 pch_udc_svc_data_out(dev, i - in pch_udc_isr()
2839 spin_unlock(&dev->lock); in pch_udc_isr()
2847 static void pch_udc_setup_ep0(struct pch_udc_dev *dev) in pch_udc_setup_ep0() argument
2850 pch_udc_enable_ep_interrupts(dev, UDC_EPINT_IN_EP0 | in pch_udc_setup_ep0()
2853 pch_udc_enable_interrupts(dev, UDC_DEVINT_UR | UDC_DEVINT_US | in pch_udc_setup_ep0()
2864 struct pch_udc_dev *dev = dev_get_drvdata(pdev); in gadget_release() local
2866 kfree(dev); in gadget_release()
2873 static void pch_udc_pcd_reinit(struct pch_udc_dev *dev) in pch_udc_pcd_reinit() argument
2885 dev->gadget.speed = USB_SPEED_UNKNOWN; in pch_udc_pcd_reinit()
2886 INIT_LIST_HEAD(&dev->gadget.ep_list); in pch_udc_pcd_reinit()
2889 memset(dev->ep, 0, sizeof dev->ep); in pch_udc_pcd_reinit()
2891 struct pch_udc_ep *ep = &dev->ep[i]; in pch_udc_pcd_reinit()
2892 ep->dev = dev; in pch_udc_pcd_reinit()
2915 list_add_tail(&ep->ep.ep_list, &dev->gadget.ep_list); in pch_udc_pcd_reinit()
2918 usb_ep_set_maxpacket_limit(&dev->ep[UDC_EP0IN_IDX].ep, UDC_EP0IN_MAX_PKT_SIZE); in pch_udc_pcd_reinit()
2919 usb_ep_set_maxpacket_limit(&dev->ep[UDC_EP0OUT_IDX].ep, UDC_EP0OUT_MAX_PKT_SIZE); in pch_udc_pcd_reinit()
2922 list_del_init(&dev->ep[UDC_EP0IN_IDX].ep.ep_list); in pch_udc_pcd_reinit()
2923 list_del_init(&dev->ep[UDC_EP0OUT_IDX].ep.ep_list); in pch_udc_pcd_reinit()
2925 dev->gadget.ep0 = &dev->ep[UDC_EP0IN_IDX].ep; in pch_udc_pcd_reinit()
2926 INIT_LIST_HEAD(&dev->gadget.ep0->ep_list); in pch_udc_pcd_reinit()
2936 static int pch_udc_pcd_init(struct pch_udc_dev *dev) in pch_udc_pcd_init() argument
2938 pch_udc_init(dev); in pch_udc_pcd_init()
2939 pch_udc_pcd_reinit(dev); in pch_udc_pcd_init()
2940 pch_vbus_gpio_init(dev, vbus_gpio_port); in pch_udc_pcd_init()
2948 static int init_dma_pools(struct pch_udc_dev *dev) in init_dma_pools() argument
2954 dev->data_requests = pci_pool_create("data_requests", dev->pdev, in init_dma_pools()
2956 if (!dev->data_requests) { in init_dma_pools()
2957 dev_err(&dev->pdev->dev, "%s: can't get request data pool\n", in init_dma_pools()
2963 dev->stp_requests = pci_pool_create("setup requests", dev->pdev, in init_dma_pools()
2965 if (!dev->stp_requests) { in init_dma_pools()
2966 dev_err(&dev->pdev->dev, "%s: can't get setup request pool\n", in init_dma_pools()
2971 td_stp = pci_pool_alloc(dev->stp_requests, GFP_KERNEL, in init_dma_pools()
2972 &dev->ep[UDC_EP0OUT_IDX].td_stp_phys); in init_dma_pools()
2974 dev_err(&dev->pdev->dev, in init_dma_pools()
2978 dev->ep[UDC_EP0OUT_IDX].td_stp = td_stp; in init_dma_pools()
2981 td_data = pci_pool_alloc(dev->data_requests, GFP_KERNEL, in init_dma_pools()
2982 &dev->ep[UDC_EP0OUT_IDX].td_data_phys); in init_dma_pools()
2984 dev_err(&dev->pdev->dev, in init_dma_pools()
2988 dev->ep[UDC_EP0OUT_IDX].td_data = td_data; in init_dma_pools()
2989 dev->ep[UDC_EP0IN_IDX].td_stp = NULL; in init_dma_pools()
2990 dev->ep[UDC_EP0IN_IDX].td_stp_phys = 0; in init_dma_pools()
2991 dev->ep[UDC_EP0IN_IDX].td_data = NULL; in init_dma_pools()
2992 dev->ep[UDC_EP0IN_IDX].td_data_phys = 0; in init_dma_pools()
2994 dev->ep0out_buf = kzalloc(UDC_EP0OUT_BUFF_SIZE * 4, GFP_KERNEL); in init_dma_pools()
2995 if (!dev->ep0out_buf) in init_dma_pools()
2997 dev->dma_addr = dma_map_single(&dev->pdev->dev, dev->ep0out_buf, in init_dma_pools()
3006 struct pch_udc_dev *dev = to_pch_udc(g); in pch_udc_start() local
3009 dev->driver = driver; in pch_udc_start()
3012 pch_udc_setup_ep0(dev); in pch_udc_start()
3015 if ((pch_vbus_gpio_get_value(dev) != 0) || !dev->vbus_gpio.intr) in pch_udc_start()
3016 pch_udc_clear_disconnect(dev); in pch_udc_start()
3018 dev->connected = 1; in pch_udc_start()
3024 struct pch_udc_dev *dev = to_pch_udc(g); in pch_udc_stop() local
3026 pch_udc_disable_interrupts(dev, UDC_DEVINT_MSK); in pch_udc_stop()
3029 dev->driver = NULL; in pch_udc_stop()
3030 dev->connected = 0; in pch_udc_stop()
3033 pch_udc_set_disconnect(dev); in pch_udc_stop()
3040 struct pch_udc_dev *dev = pci_get_drvdata(pdev); in pch_udc_shutdown() local
3042 pch_udc_disable_interrupts(dev, UDC_DEVINT_MSK); in pch_udc_shutdown()
3043 pch_udc_disable_ep_interrupts(dev, UDC_EPINT_MSK_DISABLE_ALL); in pch_udc_shutdown()
3046 pch_udc_set_disconnect(dev); in pch_udc_shutdown()
3051 struct pch_udc_dev *dev = pci_get_drvdata(pdev); in pch_udc_remove() local
3053 usb_del_gadget_udc(&dev->gadget); in pch_udc_remove()
3056 if (dev->driver) in pch_udc_remove()
3057 dev_err(&pdev->dev, in pch_udc_remove()
3060 if (dev->data_requests) in pch_udc_remove()
3061 pci_pool_destroy(dev->data_requests); in pch_udc_remove()
3063 if (dev->stp_requests) { in pch_udc_remove()
3065 if (dev->ep[UDC_EP0OUT_IDX].td_stp) { in pch_udc_remove()
3066 pci_pool_free(dev->stp_requests, in pch_udc_remove()
3067 dev->ep[UDC_EP0OUT_IDX].td_stp, in pch_udc_remove()
3068 dev->ep[UDC_EP0OUT_IDX].td_stp_phys); in pch_udc_remove()
3070 if (dev->ep[UDC_EP0OUT_IDX].td_data) { in pch_udc_remove()
3071 pci_pool_free(dev->stp_requests, in pch_udc_remove()
3072 dev->ep[UDC_EP0OUT_IDX].td_data, in pch_udc_remove()
3073 dev->ep[UDC_EP0OUT_IDX].td_data_phys); in pch_udc_remove()
3075 pci_pool_destroy(dev->stp_requests); in pch_udc_remove()
3078 if (dev->dma_addr) in pch_udc_remove()
3079 dma_unmap_single(&dev->pdev->dev, dev->dma_addr, in pch_udc_remove()
3081 kfree(dev->ep0out_buf); in pch_udc_remove()
3083 pch_vbus_gpio_free(dev); in pch_udc_remove()
3085 pch_udc_exit(dev); in pch_udc_remove()
3087 if (dev->irq_registered) in pch_udc_remove()
3088 free_irq(pdev->irq, dev); in pch_udc_remove()
3089 if (dev->base_addr) in pch_udc_remove()
3090 iounmap(dev->base_addr); in pch_udc_remove()
3091 if (dev->mem_region) in pch_udc_remove()
3092 release_mem_region(dev->phys_addr, in pch_udc_remove()
3093 pci_resource_len(pdev, dev->bar)); in pch_udc_remove()
3094 if (dev->active) in pch_udc_remove()
3096 kfree(dev); in pch_udc_remove()
3102 struct pch_udc_dev *dev = pci_get_drvdata(pdev); in pch_udc_suspend() local
3104 pch_udc_disable_interrupts(dev, UDC_DEVINT_MSK); in pch_udc_suspend()
3105 pch_udc_disable_ep_interrupts(dev, UDC_EPINT_MSK_DISABLE_ALL); in pch_udc_suspend()
3111 dev_err(&pdev->dev, in pch_udc_suspend()
3127 dev_err(&pdev->dev, "%s: pci_enable_device failed\n", __func__); in pch_udc_resume()
3144 struct pch_udc_dev *dev; in pch_udc_probe() local
3147 dev = kzalloc(sizeof *dev, GFP_KERNEL); in pch_udc_probe()
3148 if (!dev) { in pch_udc_probe()
3154 kfree(dev); in pch_udc_probe()
3158 dev->active = 1; in pch_udc_probe()
3159 pci_set_drvdata(pdev, dev); in pch_udc_probe()
3163 dev->bar = PCH_UDC_PCI_BAR_QUARK_X1000; in pch_udc_probe()
3165 dev->bar = PCH_UDC_PCI_BAR; in pch_udc_probe()
3168 resource = pci_resource_start(pdev, dev->bar); in pch_udc_probe()
3169 len = pci_resource_len(pdev, dev->bar); in pch_udc_probe()
3172 dev_err(&pdev->dev, "%s: pci device used already\n", __func__); in pch_udc_probe()
3176 dev->phys_addr = resource; in pch_udc_probe()
3177 dev->mem_region = 1; in pch_udc_probe()
3179 dev->base_addr = ioremap_nocache(resource, len); in pch_udc_probe()
3180 if (!dev->base_addr) { in pch_udc_probe()
3186 dev_err(&pdev->dev, "%s: irq not set\n", __func__); in pch_udc_probe()
3191 if (pch_udc_pcd_init(dev)) { in pch_udc_probe()
3196 dev)) { in pch_udc_probe()
3197 dev_err(&pdev->dev, "%s: request_irq(%d) fail\n", __func__, in pch_udc_probe()
3202 dev->irq = pdev->irq; in pch_udc_probe()
3203 dev->irq_registered = 1; in pch_udc_probe()
3209 spin_lock_init(&dev->lock); in pch_udc_probe()
3210 dev->pdev = pdev; in pch_udc_probe()
3211 dev->gadget.ops = &pch_udc_ops; in pch_udc_probe()
3213 retval = init_dma_pools(dev); in pch_udc_probe()
3217 dev->gadget.name = KBUILD_MODNAME; in pch_udc_probe()
3218 dev->gadget.max_speed = USB_SPEED_HIGH; in pch_udc_probe()
3221 pch_udc_set_disconnect(dev); in pch_udc_probe()
3222 retval = usb_add_gadget_udc_release(&pdev->dev, &dev->gadget, in pch_udc_probe()