usb: musb: switch dev_dbg to tracepoints
Switch dev_dbg() to tracepoint debug musb_dbg(). Signed-off-by: Bin Liu <b-liu@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
f89252ad19
commit
b99d3659b3
@@ -131,7 +131,7 @@ static void musb_h_tx_flush_fifo(struct musb_hw_ep *ep)
|
||||
* I found using a usb-ethernet device and running iperf
|
||||
* (client on AM335x) has very high chance to trigger it.
|
||||
*
|
||||
* Better to turn on dev_dbg() in musb_cleanup_urb() with
|
||||
* Better to turn on musb_dbg() in musb_cleanup_urb() with
|
||||
* CPPI enabled to see the issue when aborting the tx channel.
|
||||
*/
|
||||
if (dev_WARN_ONCE(musb->controller, retries-- < 1,
|
||||
@@ -254,7 +254,7 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
|
||||
len = urb->transfer_buffer_length - urb->actual_length;
|
||||
}
|
||||
|
||||
dev_dbg(musb->controller, "qh %p urb %p dev%d ep%d%s%s, hw_ep %d, %p/%d\n",
|
||||
musb_dbg(musb, "qh %p urb %p dev%d ep%d%s%s, hw_ep %d, %p/%d",
|
||||
qh, urb, address, qh->epnum,
|
||||
is_in ? "in" : "out",
|
||||
({char *s; switch (qh->type) {
|
||||
@@ -277,7 +277,7 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
|
||||
switch (qh->type) {
|
||||
case USB_ENDPOINT_XFER_ISOC:
|
||||
case USB_ENDPOINT_XFER_INT:
|
||||
dev_dbg(musb->controller, "check whether there's still time for periodic Tx\n");
|
||||
musb_dbg(musb, "check whether there's still time for periodic Tx");
|
||||
frame = musb_readw(mbase, MUSB_FRAME);
|
||||
/* FIXME this doesn't implement that scheduling policy ...
|
||||
* or handle framecounter wrapping
|
||||
@@ -291,7 +291,7 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
|
||||
} else {
|
||||
qh->frame = urb->start_frame;
|
||||
/* enable SOF interrupt so we can count down */
|
||||
dev_dbg(musb->controller, "SOF for %d\n", epnum);
|
||||
musb_dbg(musb, "SOF for %d", epnum);
|
||||
#if 1 /* ifndef CONFIG_ARCH_DAVINCI */
|
||||
musb_writeb(mbase, MUSB_INTRUSBE, 0xff);
|
||||
#endif
|
||||
@@ -299,7 +299,7 @@ musb_start_urb(struct musb *musb, int is_in, struct musb_qh *qh)
|
||||
break;
|
||||
default:
|
||||
start:
|
||||
dev_dbg(musb->controller, "Start TX%d %s\n", epnum,
|
||||
musb_dbg(musb, "Start TX%d %s", epnum,
|
||||
hw_ep->tx_channel ? "dma" : "pio");
|
||||
|
||||
if (!hw_ep->tx_channel)
|
||||
@@ -314,8 +314,7 @@ static void musb_giveback(struct musb *musb, struct urb *urb, int status)
|
||||
__releases(musb->lock)
|
||||
__acquires(musb->lock)
|
||||
{
|
||||
dev_dbg(musb->controller,
|
||||
"complete %p %pF (%d), dev%d ep%d%s, %d/%d\n",
|
||||
musb_dbg(musb, "complete %p %pF (%d), dev%d ep%d%s, %d/%d",
|
||||
urb, urb->complete, status,
|
||||
usb_pipedevice(urb->pipe),
|
||||
usb_pipeendpoint(urb->pipe),
|
||||
@@ -441,7 +440,7 @@ static void musb_advance_schedule(struct musb *musb, struct urb *urb,
|
||||
* for RX, until we have a test case to understand the behavior of TX.
|
||||
*/
|
||||
if ((!status || !is_in) && qh && qh->is_ready) {
|
||||
dev_dbg(musb->controller, "... next ep%d %cX urb %p\n",
|
||||
musb_dbg(musb, "... next ep%d %cX urb %p",
|
||||
hw_ep->epnum, is_in ? 'R' : 'T', next_urb(qh));
|
||||
musb_start_urb(musb, is_in, qh);
|
||||
}
|
||||
@@ -486,7 +485,7 @@ musb_host_packet_rx(struct musb *musb, struct urb *urb, u8 epnum, u8 iso_err)
|
||||
|
||||
/* musb_ep_select(mbase, epnum); */
|
||||
rx_count = musb_readw(epio, MUSB_RXCOUNT);
|
||||
dev_dbg(musb->controller, "RX%d count %d, buffer %p len %d/%d\n", epnum, rx_count,
|
||||
musb_dbg(musb, "RX%d count %d, buffer %p len %d/%d", epnum, rx_count,
|
||||
urb->transfer_buffer, qh->offset,
|
||||
urb->transfer_buffer_length);
|
||||
|
||||
@@ -508,7 +507,7 @@ musb_host_packet_rx(struct musb *musb, struct urb *urb, u8 epnum, u8 iso_err)
|
||||
status = -EOVERFLOW;
|
||||
urb->error_count++;
|
||||
}
|
||||
dev_dbg(musb->controller, "** OVERFLOW %d into %d\n", rx_count, length);
|
||||
musb_dbg(musb, "OVERFLOW %d into %d", rx_count, length);
|
||||
do_flush = 1;
|
||||
} else
|
||||
length = rx_count;
|
||||
@@ -526,7 +525,7 @@ musb_host_packet_rx(struct musb *musb, struct urb *urb, u8 epnum, u8 iso_err)
|
||||
if (rx_count > length) {
|
||||
if (urb->status == -EINPROGRESS)
|
||||
urb->status = -EOVERFLOW;
|
||||
dev_dbg(musb->controller, "** OVERFLOW %d into %d\n", rx_count, length);
|
||||
musb_dbg(musb, "OVERFLOW %d into %d", rx_count, length);
|
||||
do_flush = 1;
|
||||
} else
|
||||
length = rx_count;
|
||||
@@ -750,8 +749,8 @@ static void musb_ep_program(struct musb *musb, u8 epnum,
|
||||
u8 use_dma = 1;
|
||||
u16 csr;
|
||||
|
||||
dev_dbg(musb->controller, "%s hw%d urb %p spd%d dev%d ep%d%s "
|
||||
"h_addr%02x h_port%02x bytes %d\n",
|
||||
musb_dbg(musb, "%s hw%d urb %p spd%d dev%d ep%d%s "
|
||||
"h_addr%02x h_port%02x bytes %d",
|
||||
is_out ? "-->" : "<--",
|
||||
epnum, urb, urb->dev->speed,
|
||||
qh->addr_reg, qh->epnum, is_out ? "out" : "in",
|
||||
@@ -969,7 +968,7 @@ finish:
|
||||
}
|
||||
|
||||
csr |= MUSB_RXCSR_H_REQPKT;
|
||||
dev_dbg(musb->controller, "RXCSR%d := %04x\n", epnum, csr);
|
||||
musb_dbg(musb, "RXCSR%d := %04x", epnum, csr);
|
||||
musb_writew(hw_ep->regs, MUSB_RXCSR, csr);
|
||||
csr = musb_readw(hw_ep->regs, MUSB_RXCSR);
|
||||
}
|
||||
@@ -1085,15 +1084,15 @@ static bool musb_h_ep0_continue(struct musb *musb, u16 len, struct urb *urb)
|
||||
request = (struct usb_ctrlrequest *) urb->setup_packet;
|
||||
|
||||
if (!request->wLength) {
|
||||
dev_dbg(musb->controller, "start no-DATA\n");
|
||||
musb_dbg(musb, "start no-DATA");
|
||||
break;
|
||||
} else if (request->bRequestType & USB_DIR_IN) {
|
||||
dev_dbg(musb->controller, "start IN-DATA\n");
|
||||
musb_dbg(musb, "start IN-DATA");
|
||||
musb->ep0_stage = MUSB_EP0_IN;
|
||||
more = true;
|
||||
break;
|
||||
} else {
|
||||
dev_dbg(musb->controller, "start OUT-DATA\n");
|
||||
musb_dbg(musb, "start OUT-DATA");
|
||||
musb->ep0_stage = MUSB_EP0_OUT;
|
||||
more = true;
|
||||
}
|
||||
@@ -1105,7 +1104,7 @@ static bool musb_h_ep0_continue(struct musb *musb, u16 len, struct urb *urb)
|
||||
if (fifo_count) {
|
||||
fifo_dest = (u8 *) (urb->transfer_buffer
|
||||
+ urb->actual_length);
|
||||
dev_dbg(musb->controller, "Sending %d byte%s to ep0 fifo %p\n",
|
||||
musb_dbg(musb, "Sending %d byte%s to ep0 fifo %p",
|
||||
fifo_count,
|
||||
(fifo_count == 1) ? "" : "s",
|
||||
fifo_dest);
|
||||
@@ -1150,7 +1149,7 @@ irqreturn_t musb_h_ep0_irq(struct musb *musb)
|
||||
? musb_readb(epio, MUSB_COUNT0)
|
||||
: 0;
|
||||
|
||||
dev_dbg(musb->controller, "<== csr0 %04x, qh %p, count %d, urb %p, stage %d\n",
|
||||
musb_dbg(musb, "<== csr0 %04x, qh %p, count %d, urb %p, stage %d",
|
||||
csr, qh, len, urb, musb->ep0_stage);
|
||||
|
||||
/* if we just did status stage, we are done */
|
||||
@@ -1161,15 +1160,15 @@ irqreturn_t musb_h_ep0_irq(struct musb *musb)
|
||||
|
||||
/* prepare status */
|
||||
if (csr & MUSB_CSR0_H_RXSTALL) {
|
||||
dev_dbg(musb->controller, "STALLING ENDPOINT\n");
|
||||
musb_dbg(musb, "STALLING ENDPOINT");
|
||||
status = -EPIPE;
|
||||
|
||||
} else if (csr & MUSB_CSR0_H_ERROR) {
|
||||
dev_dbg(musb->controller, "no response, csr0 %04x\n", csr);
|
||||
musb_dbg(musb, "no response, csr0 %04x", csr);
|
||||
status = -EPROTO;
|
||||
|
||||
} else if (csr & MUSB_CSR0_H_NAKTIMEOUT) {
|
||||
dev_dbg(musb->controller, "control NAK timeout\n");
|
||||
musb_dbg(musb, "control NAK timeout");
|
||||
|
||||
/* NOTE: this code path would be a good place to PAUSE a
|
||||
* control transfer, if another one is queued, so that
|
||||
@@ -1184,7 +1183,7 @@ irqreturn_t musb_h_ep0_irq(struct musb *musb)
|
||||
}
|
||||
|
||||
if (status) {
|
||||
dev_dbg(musb->controller, "aborting\n");
|
||||
musb_dbg(musb, "aborting");
|
||||
retval = IRQ_HANDLED;
|
||||
if (urb)
|
||||
urb->status = status;
|
||||
@@ -1237,7 +1236,7 @@ irqreturn_t musb_h_ep0_irq(struct musb *musb)
|
||||
/* flag status stage */
|
||||
musb->ep0_stage = MUSB_EP0_STATUS;
|
||||
|
||||
dev_dbg(musb->controller, "ep0 STATUS, csr %04x\n", csr);
|
||||
musb_dbg(musb, "ep0 STATUS, csr %04x", csr);
|
||||
|
||||
}
|
||||
musb_writew(epio, MUSB_CSR0, csr);
|
||||
@@ -1291,38 +1290,36 @@ void musb_host_tx(struct musb *musb, u8 epnum)
|
||||
|
||||
/* with CPPI, DMA sometimes triggers "extra" irqs */
|
||||
if (!urb) {
|
||||
dev_dbg(musb->controller, "extra TX%d ready, csr %04x\n", epnum, tx_csr);
|
||||
musb_dbg(musb, "extra TX%d ready, csr %04x", epnum, tx_csr);
|
||||
return;
|
||||
}
|
||||
|
||||
pipe = urb->pipe;
|
||||
dma = is_dma_capable() ? hw_ep->tx_channel : NULL;
|
||||
dev_dbg(musb->controller, "OUT/TX%d end, csr %04x%s\n", epnum, tx_csr,
|
||||
musb_dbg(musb, "OUT/TX%d end, csr %04x%s", epnum, tx_csr,
|
||||
dma ? ", dma" : "");
|
||||
|
||||
/* check for errors */
|
||||
if (tx_csr & MUSB_TXCSR_H_RXSTALL) {
|
||||
/* dma was disabled, fifo flushed */
|
||||
dev_dbg(musb->controller, "TX end %d stall\n", epnum);
|
||||
musb_dbg(musb, "TX end %d stall", epnum);
|
||||
|
||||
/* stall; record URB status */
|
||||
status = -EPIPE;
|
||||
|
||||
} else if (tx_csr & MUSB_TXCSR_H_ERROR) {
|
||||
/* (NON-ISO) dma was disabled, fifo flushed */
|
||||
dev_dbg(musb->controller, "TX 3strikes on ep=%d\n", epnum);
|
||||
musb_dbg(musb, "TX 3strikes on ep=%d", epnum);
|
||||
|
||||
status = -ETIMEDOUT;
|
||||
|
||||
} else if (tx_csr & MUSB_TXCSR_H_NAKTIMEOUT) {
|
||||
if (USB_ENDPOINT_XFER_BULK == qh->type && qh->mux == 1
|
||||
&& !list_is_singular(&musb->out_bulk)) {
|
||||
dev_dbg(musb->controller,
|
||||
"NAK timeout on TX%d ep\n", epnum);
|
||||
musb_dbg(musb, "NAK timeout on TX%d ep", epnum);
|
||||
musb_bulk_nak_timeout(musb, hw_ep, 0);
|
||||
} else {
|
||||
dev_dbg(musb->controller,
|
||||
"TX end=%d device not responding\n", epnum);
|
||||
musb_dbg(musb, "TX ep%d device not responding", epnum);
|
||||
/* NOTE: this code path would be a good place to PAUSE a
|
||||
* transfer, if there's some other (nonperiodic) tx urb
|
||||
* that could use this fifo. (dma complicates it...)
|
||||
@@ -1368,7 +1365,7 @@ done:
|
||||
|
||||
/* second cppi case */
|
||||
if (dma_channel_status(dma) == MUSB_DMA_STATUS_BUSY) {
|
||||
dev_dbg(musb->controller, "extra TX%d ready, csr %04x\n", epnum, tx_csr);
|
||||
musb_dbg(musb, "extra TX%d ready, csr %04x", epnum, tx_csr);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1427,8 +1424,9 @@ done:
|
||||
* FIFO mode too...
|
||||
*/
|
||||
if (tx_csr & (MUSB_TXCSR_FIFONOTEMPTY | MUSB_TXCSR_TXPKTRDY)) {
|
||||
dev_dbg(musb->controller, "DMA complete but packet still in FIFO, "
|
||||
"CSR %04x\n", tx_csr);
|
||||
musb_dbg(musb,
|
||||
"DMA complete but FIFO not empty, CSR %04x",
|
||||
tx_csr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1494,7 +1492,7 @@ done:
|
||||
return;
|
||||
}
|
||||
} else if (tx_csr & MUSB_TXCSR_DMAENAB) {
|
||||
dev_dbg(musb->controller, "not complete, but DMA enabled?\n");
|
||||
musb_dbg(musb, "not complete, but DMA enabled?");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1723,7 +1721,7 @@ static int musb_rx_dma_in_inventra_cppi41(struct dma_controller *dma,
|
||||
d_status = -EOVERFLOW;
|
||||
urb->error_count++;
|
||||
}
|
||||
dev_dbg(musb->controller, "** OVERFLOW %d into %d\n",
|
||||
musb_dbg(musb, "** OVERFLOW %d into %d",
|
||||
rx_count, d->length);
|
||||
|
||||
length = d->length;
|
||||
@@ -1847,28 +1845,28 @@ void musb_host_rx(struct musb *musb, u8 epnum)
|
||||
* usbtest #11 (unlinks) triggers it regularly, sometimes
|
||||
* with fifo full. (Only with DMA??)
|
||||
*/
|
||||
dev_dbg(musb->controller, "BOGUS RX%d ready, csr %04x, count %d\n", epnum, val,
|
||||
musb_readw(epio, MUSB_RXCOUNT));
|
||||
musb_dbg(musb, "BOGUS RX%d ready, csr %04x, count %d",
|
||||
epnum, val, musb_readw(epio, MUSB_RXCOUNT));
|
||||
musb_h_flush_rxfifo(hw_ep, MUSB_RXCSR_CLRDATATOG);
|
||||
return;
|
||||
}
|
||||
|
||||
pipe = urb->pipe;
|
||||
|
||||
dev_dbg(musb->controller, "<== hw %d rxcsr %04x, urb actual %d (+dma %zu)\n",
|
||||
musb_dbg(musb, "<== hw %d rxcsr %04x, urb actual %d (+dma %zu)",
|
||||
epnum, rx_csr, urb->actual_length,
|
||||
dma ? dma->actual_len : 0);
|
||||
|
||||
/* check for errors, concurrent stall & unlink is not really
|
||||
* handled yet! */
|
||||
if (rx_csr & MUSB_RXCSR_H_RXSTALL) {
|
||||
dev_dbg(musb->controller, "RX end %d STALL\n", epnum);
|
||||
musb_dbg(musb, "RX end %d STALL", epnum);
|
||||
|
||||
/* stall; record URB status */
|
||||
status = -EPIPE;
|
||||
|
||||
} else if (rx_csr & MUSB_RXCSR_H_ERROR) {
|
||||
dev_dbg(musb->controller, "end %d RX proto error\n", epnum);
|
||||
musb_dbg(musb, "end %d RX proto error", epnum);
|
||||
|
||||
status = -EPROTO;
|
||||
musb_writeb(epio, MUSB_RXINTERVAL, 0);
|
||||
@@ -1879,7 +1877,7 @@ void musb_host_rx(struct musb *musb, u8 epnum)
|
||||
} else if (rx_csr & MUSB_RXCSR_DATAERROR) {
|
||||
|
||||
if (USB_ENDPOINT_XFER_ISOC != qh->type) {
|
||||
dev_dbg(musb->controller, "RX end %d NAK timeout\n", epnum);
|
||||
musb_dbg(musb, "RX end %d NAK timeout", epnum);
|
||||
|
||||
/* NOTE: NAKing is *NOT* an error, so we want to
|
||||
* continue. Except ... if there's a request for
|
||||
@@ -1902,12 +1900,12 @@ void musb_host_rx(struct musb *musb, u8 epnum)
|
||||
|
||||
goto finish;
|
||||
} else {
|
||||
dev_dbg(musb->controller, "RX end %d ISO data error\n", epnum);
|
||||
musb_dbg(musb, "RX end %d ISO data error", epnum);
|
||||
/* packet error reported later */
|
||||
iso_err = true;
|
||||
}
|
||||
} else if (rx_csr & MUSB_RXCSR_INCOMPRX) {
|
||||
dev_dbg(musb->controller, "end %d high bandwidth incomplete ISO packet RX\n",
|
||||
musb_dbg(musb, "end %d high bandwidth incomplete ISO packet RX",
|
||||
epnum);
|
||||
status = -EPROTO;
|
||||
}
|
||||
@@ -1952,7 +1950,7 @@ void musb_host_rx(struct musb *musb, u8 epnum)
|
||||
done = true;
|
||||
}
|
||||
|
||||
dev_dbg(musb->controller, "RXCSR%d %04x, reqpkt, len %zu%s\n", epnum, rx_csr,
|
||||
musb_dbg(musb, "RXCSR%d %04x, reqpkt, len %zu%s", epnum, rx_csr,
|
||||
xfer_len, dma ? ", dma" : "");
|
||||
rx_csr &= ~MUSB_RXCSR_H_REQPKT;
|
||||
|
||||
@@ -1973,8 +1971,8 @@ void musb_host_rx(struct musb *musb, u8 epnum)
|
||||
if (musb_dma_inventra(musb) || musb_dma_ux500(musb) ||
|
||||
musb_dma_cppi41(musb)) {
|
||||
done = musb_rx_dma_inventra_cppi41(c, hw_ep, qh, urb, xfer_len);
|
||||
dev_dbg(hw_ep->musb->controller,
|
||||
"ep %d dma %s, rxcsr %04x, rxcount %d\n",
|
||||
musb_dbg(hw_ep->musb,
|
||||
"ep %d dma %s, rxcsr %04x, rxcount %d",
|
||||
epnum, done ? "off" : "reset",
|
||||
musb_readw(epio, MUSB_RXCSR),
|
||||
musb_readw(epio, MUSB_RXCOUNT));
|
||||
@@ -2001,8 +1999,8 @@ void musb_host_rx(struct musb *musb, u8 epnum)
|
||||
/* we are expecting IN packets */
|
||||
if ((musb_dma_inventra(musb) || musb_dma_ux500(musb) ||
|
||||
musb_dma_cppi41(musb)) && dma) {
|
||||
dev_dbg(hw_ep->musb->controller,
|
||||
"RX%d count %d, buffer 0x%llx len %d/%d\n",
|
||||
musb_dbg(hw_ep->musb,
|
||||
"RX%d count %d, buffer 0x%llx len %d/%d",
|
||||
epnum, musb_readw(epio, MUSB_RXCOUNT),
|
||||
(unsigned long long) urb->transfer_dma
|
||||
+ urb->actual_length,
|
||||
@@ -2054,7 +2052,7 @@ void musb_host_rx(struct musb *musb, u8 epnum)
|
||||
done = musb_host_packet_rx(musb, urb,
|
||||
epnum, iso_err);
|
||||
}
|
||||
dev_dbg(musb->controller, "read %spacket\n", done ? "last " : "");
|
||||
musb_dbg(musb, "read %spacket", done ? "last " : "");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2178,7 +2176,7 @@ static int musb_schedule(
|
||||
idle = 1;
|
||||
qh->mux = 0;
|
||||
hw_ep = musb->endpoints + best_end;
|
||||
dev_dbg(musb->controller, "qh %p periodic slot %d\n", qh, best_end);
|
||||
musb_dbg(musb, "qh %p periodic slot %d", qh, best_end);
|
||||
success:
|
||||
if (head) {
|
||||
idle = list_empty(head);
|
||||
@@ -2400,8 +2398,7 @@ static int musb_cleanup_urb(struct urb *urb, struct musb_qh *qh)
|
||||
dma = is_in ? ep->rx_channel : ep->tx_channel;
|
||||
if (dma) {
|
||||
status = ep->musb->dma_controller->channel_abort(dma);
|
||||
dev_dbg(musb->controller,
|
||||
"abort %cX%d DMA for urb %p --> %d\n",
|
||||
musb_dbg(musb, "abort %cX%d DMA for urb %p --> %d",
|
||||
is_in ? 'R' : 'T', ep->epnum,
|
||||
urb, status);
|
||||
urb->actual_length += dma->actual_len;
|
||||
@@ -2447,7 +2444,7 @@ static int musb_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
|
||||
int is_in = usb_pipein(urb->pipe);
|
||||
int ret;
|
||||
|
||||
dev_dbg(musb->controller, "urb=%p, dev%d ep%d%s\n", urb,
|
||||
musb_dbg(musb, "urb=%p, dev%d ep%d%s", urb,
|
||||
usb_pipedevice(urb->pipe),
|
||||
usb_pipeendpoint(urb->pipe),
|
||||
is_in ? "in" : "out");
|
||||
|
Reference in New Issue
Block a user