usb_pipein (urb->pipe) ? "in" : "out",
token, urb->status);
- /* stall indicates some recovery action is needed */
- if (urb->status == -EPIPE) {
- int pipe = urb->pipe;
-
- if (!usb_pipecontrol (pipe))
- usb_endpoint_halt (urb->dev,
- usb_pipeendpoint (pipe),
- usb_pipeout (pipe));
-
/* if async CSPLIT failed, try cleaning out the TT buffer */
- } else if (urb->dev->tt && !usb_pipeint (urb->pipe)
+ if (urb->status != -EPIPE
+ && urb->dev->tt && !usb_pipeint (urb->pipe)
&& ((token & QTD_STS_MMF) != 0
|| QTD_CERR(token) == 0)
&& (!ehci_is_ARC(ehci)
}
spin_lock (&urb->lock);
- urb->hcpriv = 0;
+ urb->hcpriv = NULL;
switch (urb->status) {
case -EINPROGRESS: /* success */
urb->status = 0;
static unsigned
qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh, struct pt_regs *regs)
{
- struct ehci_qtd *last = 0, *end = qh->dummy;
+ struct ehci_qtd *last = NULL, *end = qh->dummy;
struct list_head *entry, *tmp;
int stopped;
unsigned count = 0;
count++;
}
ehci_qtd_free (ehci, last);
- last = 0;
+ last = NULL;
}
/* ignore urbs submitted during completions we reported */
struct ehci_qtd, qtd_list);
/* first qtd may already be partially processed */
if (cpu_to_le32 (end->qtd_dma) == qh->hw_current)
- end = 0;
+ end = NULL;
}
if (end)
qh_update (ehci, qh, end);
*/
qtd = ehci_qtd_alloc (ehci, flags);
if (unlikely (!qtd))
- return 0;
+ return NULL;
list_add_tail (&qtd->qtd_list, head);
qtd->urb = urb;
cleanup:
qtd_list_free (ehci, urb, head);
- return 0;
+ return NULL;
}
/*-------------------------------------------------------------------------*/
dbg ("bogus dev %p speed %d", urb->dev, urb->dev->speed);
done:
qh_put (qh);
- return 0;
+ return NULL;
}
/* NOTE: if (PIPE_INTERRUPT) { scheduler sets s-mask } */
static void qh_link_async (struct ehci_hcd *ehci, struct ehci_qh *qh)
{
- u32 dma = QH_NEXT (qh->qh_dma);
+ __le32 dma = QH_NEXT (qh->qh_dma);
struct ehci_qh *head;
/* (re)start the async schedule? */
/*-------------------------------------------------------------------------*/
-#define QH_ADDR_MASK __constant_le32_to_cpu(0x7f)
+#define QH_ADDR_MASK __constant_cpu_to_le32(0x7f)
/*
* For control/bulk/interrupt, return QH with these TDs appended.
void **ptr
)
{
- struct ehci_qh *qh = 0;
+ struct ehci_qh *qh = NULL;
qh = (struct ehci_qh *) *ptr;
- if (unlikely (qh == 0)) {
+ if (unlikely (qh == NULL)) {
/* can't sleep here, we have ehci->lock... */
qh = qh_make (ehci, urb, GFP_ATOMIC);
*ptr = qh;
}
- if (likely (qh != 0)) {
+ if (likely (qh != NULL)) {
struct ehci_qtd *qtd;
if (unlikely (list_empty (qtd_list)))
- qtd = 0;
+ qtd = NULL;
else
qtd = list_entry (qtd_list->next, struct ehci_qtd,
qtd_list);
if (likely (qtd != 0)) {
struct ehci_qtd *dummy;
dma_addr_t dma;
- u32 token;
+ __le32 token;
/* to avoid racing the HC, use the dummy td instead of
* the first td of our list (becomes new dummy). both
struct hcd_dev *dev;
int epnum;
unsigned long flags;
- struct ehci_qh *qh = 0;
+ struct ehci_qh *qh = NULL;
qtd = list_entry (qtd_list->next, struct ehci_qtd, qtd_list);
dev = (struct hcd_dev *)urb->dev->hcpriv;
// qh->hw_next = cpu_to_le32 (qh->qh_dma);
qh->qh_state = QH_STATE_IDLE;
- qh->qh_next.qh = 0;
+ qh->qh_next.qh = NULL;
qh_put (qh); // refcount from reclaim
/* other unlink(s) may be pending (in QH_STATE_UNLINK_WAIT) */
next = qh->reclaim;
ehci->reclaim = next;
ehci->reclaim_ready = 0;
- qh->reclaim = 0;
+ qh->reclaim = NULL;
qh_completions (ehci, qh, regs);
}
if (next) {
- ehci->reclaim = 0;
+ ehci->reclaim = NULL;
start_unlink_async (ehci, next);
}
}