Extent the the USB host trace logic to include verbose debug output
This commit is contained in:
parent
1a18d1e3e7
commit
a4e6a3b80f
@ -115,6 +115,13 @@
|
|||||||
# undef CONFIG_SAMA5_UHPHS_RHPORT1
|
# undef CONFIG_SAMA5_UHPHS_RHPORT1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Simplify DEBUG checks */
|
||||||
|
|
||||||
|
#ifndef CONFIG_DEBUG
|
||||||
|
# undef CONFIG_DEBUG_VERBOSE
|
||||||
|
# undef CONFIG_DEBUG_USB
|
||||||
|
#endif
|
||||||
|
|
||||||
/* For now, suppress use of PORTA in any event. I use that for SAM-BA and
|
/* For now, suppress use of PORTA in any event. I use that for SAM-BA and
|
||||||
* would prefer that the board not try to drive VBUS on that port!
|
* would prefer that the board not try to drive VBUS on that port!
|
||||||
*/
|
*/
|
||||||
@ -1821,8 +1828,14 @@ static ssize_t sam_async_transfer(struct sam_rhport_s *rhport,
|
|||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
/* Terse output only if we are tracing */
|
||||||
|
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE
|
||||||
|
usbhost_vtrace2(EHCI_VTRACE2_ASYNCXFR, epinfo->epno, buflen);
|
||||||
|
#else
|
||||||
uvdbg("RHport%d EP%d: buffer=%p, buflen=%d, req=%p\n",
|
uvdbg("RHport%d EP%d: buffer=%p, buflen=%d, req=%p\n",
|
||||||
rhport->rhpndx+1, epinfo->epno, buffer, buflen, req);
|
rhport->rhpndx+1, epinfo->epno, buffer, buflen, req);
|
||||||
|
#endif
|
||||||
|
|
||||||
DEBUGASSERT(rhport && epinfo);
|
DEBUGASSERT(rhport && epinfo);
|
||||||
|
|
||||||
@ -2155,8 +2168,14 @@ static ssize_t sam_intr_transfer(struct sam_rhport_s *rhport,
|
|||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
/* Terse output only if we are tracing */
|
||||||
|
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE
|
||||||
|
usbhost_vtrace2(EHCI_VTRACE2_INTRXFR, epinfo->epno, buflen);
|
||||||
|
#else
|
||||||
uvdbg("RHport%d EP%d: buffer=%p, buflen=%d\n",
|
uvdbg("RHport%d EP%d: buffer=%p, buflen=%d\n",
|
||||||
rhport->rhpndx+1, epinfo->epno, buffer, buflen);
|
rhport->rhpndx+1, epinfo->epno, buffer, buflen);
|
||||||
|
#endif
|
||||||
|
|
||||||
DEBUGASSERT(rhport && epinfo && buffer && buflen > 0);
|
DEBUGASSERT(rhport && epinfo && buffer && buflen > 0);
|
||||||
|
|
||||||
@ -2367,7 +2386,7 @@ static int sam_qh_ioccheck(struct sam_qh_s *qh, uint32_t **bp, void *arg)
|
|||||||
/* Is the qTD still active? */
|
/* Is the qTD still active? */
|
||||||
|
|
||||||
token = sam_swap32(qh->hw.overlay.token);
|
token = sam_swap32(qh->hw.overlay.token);
|
||||||
uvdbg("EP%d TOKEN=%08x\n", epinfo->epno, token);
|
usbhost_vtrace2(EHCI_VTRACE2_IOCCHECK, epinfo->epno, token);
|
||||||
|
|
||||||
if ((token & QH_TOKEN_ACTIVE) != 0)
|
if ((token & QH_TOKEN_ACTIVE) != 0)
|
||||||
{
|
{
|
||||||
@ -2582,13 +2601,13 @@ static inline void sam_portsc_bottomhalf(void)
|
|||||||
rhport = &g_ehci.rhport[rhpndx];
|
rhport = &g_ehci.rhport[rhpndx];
|
||||||
portsc = sam_getreg(&HCOR->portsc[rhpndx]);
|
portsc = sam_getreg(&HCOR->portsc[rhpndx]);
|
||||||
|
|
||||||
uvdbg("PORTSC%d: %08x\n", rhpndx + 1, portsc);
|
usbhost_vtrace2(EHCI_VTRACE2_PORTSC, rhpndx + 1, portsc);
|
||||||
|
|
||||||
/* Handle port connection status change (CSC) events */
|
/* Handle port connection status change (CSC) events */
|
||||||
|
|
||||||
if ((portsc & EHCI_PORTSC_CSC) != 0)
|
if ((portsc & EHCI_PORTSC_CSC) != 0)
|
||||||
{
|
{
|
||||||
uvdbg("Connect Status Change\n");
|
usbhost_vtrace1(EHCI_VTRACE1_PORTSC_CSC, portsc);
|
||||||
|
|
||||||
/* Check current connect status */
|
/* Check current connect status */
|
||||||
|
|
||||||
@ -2602,8 +2621,8 @@ static inline void sam_portsc_bottomhalf(void)
|
|||||||
|
|
||||||
rhport->connected = true;
|
rhport->connected = true;
|
||||||
|
|
||||||
uvdbg("RHPort%d connected, pscwait: %d\n",
|
usbhost_vtrace2(EHCI_VTRACE2_PORTSC_CONNECTED,
|
||||||
rhpndx + 1, g_ehci.pscwait);
|
rhpndx + 1, g_ehci.pscwait);
|
||||||
|
|
||||||
/* Notify any waiters */
|
/* Notify any waiters */
|
||||||
|
|
||||||
@ -2615,7 +2634,7 @@ static inline void sam_portsc_bottomhalf(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uvdbg("Already connected\n");
|
usbhost_vtrace1(EHCI_VTRACE1_PORTSC_CONNALREADY, portsc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2626,7 +2645,9 @@ static inline void sam_portsc_bottomhalf(void)
|
|||||||
{
|
{
|
||||||
/* Yes.. disconnect the device */
|
/* Yes.. disconnect the device */
|
||||||
|
|
||||||
uvdbg("RHport%d disconnected\n", rhpndx+1);
|
usbhost_vtrace2(EHCI_VTRACE2_PORTSC_DISCONND,
|
||||||
|
rhpndx+1, g_ehci.pscwait);
|
||||||
|
|
||||||
rhport->connected = false;
|
rhport->connected = false;
|
||||||
rhport->lowspeed = false;
|
rhport->lowspeed = false;
|
||||||
|
|
||||||
@ -2652,7 +2673,7 @@ static inline void sam_portsc_bottomhalf(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uvdbg("Already disconnected\n");
|
usbhost_vtrace1(EHCI_VTRACE1_PORTSC_DISCALREADY, portsc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2700,7 +2721,7 @@ static inline void sam_syserr_bottomhalf(void)
|
|||||||
|
|
||||||
static inline void sam_async_advance_bottomhalf(void)
|
static inline void sam_async_advance_bottomhalf(void)
|
||||||
{
|
{
|
||||||
uvdbg("Async Advance Interrupt\n");
|
usbhost_vtrace1(EHCI_VTRACE1_AAINTR, 0);
|
||||||
|
|
||||||
/* REVISIT: Could remove all tagged QH entries here */
|
/* REVISIT: Could remove all tagged QH entries here */
|
||||||
}
|
}
|
||||||
@ -2750,11 +2771,11 @@ static void sam_ehci_bottomhalf(FAR void *arg)
|
|||||||
{
|
{
|
||||||
if ((pending & EHCI_INT_USBERRINT) != 0)
|
if ((pending & EHCI_INT_USBERRINT) != 0)
|
||||||
{
|
{
|
||||||
usbhost_trace1(EHCI_TRACE1_USBERR_INTR, 0);
|
usbhost_trace1(EHCI_TRACE1_USBERR_INTR, pending);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uvdbg("USB Interrupt (USBINT) Interrupt\n");
|
usbhost_vtrace1(EHCI_VTRACE1_USBINTR, pending);
|
||||||
}
|
}
|
||||||
|
|
||||||
sam_ioc_bottomhalf();
|
sam_ioc_bottomhalf();
|
||||||
@ -2857,7 +2878,12 @@ static int sam_ehci_tophalf(int irq, FAR void *context)
|
|||||||
|
|
||||||
usbsts = sam_getreg(&HCOR->usbsts);
|
usbsts = sam_getreg(&HCOR->usbsts);
|
||||||
regval = sam_getreg(&HCOR->usbintr);
|
regval = sam_getreg(&HCOR->usbintr);
|
||||||
|
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE
|
||||||
|
usbhost_vtrace1(EHCI_VTRACE1_TOPHALF, usbsts & regval);
|
||||||
|
#else
|
||||||
ullvdbg("USBSTS: %08x USBINTR: %08x\n", usbsts, regval);
|
ullvdbg("USBSTS: %08x USBINTR: %08x\n", usbsts, regval);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Handle all unmasked interrupt sources */
|
/* Handle all unmasked interrupt sources */
|
||||||
|
|
||||||
@ -2975,10 +3001,8 @@ static int sam_wait(FAR struct usbhost_connection_s *conn,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
irqrestore(flags);
|
irqrestore(flags);
|
||||||
|
usbhost_vtrace2(EHCI_VTRACE2_MONWAKEUP,
|
||||||
uvdbg("RHPort%d connected: %s\n",
|
rhpndx + 1, g_ehci.rhport[rhpndx].connected);
|
||||||
rhpndx + 1, g_ehci.rhport[rhpndx].connected ? "YES" : "NO");
|
|
||||||
|
|
||||||
return rhpndx;
|
return rhpndx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3026,6 +3050,7 @@ static int sam_enumerate(FAR struct usbhost_connection_s *conn, int rhpndx)
|
|||||||
struct sam_rhport_s *rhport;
|
struct sam_rhport_s *rhport;
|
||||||
volatile uint32_t *regaddr;
|
volatile uint32_t *regaddr;
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
int ret;
|
||||||
|
|
||||||
DEBUGASSERT(rhpndx >= 0 && rhpndx < SAM_EHCI_NRHPORT);
|
DEBUGASSERT(rhpndx >= 0 && rhpndx < SAM_EHCI_NRHPORT);
|
||||||
rhport = &g_ehci.rhport[rhpndx];
|
rhport = &g_ehci.rhport[rhpndx];
|
||||||
@ -3038,7 +3063,7 @@ static int sam_enumerate(FAR struct usbhost_connection_s *conn, int rhpndx)
|
|||||||
{
|
{
|
||||||
/* No, return an error */
|
/* No, return an error */
|
||||||
|
|
||||||
uvdbg("Not connected\n");
|
usbhost_vtrace1(EHCI_VTRACE1_ENUM_DISCONN, 0);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3242,8 +3267,14 @@ static int sam_enumerate(FAR struct usbhost_connection_s *conn, int rhpndx)
|
|||||||
* See include/nuttx/usb/usbhost_devaddr.h.
|
* See include/nuttx/usb/usbhost_devaddr.h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uvdbg("Enumerate the device\n");
|
usbhost_vtrace2(EHCI_VTRACE2_CLASSENUM, rhpndx+1, rhpndx+1);
|
||||||
return usbhost_enumerate(&g_ehci.rhport[rhpndx].drvr, rhpndx+1, &rhport->class);
|
ret = usbhost_enumerate(&g_ehci.rhport[rhpndx].drvr, rhpndx+1, &rhport->class);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
usbhost_trace2(EHCI_TRACE2_CLASSENUM_FAILED, rhpndx+1, -ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
@ -3390,9 +3421,16 @@ static int sam_epalloc(FAR struct usbhost_driver_s *drvr,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
DEBUGASSERT(drvr && epdesc && ep);
|
DEBUGASSERT(drvr && epdesc && ep);
|
||||||
|
|
||||||
|
/* Terse output only if we are tracing */
|
||||||
|
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE
|
||||||
|
usbhost_vtrace2(EHCI_VTRACE2_EPALLOC, epdesc->addr, epdesc->xfrtype);
|
||||||
|
#else
|
||||||
uvdbg("EP%d DIR=%s FA=%08x TYPE=%d Interval=%d MaxPacket=%d\n",
|
uvdbg("EP%d DIR=%s FA=%08x TYPE=%d Interval=%d MaxPacket=%d\n",
|
||||||
epdesc->addr, epdesc->in ? "IN" : "OUT", epdesc->funcaddr,
|
epdesc->addr, epdesc->in ? "IN" : "OUT", epdesc->funcaddr,
|
||||||
epdesc->xfrtype, epdesc->interval, epdesc->mxpacketsize);
|
epdesc->xfrtype, epdesc->interval, epdesc->mxpacketsize);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Allocate a endpoint information structure */
|
/* Allocate a endpoint information structure */
|
||||||
|
|
||||||
@ -3665,9 +3703,16 @@ static int sam_ctrlin(FAR struct usbhost_driver_s *drvr,
|
|||||||
DEBUGASSERT(rhport && req);
|
DEBUGASSERT(rhport && req);
|
||||||
|
|
||||||
len = sam_read16(req->len);
|
len = sam_read16(req->len);
|
||||||
|
|
||||||
|
/* Terse output only if we are tracing */
|
||||||
|
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE
|
||||||
|
usbhost_vtrace2(EHCI_VTRACE2_CTRLINOUT, rhport->rhpndx + 1, req->req);
|
||||||
|
#else
|
||||||
uvdbg("RHPort%d type: %02x req: %02x value: %02x%02x index: %02x%02x len: %04x\n",
|
uvdbg("RHPort%d type: %02x req: %02x value: %02x%02x index: %02x%02x len: %04x\n",
|
||||||
rhport->rhpndx + 1, req->type, req->req, req->value[1], req->value[0],
|
rhport->rhpndx + 1, req->type, req->req, req->value[1], req->value[0],
|
||||||
req->index[1], req->index[0], len);
|
req->index[1], req->index[0], len);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* We must have exclusive access to the EHCI hardware and data structures. */
|
/* We must have exclusive access to the EHCI hardware and data structures. */
|
||||||
|
|
||||||
@ -4032,7 +4077,7 @@ FAR struct usbhost_connection_s *sam_ehci_initialize(int controller)
|
|||||||
|
|
||||||
/* Software Configuration ****************************************************/
|
/* Software Configuration ****************************************************/
|
||||||
|
|
||||||
uvdbg("Initializing EHCI Stack\n");
|
usbhost_vtrace1(EHCI_VTRACE1_INITIALIZING, 0);
|
||||||
|
|
||||||
/* Initialize the EHCI state data structure */
|
/* Initialize the EHCI state data structure */
|
||||||
|
|
||||||
@ -4181,20 +4226,20 @@ FAR struct usbhost_connection_s *sam_ehci_initialize(int controller)
|
|||||||
/* Show the EHCI version */
|
/* Show the EHCI version */
|
||||||
|
|
||||||
regval16 = sam_swap16(HCCR->hciversion);
|
regval16 = sam_swap16(HCCR->hciversion);
|
||||||
uvdbg("HCIVERSION %x.%02x\n", regval16 >> 8, regval16 & 0xff);
|
usbhost_vtrace2(EHCI_VTRACE2_HCIVERSION, regval16 >> 8, regval16 & 0xff);
|
||||||
|
|
||||||
/* Verify that the correct number of ports is reported */
|
/* Verify that the correct number of ports is reported */
|
||||||
|
|
||||||
regval = sam_getreg(&HCCR->hcsparams);
|
regval = sam_getreg(&HCCR->hcsparams);
|
||||||
nports = (regval & EHCI_HCSPARAMS_NPORTS_MASK) >> EHCI_HCSPARAMS_NPORTS_SHIFT;
|
nports = (regval & EHCI_HCSPARAMS_NPORTS_MASK) >> EHCI_HCSPARAMS_NPORTS_SHIFT;
|
||||||
|
|
||||||
uvdbg("HCSPARAMS=%08x nports=%d\n", regval, nports);
|
usbhost_vtrace2(EHCI_VTRACE2_HCSPARAMS, nports, regval);
|
||||||
DEBUGASSERT(nports == SAM_EHCI_NRHPORT);
|
DEBUGASSERT(nports == SAM_EHCI_NRHPORT);
|
||||||
|
|
||||||
/* Show the HCCPARAMS register */
|
/* Show the HCCPARAMS register */
|
||||||
|
|
||||||
regval = sam_getreg(&HCCR->hccparams);
|
regval = sam_getreg(&HCCR->hccparams);
|
||||||
uvdbg("HCCPARAMS=%08x\n", regval);
|
usbhost_vtrace1(EHCI_VTRACE1_HCCPARAMS, regval);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Initialize the head of the asynchronous queue/reclamation list.
|
/* Initialize the head of the asynchronous queue/reclamation list.
|
||||||
@ -4363,7 +4408,7 @@ FAR struct usbhost_connection_s *sam_ehci_initialize(int controller)
|
|||||||
/* Enable interrupts at the interrupt controller */
|
/* Enable interrupts at the interrupt controller */
|
||||||
|
|
||||||
up_enable_irq(SAM_IRQ_UHPHS); /* enable USB interrupt */
|
up_enable_irq(SAM_IRQ_UHPHS); /* enable USB interrupt */
|
||||||
uvdbg("USB EHCI Initialized\n");
|
usbhost_vtrace1(EHCI_VTRACE1_INIITIALIZED, 0);
|
||||||
|
|
||||||
/* Initialize and return the connection interface */
|
/* Initialize and return the connection interface */
|
||||||
|
|
||||||
|
@ -86,6 +86,12 @@ struct sam_usbhost_trace_s
|
|||||||
|
|
||||||
static const struct sam_usbhost_trace_s g_trace1[TRACE1_NSTRINGS] =
|
static const struct sam_usbhost_trace_s g_trace1[TRACE1_NSTRINGS] =
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_SAMA5_OHCI
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE_VERBOSE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SAMA5_EHCI
|
||||||
TRENTRY(EHCI_TRACE1_SYSTEMERROR, TR_EHCI, TR_FMT1, "EHCI ERROR: System error: %06x\n"),
|
TRENTRY(EHCI_TRACE1_SYSTEMERROR, TR_EHCI, TR_FMT1, "EHCI ERROR: System error: %06x\n"),
|
||||||
TRENTRY(EHCI_TRACE1_QTDFOREACH_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: sam_qtd_foreach failed: %d\n"),
|
TRENTRY(EHCI_TRACE1_QTDFOREACH_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: sam_qtd_foreach failed: %d\n"),
|
||||||
TRENTRY(EHCI_TRACE1_QHALLOC_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: Failed to allocate a QH\n"),
|
TRENTRY(EHCI_TRACE1_QHALLOC_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: Failed to allocate a QH\n"),
|
||||||
@ -101,7 +107,7 @@ static const struct sam_usbhost_trace_s g_trace1[TRACE1_NSTRINGS] =
|
|||||||
TRENTRY(EHCI_TRACE1_TRANSFER_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: Transfer failed %d\n"),
|
TRENTRY(EHCI_TRACE1_TRANSFER_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: Transfer failed %d\n"),
|
||||||
TRENTRY(EHCI_TRACE1_QHFOREACH_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: sam_qh_foreach failed: %d\n"),
|
TRENTRY(EHCI_TRACE1_QHFOREACH_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: sam_qh_foreach failed: %d\n"),
|
||||||
TRENTRY(EHCI_TRACE1_SYSERR_INTR, TR_EHCI, TR_FMT1, "EHCI: Host System Error Interrupt\n"),
|
TRENTRY(EHCI_TRACE1_SYSERR_INTR, TR_EHCI, TR_FMT1, "EHCI: Host System Error Interrupt\n"),
|
||||||
TRENTRY(EHCI_TRACE1_USBERR_INTR, TR_EHCI, TR_FMT1, "EHCI: USB Error Interrupt (USBERRINT) Interrupt\n"),
|
TRENTRY(EHCI_TRACE1_USBERR_INTR, TR_EHCI, TR_FMT1, "EHCI: USB Error Interrupt (USBERRINT) Interrupt: %06x\n"),
|
||||||
TRENTRY(EHCI_TRACE1_EPALLOC_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: Failed to allocate EP info structure\n"),
|
TRENTRY(EHCI_TRACE1_EPALLOC_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: Failed to allocate EP info structure\n"),
|
||||||
TRENTRY(EHCI_TRACE1_BADXFRTYPE, TR_EHCI, TR_FMT1, "EHCI ERROR: Support for transfer type %d not implemented\n"),
|
TRENTRY(EHCI_TRACE1_BADXFRTYPE, TR_EHCI, TR_FMT1, "EHCI ERROR: Support for transfer type %d not implemented\n"),
|
||||||
TRENTRY(EHCI_TRACE1_HCHALTED_TIMEOUT, TR_EHCI, TR_FMT1, "EHCI ERROR: Timed out waiting for HCHalted. USBSTS: %06x\n"),
|
TRENTRY(EHCI_TRACE1_HCHALTED_TIMEOUT, TR_EHCI, TR_FMT1, "EHCI ERROR: Timed out waiting for HCHalted. USBSTS: %06x\n"),
|
||||||
@ -111,12 +117,48 @@ static const struct sam_usbhost_trace_s g_trace1[TRACE1_NSTRINGS] =
|
|||||||
TRENTRY(EHCI_TRACE1_RESET_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: sam_reset failed: %d\n"),
|
TRENTRY(EHCI_TRACE1_RESET_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: sam_reset failed: %d\n"),
|
||||||
TRENTRY(EHCI_TRACE1_RUN_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: EHCI Failed to run: USBSTS=%08x\n"),
|
TRENTRY(EHCI_TRACE1_RUN_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: EHCI Failed to run: USBSTS=%08x\n"),
|
||||||
TRENTRY(EHCI_TRACE1_IRQATTACH_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: Failed to attach IRQ%d\n"),
|
TRENTRY(EHCI_TRACE1_IRQATTACH_FAILED, TR_EHCI, TR_FMT1, "EHCI ERROR: Failed to attach IRQ%d\n"),
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE_VERBOSE
|
||||||
|
TRENTRY(EHCI_VTRACE1_PORTSC_CSC, TR_EHCI, TR_FMT1, "EHCI Connect Status Change: %06x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_PORTSC_CONNALREADY, TR_EHCI, TR_FMT1, "EHCI Already connected: %06x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_PORTSC_DISCALREADY, TR_EHCI, TR_FMT1, "EHCI Already disconnected: %06x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_TOPHALF, TR_EHCI, TR_FMT1, "EHCI Interrupt: %06x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_AAINTR, TR_EHCI, TR_FMT1, "EHCI Async Advance Interrupt\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_USBINTR, TR_EHCI, TR_FMT1, "EHCI USB Interrupt (USBINT) Interrupt: %06x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_ENUM_DISCONN, TR_EHCI, TR_FMT1, "EHCI Enumeration not connected\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_INITIALIZING, TR_EHCI, TR_FMT1, "EHCI Initializing EHCI Stack\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_HCCPARAMS, TR_EHCI, TR_FMT1, "EHCI HCCPARAMS=%06x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE1_INIITIALIZED, TR_EHCI, TR_FMT1, "EHCI USB EHCI Initialized\n"),
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct sam_usbhost_trace_s g_trace2[TRACE2_NSTRINGS] =
|
static const struct sam_usbhost_trace_s g_trace2[TRACE2_NSTRINGS] =
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_SAMA5_OHCI
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE_VERBOSE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SAMA5_EHCI
|
||||||
TRENTRY(EHCI_TRACE2_EPSTALLED, TR_EHCI, TR_FMT2, "EHCI EP%d Stalled: TOKEN=%08x\n"),
|
TRENTRY(EHCI_TRACE2_EPSTALLED, TR_EHCI, TR_FMT2, "EHCI EP%d Stalled: TOKEN=%08x\n"),
|
||||||
TRENTRY(EHCI_TRACE2_EPIOERROR, TR_EHCI, TR_FMT2, "EHCI ERROR: EP%d TOKEN=%08x\n"),
|
TRENTRY(EHCI_TRACE2_EPIOERROR, TR_EHCI, TR_FMT2, "EHCI ERROR: EP%d TOKEN=%08x\n"),
|
||||||
|
TRENTRY(EHCI_TRACE2_CLASSENUM_FAILED, TR_EHCI, TR_FMT2, "EHCI RHport%d usbhost_enumerate() failed: %d\n"),
|
||||||
|
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE_VERBOSE
|
||||||
|
TRENTRY(EHCI_VTRACE2_ASYNCXFR, TR_EHCI, TR_FMT2, "EHCI Async transfer EP%d buflen=%d\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_INTRXFR, TR_EHCI, TR_FMT2, "EHCI Intr Transfer EP%d buflen=%d\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_IOCCHECK, TR_EHCI, TR_FMT2, "EHCI IOC EP%d TOKEN=%04x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_PORTSC, TR_EHCI, TR_FMT2, "EHCI PORTSC%d: %04x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_PORTSC_CONNECTED, TR_EHCI, TR_FMT2, "EHCI RHPort%d connected, pscwait: %d\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_PORTSC_DISCONND, TR_EHCI, TR_FMT2, "EHCI RHport%d disconnected, pscwait: %d\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_MONWAKEUP, TR_EHCI, TR_FMT2, "EHCI RHPort%d connected: %d\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_CLASSENUM, TR_EHCI, TR_FMT2, "EHCI RHPort%d: Enumerate the device, devaddr=%02x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_EPALLOC, TR_EHCI, TR_FMT2, "EHCI EPALLOC: EP%d TYPE=%d\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_CTRLINOUT, TR_EHCI, TR_FMT2, "EHCI CTRLIN/OUT: RHPort%d req: %02x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_HCIVERSION, TR_EHCI, TR_FMT2, "EHCI HCIVERSION %x.%02x\n"),
|
||||||
|
TRENTRY(EHCI_VTRACE2_HCSPARAMS, TR_EHCI, TR_FMT2, "EHCI nports=%d, HCSPARAMS=%06x\n"),
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/********************************************************************************************
|
/********************************************************************************************
|
||||||
|
@ -68,6 +68,12 @@
|
|||||||
|
|
||||||
enum usbhost_trace1codes_e
|
enum usbhost_trace1codes_e
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_SAMA5_OHCI
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE_VERBOSE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SAMA5_EHCI
|
||||||
EHCI_TRACE1_SYSTEMERROR = 0, /* EHCI ERROR: System error */
|
EHCI_TRACE1_SYSTEMERROR = 0, /* EHCI ERROR: System error */
|
||||||
EHCI_TRACE1_QTDFOREACH_FAILED, /* EHCI ERROR: sam_qtd_foreach failed */
|
EHCI_TRACE1_QTDFOREACH_FAILED, /* EHCI ERROR: sam_qtd_foreach failed */
|
||||||
EHCI_TRACE1_QHALLOC_FAILED, /* EHCI ERROR: Failed to allocate a QH */
|
EHCI_TRACE1_QHALLOC_FAILED, /* EHCI ERROR: Failed to allocate a QH */
|
||||||
@ -91,13 +97,50 @@ enum usbhost_trace1codes_e
|
|||||||
EHCI_TRACE1_QTDPOOLALLOC_FAILED, /* EHCI ERROR: Failed to allocate the qTD pool */
|
EHCI_TRACE1_QTDPOOLALLOC_FAILED, /* EHCI ERROR: Failed to allocate the qTD pool */
|
||||||
EHCI_TRACE1_PERFLALLOC_FAILED, /* EHCI ERROR: Failed to allocate the periodic frame list */
|
EHCI_TRACE1_PERFLALLOC_FAILED, /* EHCI ERROR: Failed to allocate the periodic frame list */
|
||||||
EHCI_TRACE1_RESET_FAILED, /* EHCI ERROR: sam_reset failed */
|
EHCI_TRACE1_RESET_FAILED, /* EHCI ERROR: sam_reset failed */
|
||||||
EHCI_TRACE1_RUN_FAILED, /* EHCI ERROR: EHCI Failed to run: USBSTS=%08x */
|
EHCI_TRACE1_RUN_FAILED, /* EHCI ERROR: EHCI Failed to run */
|
||||||
EHCI_TRACE1_IRQATTACH_FAILED, /* EHCI ERROR: Failed to attach IRQ%d */
|
EHCI_TRACE1_IRQATTACH_FAILED, /* EHCI ERROR: Failed to attach IRQ */
|
||||||
|
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE_VERBOSE
|
||||||
|
EHCI_VTRACE1_PORTSC_CSC, /* EHCI Connect Status Change */
|
||||||
|
EHCI_VTRACE1_PORTSC_CONNALREADY, /* EHCI Already connected */
|
||||||
|
EHCI_VTRACE1_PORTSC_DISCALREADY, /* EHCI Already disconnected */
|
||||||
|
EHCI_VTRACE1_TOPHALF, /* EHCI Interrupt top half */
|
||||||
|
EHCI_VTRACE1_AAINTR, /* EHCI Async Advance Interrupt */
|
||||||
|
EHCI_VTRACE1_USBINTR, /* EHCI USB Interrupt (USBINT) Interrupt */
|
||||||
|
EHCI_VTRACE1_ENUM_DISCONN, /* EHCI Enumeration not connected */
|
||||||
|
EHCI_VTRACE1_INITIALIZING, /* EHCI Initializing EHCI Stack */
|
||||||
|
EHCI_VTRACE1_HCCPARAMS, /* EHCI HCCPARAMS */
|
||||||
|
EHCI_VTRACE1_INIITIALIZED, /* EHCI USB EHCI Initialized */
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
__TRACE1_NSTRINGS,
|
__TRACE1_NSTRINGS,
|
||||||
|
|
||||||
|
#ifdef CONFIG_SAMA5_OHCI
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE_VERBOSE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SAMA5_EHCI
|
||||||
EHCI_TRACE2_EPSTALLED, /* EHCI EP Stalled */
|
EHCI_TRACE2_EPSTALLED, /* EHCI EP Stalled */
|
||||||
EHCI_TRACE2_EPIOERROR, /* EHCI ERROR: EP TOKEN */
|
EHCI_TRACE2_EPIOERROR, /* EHCI ERROR: EP TOKEN */
|
||||||
|
EHCI_TRACE2_CLASSENUM_FAILED, /* EHCI usbhost_enumerate() failed */
|
||||||
|
|
||||||
|
#ifdef CONFIG_USBHOST_TRACE_VERBOSE
|
||||||
|
EHCI_VTRACE2_ASYNCXFR, /* EHCI Async transfer */
|
||||||
|
EHCI_VTRACE2_INTRXFR, /* EHCI Interrupt Transfer */
|
||||||
|
EHCI_VTRACE2_IOCCHECK, /* EHCI IOC */
|
||||||
|
EHCI_VTRACE2_PORTSC, /* EHCI PORTSC */
|
||||||
|
EHCI_VTRACE2_PORTSC_CONNECTED, /* EHCI RHPort connected */
|
||||||
|
EHCI_VTRACE2_PORTSC_DISCONND, /* EHCI RHport disconnected */
|
||||||
|
EHCI_VTRACE2_MONWAKEUP, /* EHCI RHPort connected wakeup */
|
||||||
|
EHCI_VTRACE2_CLASSENUM, /* EHCI RHPort CLASS enumeration */
|
||||||
|
EHCI_VTRACE2_EPALLOC, /* EHCI EPALLOC */
|
||||||
|
EHCI_VTRACE2_CTRLINOUT, /* EHCI CTRLIN/OUT */
|
||||||
|
EHCI_VTRACE2_HCIVERSION, /* EHCI HCIVERSION */
|
||||||
|
EHCI_VTRACE2_HCSPARAMS, /* EHCI HCSPARAMS */
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
__TRACE2_NSTRINGS
|
__TRACE2_NSTRINGS
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user