• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/usb/gadget/

Lines Matching refs:udc

85 	struct qe_udc *udc = ep->udc;
101 dma_unmap_single(udc->gadget.dev.parent,
109 dma_sync_single_for_cpu(udc->gadget.dev.parent,
116 dev_vdbg(udc->dev, "complete %s req %p stat %d len %u/%u\n",
122 spin_unlock(&udc->lock);
129 spin_lock(&udc->lock);
156 struct qe_udc *udc = ep->udc;
158 tem_usep = in_be16(&udc->usb_regs->usb_usep[epnum]);
165 out_be16(&udc->usb_regs->usb_usep[epnum], tem_usep);
173 struct qe_udc *udc = ep->udc;
175 tem_usep = in_be16(&udc->usb_regs->usb_usep[epnum]);
182 out_be16(&udc->usb_regs->usb_usep[epnum], tem_usep);
187 static int qe_ep0_stall(struct qe_udc *udc)
189 qe_eptx_stall_change(&udc->eps[0], 1);
190 qe_eprx_stall_change(&udc->eps[0], 1);
199 struct qe_udc *udc = ep->udc;
203 clrsetbits_be16(&udc->usb_regs->usb_usep[epnum],
207 clrbits16(&udc->usb_regs->usb_usbmr,
217 struct qe_udc *udc = ep->udc;
220 clrsetbits_be16(&udc->usb_regs->usb_usep[ep->epnum],
224 out_be16(&udc->usb_regs->usb_usber,
226 setbits16(&udc->usb_regs->usb_usbmr,
238 if (ep->udc->soc_type == PORT_CPM)
250 if (ep->udc->soc_type == PORT_CPM)
262 struct qe_udc *udc = ep->udc;
268 out_8(&udc->usb_regs->usb_uscom,
270 out_be16(&udc->ep_param[i]->tbptr, in_be16(&udc->ep_param[i]->tbase));
271 out_be32(&udc->ep_param[i]->tstate, 0);
272 out_be16(&udc->ep_param[i]->tbcnt, 0);
282 struct qe_udc *udc = ep->udc;
284 out_8(&udc->usb_regs->usb_uscom,
289 static int qe_epbds_reset(struct qe_udc *udc, int pipe_num)
296 ep = &udc->eps[pipe_num];
321 static int qe_ep_reset(struct qe_udc *udc, int pipe_num)
326 ep = &udc->eps[pipe_num];
327 tmpusep = in_be16(&udc->usb_regs->usb_usep[pipe_num]);
344 out_be16(&udc->usb_regs->usb_usep[pipe_num], tmpusep);
346 qe_epbds_reset(udc, pipe_num);
357 static int qe_ep_bd_init(struct qe_udc *udc, unsigned char pipe_num)
359 struct qe_ep *ep = &udc->eps[pipe_num];
371 epparam = udc->ep_param[pipe_num];
431 dev_err(ep->udc->dev, "malloc rxframe failed\n");
445 dev_err(ep->udc->dev, "malloc rxbuffer failed,size=%d\n",
481 static int qe_ep_register_init(struct qe_udc *udc, unsigned char pipe_num)
483 struct qe_ep *ep = &udc->eps[pipe_num];
489 epparam = udc->ep_param[pipe_num];
520 out_be16(&udc->usb_regs->usb_usep[pipe_num], usep);
534 static int qe_ep_init(struct qe_udc *udc,
538 struct qe_ep *ep = &udc->eps[pipe_num];
554 switch (udc->gadget.speed) {
575 switch (udc->gadget.speed) {
592 switch (udc->gadget.speed) {
607 switch (udc->gadget.speed) {
642 spin_lock_irqsave(&udc->lock, flags);
653 udc->ep0_dir = USB_DIR_OUT;
654 udc->ep0_state = WAIT_FOR_SETUP;
668 qe_ep_bd_init(udc, pipe_num);
678 dev_err(udc->dev, "malloc txframe failed\n");
684 qe_ep_register_init(udc, pipe_num);
688 spin_unlock_irqrestore(&udc->lock, flags);
695 spin_unlock_irqrestore(&udc->lock, flags);
697 dev_err(udc->dev, "failed to initialize %s\n", ep->ep.name);
765 struct qe_udc *udc = ep->udc;
770 ((in_be16(&udc->ep_param[epnum]->rbptr) -
771 in_be16(&udc->ep_param[epnum]->rbase))
786 if (in_be16(&udc->usb_regs->usb_usber) & USB_E_BSY_MASK)
787 out_be16(&udc->usb_regs->usb_usber, USB_E_BSY_MASK);
795 static void setup_received_handle(struct qe_udc *udc,
798 static void ep0_req_complete(struct qe_udc *udc, struct qe_req *req);
800 static int ep0_setup_handle(struct qe_udc *udc)
802 struct qe_ep *ep = &udc->eps[0];
809 && (udc->ep0_state == WAIT_FOR_SETUP)) {
813 cp = (u8 *)&udc->local_setup_buff;
818 setup_received_handle(udc, &udc->local_setup_buff);
824 static int qe_ep0_rx(struct qe_udc *udc)
826 struct qe_ep *ep = &udc->eps[0];
835 dev_err(udc->dev, "ep0 not a control endpoint\n");
847 udc->ep0_state = WAIT_FOR_SETUP;
848 dev_vdbg(udc->dev,
870 ep0_setup_handle(udc);
875 dev_err(udc->dev, "The receive frame with error!\n");
911 dev_err(ep->udc->dev, "the data01 error!\n");
917 dev_err(ep->udc->dev, "the %s have no requeue!\n", ep->name);
928 ep0_req_complete(ep->udc, req);
944 struct qe_udc *udc = (struct qe_udc *)data;
952 spin_lock_irqsave(&udc->lock, flags);
955 ep = &udc->eps[i];
958 dev_dbg(udc->dev,
971 dev_dbg(udc->dev,
999 dev_err(udc->dev,
1027 spin_unlock_irqrestore(&udc->lock, flags);
1032 struct qe_udc *udc;
1037 udc = ep->udc;
1041 dev_err(udc->dev, "transmit ep in rx function\n");
1048 ucoffs = (u16)((in_be16(&udc->ep_param[ep->epnum]->rbptr) -
1049 in_be16(&udc->ep_param[ep->epnum]->rbase)) >> 3);
1058 dev_vdbg(udc->dev, "%d empty bds, send NACK\n", emptybds);
1064 dev_vdbg(udc->dev, "The rxep have no req queued with %d BDs\n",
1069 tasklet_schedule(&udc->rx_tasklet);
1078 struct qe_udc *udc = ep->udc;
1085 dev_err(udc->dev, "receive ep passed to tx function\n");
1090 saveusbmr = in_be16(&udc->usb_regs->usb_usbmr);
1091 out_be16(&udc->usb_regs->usb_usbmr,
1099 frame_set_data(frame, udc->nullbuf);
1102 dev_vdbg(udc->dev, "the frame size = 0\n");
1114 if ((ep->epnum == 0) && (udc->ep0_state == DATA_STATE_NEED_ZLP))
1130 out_be16(&udc->usb_regs->usb_usbmr, saveusbmr);
1140 out_be16(&udc->usb_regs->usb_usbmr, saveusbmr);
1141 dev_vdbg(udc->dev, "The tx bd is not ready!\n");
1206 struct qe_udc *udc = ep->udc;
1212 frame_set_data(frame, (u8 *)udc->nullbuf);
1238 * in status phase, udc create a request and gain status */
1239 static int ep0_prime_status(struct qe_udc *udc, int direction)
1242 struct qe_ep *ep = &udc->eps[0];
1245 udc->ep0_state = DATA_STATE_NEED_ZLP;
1246 udc->ep0_dir = USB_DIR_IN;
1249 udc->ep0_dir = USB_DIR_OUT;
1250 udc->ep0_state = WAIT_FOR_OUT_STATUS;
1256 /* a request complete in ep0, whether gadget request or udc request */
1257 static void ep0_req_complete(struct qe_udc *udc, struct qe_req *req)
1259 struct qe_ep *ep = &udc->eps[0];
1262 switch (udc->ep0_state) {
1266 if (ep0_prime_status(udc, USB_DIR_OUT))
1267 qe_ep0_stall(udc);
1272 udc->ep0_state = WAIT_FOR_SETUP;
1278 if (ep0_prime_status(udc, USB_DIR_IN))
1279 qe_ep0_stall(udc);
1284 udc->ep0_state = WAIT_FOR_SETUP;
1288 dev_vdbg(udc->dev, "Unexpected interrupt\n");
1292 qe_ep0_stall(udc);
1304 ep->udc->ep0_state = WAIT_FOR_SETUP;
1323 ep0_req_complete(ep->udc, ep->tx_req);
1329 dev_vdbg(ep->udc->dev, "the ep0_controller have no req\n");
1340 dev_vdbg(ep->udc->dev, "The EP0 transmit data have error!\n");
1395 dev_vdbg(ep->udc->dev, "The EP0 transmit data have error!\n");
1465 struct qe_udc *udc = ep->udc;
1475 dev_vdbg(udc->dev, "the req already finish!\n");
1508 dev_vdbg(udc->dev, "the data01 error!\n");
1528 dev_err(udc->dev, "The receive frame with error!\n");
1578 struct qe_udc *udc;
1590 udc = ep->udc;
1591 if (!udc->driver || (udc->gadget.speed == USB_SPEED_UNKNOWN))
1596 retval = qe_ep_init(udc, epnum, desc);
1599 dev_dbg(udc->dev, "enable ep%d failed\n", ep->epnum);
1602 dev_dbg(udc->dev, "enable ep%d successful\n", ep->epnum);
1608 struct qe_udc *udc;
1614 udc = ep->udc;
1617 dev_dbg(udc->dev, "%s not enabled\n", _ep ? ep->ep.name : NULL);
1621 spin_lock_irqsave(&udc->lock, flags);
1627 qe_ep_reset(udc, ep->epnum);
1628 spin_unlock_irqrestore(&udc->lock, flags);
1658 dev_dbg(udc->dev, "disabled %s OK\n", _ep->name);
1691 struct qe_udc *udc;
1694 udc = ep->udc;
1698 dev_dbg(udc->dev, "bad params\n");
1702 dev_dbg(udc->dev, "bad ep\n");
1706 if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN)
1713 req->req.dma = dma_map_single(ep->udc->gadget.dev.parent,
1721 dma_sync_single_for_device(ep->udc->gadget.dev.parent,
1733 dev_vdbg(udc->dev, "gadget have request in %s! %d\n",
1743 udc->ep0_state = DATA_STATE_XMIT;
1745 udc->ep0_state = DATA_STATE_RECV;
1759 struct qe_udc *udc = ep->udc;
1763 spin_lock_irqsave(&udc->lock, flags);
1765 spin_unlock_irqrestore(&udc->lock, flags);
1779 spin_lock_irqsave(&ep->udc->lock, flags);
1788 spin_unlock_irqrestore(&ep->udc->lock, flags);
1794 spin_unlock_irqrestore(&ep->udc->lock, flags);
1809 struct qe_udc *udc;
1817 udc = ep->udc;
1826 spin_lock_irqsave(&ep->udc->lock, flags);
1829 spin_unlock_irqrestore(&ep->udc->lock, flags);
1832 udc->ep0_state = WAIT_FOR_SETUP;
1833 udc->ep0_dir = 0;
1840 dev_vdbg(udc->dev, "%s %s halt stat %d\n", ep->ep.name,
1927 static int udc_reset_ep_queue(struct qe_udc *udc, u8 pipe)
1929 struct qe_ep *ep = &udc->eps[pipe];
1936 static int reset_queues(struct qe_udc *udc)
1941 udc_reset_ep_queue(udc, pipe);
1944 spin_unlock(&udc->lock);
1945 udc->driver->disconnect(&udc->gadget);
1946 spin_lock(&udc->lock);
1951 static void ch9setaddress(struct qe_udc *udc, u16 value, u16 index,
1955 udc->device_address = (u8) value;
1957 udc->usb_state = USB_STATE_ADDRESS;
1960 if (ep0_prime_status(udc, USB_DIR_IN))
1961 qe_ep0_stall(udc);
1972 static void ch9getstatus(struct qe_udc *udc, u8 request_type, u16 value,
1980 ep = &udc->eps[0];
1986 /* We don't have interface information in udc driver */
1991 struct qe_ep *target_ep = &udc->eps[pipe];
1998 usep = in_be16(&udc->usb_regs->usb_usep[pipe]);
2015 req->req.buf = udc->statusbuf;
2021 udc->ep0_dir = USB_DIR_IN;
2029 dev_err(udc->dev, "Can't respond to getstatus request \n");
2030 qe_ep0_stall(udc);
2034 static void setup_received_handle(struct qe_udc *udc,
2037 /* Fix Endian (udc->local_setup_buff is cpu Endian now)*/
2043 udc_reset_ep_queue(udc, 0);
2046 udc->ep0_dir = USB_DIR_IN;
2048 udc->ep0_dir = USB_DIR_OUT;
2052 /* Data+Status phase form udc */
2056 ch9getstatus(udc, setup->bRequestType, wValue, wIndex,
2061 /* Status phase from udc */
2065 ch9setaddress(udc, wValue, wIndex, wLength);
2070 /* Requests with no data phase, status phase from udc */
2083 ep = &udc->eps[pipe];
2085 spin_unlock(&udc->lock);
2089 spin_lock(&udc->lock);
2092 ep0_prime_status(udc, USB_DIR_IN);
2101 /* Data phase from gadget, status phase from udc */
2103 udc->ep0_state = DATA_STATE_XMIT;
2104 udc->ep0_dir = USB_DIR_IN;
2106 udc->ep0_state = DATA_STATE_RECV;
2107 udc->ep0_dir = USB_DIR_OUT;
2109 spin_unlock(&udc->lock);
2110 if (udc->driver->setup(&udc->gadget,
2111 &udc->local_setup_buff) < 0)
2112 qe_ep0_stall(udc);
2113 spin_lock(&udc->lock);
2116 udc->ep0_dir = USB_DIR_IN;
2117 spin_unlock(&udc->lock);
2118 if (udc->driver->setup(&udc->gadget,
2119 &udc->local_setup_buff) < 0)
2120 qe_ep0_stall(udc);
2121 spin_lock(&udc->lock);
2122 udc->ep0_state = DATA_STATE_NEED_ZLP;
2129 static void suspend_irq(struct qe_udc *udc)
2131 udc->resume_state = udc->usb_state;
2132 udc->usb_state = USB_STATE_SUSPENDED;
2135 if (udc->driver->suspend)
2136 udc->driver->suspend(&udc->gadget);
2139 static void resume_irq(struct qe_udc *udc)
2141 udc->usb_state = udc->resume_state;
2142 udc->resume_state = 0;
2145 if (udc->driver->resume)
2146 udc->driver->resume(&udc->gadget);
2149 static void idle_irq(struct qe_udc *udc)
2153 usbs = in_8(&udc->usb_regs->usb_usbs);
2155 if ((udc->usb_state) != USB_STATE_SUSPENDED)
2156 suspend_irq(udc);
2158 if (udc->usb_state == USB_STATE_SUSPENDED)
2159 resume_irq(udc);
2163 static int reset_irq(struct qe_udc *udc)
2167 if (udc->usb_state == USB_STATE_DEFAULT)
2171 out_8(&udc->usb_regs->usb_usadr, 0);
2174 if (udc->eps[i].init)
2175 qe_ep_reset(udc, i);
2178 reset_queues(udc);
2179 udc->usb_state = USB_STATE_DEFAULT;
2180 udc->ep0_state = WAIT_FOR_SETUP;
2181 udc->ep0_dir = USB_DIR_OUT;
2186 static int bsy_irq(struct qe_udc *udc)
2191 static int txe_irq(struct qe_udc *udc)
2197 static int tx_irq(struct qe_udc *udc)
2203 if ((udc->usb_state == USB_STATE_ADDRESS)
2204 && (in_8(&udc->usb_regs->usb_usadr) == 0))
2205 out_8(&udc->usb_regs->usb_usadr, udc->device_address);
2208 ep = &udc->eps[i];
2226 static void rx_irq(struct qe_udc *udc)
2233 ep = &udc->eps[i];
2239 qe_ep0_rx(udc);
2251 struct qe_udc *udc = (struct qe_udc *)_udc;
2256 spin_lock_irqsave(&udc->lock, flags);
2258 irq_src = in_be16(&udc->usb_regs->usb_usber) &
2259 in_be16(&udc->usb_regs->usb_usbmr);
2261 out_be16(&udc->usb_regs->usb_usber, irq_src);
2264 idle_irq(udc);
2270 tx_irq(udc);
2276 rx_irq(udc);
2282 reset_irq(udc);
2288 bsy_irq(udc);
2294 txe_irq(udc);
2299 spin_unlock_irqrestore(&udc->lock, flags);
2400 /* udc structure's alloc and setup, include ep-param alloc */
2403 struct qe_udc *udc;
2411 udc = kzalloc(sizeof(*udc), GFP_KERNEL);
2412 if (udc == NULL) {
2413 dev_err(&ofdev->dev, "malloc udc failed\n");
2417 udc->dev = &ofdev->dev;
2421 udc->usb_param = cpm_muram_addr(offset);
2422 memset_io(udc->usb_param, 0, size);
2424 usbpram = udc->usb_param;
2436 udc->ep_param[i] = cpm_muram_addr(tmp_addr);
2440 memset_io(udc->ep_param[0], 0,
2443 udc->resume_state = USB_STATE_NOTATTACHED;
2444 udc->usb_state = USB_STATE_POWERED;
2445 udc->ep0_dir = 0;
2447 spin_lock_init(&udc->lock);
2448 return udc;
2451 kfree(udc);
2456 static int __devinit qe_udc_reg_init(struct qe_udc *udc)
2459 qe_usbregs = udc->usb_regs;
2474 static int __devinit qe_ep_config(struct qe_udc *udc, unsigned char pipe_num)
2476 struct qe_ep *ep = &udc->eps[pipe_num];
2478 ep->udc = udc;
2502 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
2504 ep->gadget = &udc->gadget;
2539 /* Initialize the udc structure including QH member and other member */
2744 /* wait for release() of gadget.dev to free udc */