void push_req_queue(requests_t *r, item_t *i) { if (empty_req_queue(r)) { r->head = r->tail = i; } else { r->tail->next = i; r->tail = i; } }
item_t *pop_req_queue(requests_t *r) { item_t *ret; if (empty_req_queue(r)) { return NULL; } else if (r->head == r->tail) { ret = r->head; r->head = r->tail = NULL; } else { ret = r->head; r->head = ret->next; } return ret; }
/* Disables endpoint, is called by gadget driver */ static int udc_ep_disable(struct usb_ep *usbep) { struct udc_ep *ep = NULL; unsigned long iflags; if (!usbep) return -EINVAL; ep = container_of(usbep, struct udc_ep, ep); if (usbep->name == ep0_string || !ep->ep.desc) return -EINVAL; DBG(ep->dev, "Disable ep-%d\n", ep->num); spin_lock_irqsave(&ep->dev->lock, iflags); udc_free_request(&ep->ep, &ep->bna_dummy_req->req); empty_req_queue(ep); ep_init(ep->dev->regs, ep); spin_unlock_irqrestore(&ep->dev->lock, iflags); return 0; }
int emptyRQ(requests_t *r) { return empty_req_queue(r); }