EFM32 USB host: Add missing trace data and some missing connection-related logic; update a configuration
This commit is contained in:
parent
e4f538446b
commit
79029ebe2d
@ -57,6 +57,83 @@
|
||||
# define CONFIG_OTGFS_PRI NVIC_SYSH_PRIORITY_DEFAULT
|
||||
#endif
|
||||
|
||||
/************************************************************************************
|
||||
* Public Types
|
||||
************************************************************************************/
|
||||
|
||||
#if defined(HAVE_USBHOST_TRACE) && defined(CONFIG_EFM32_OTGFS)
|
||||
enum usbhost_trace1codes_e
|
||||
{
|
||||
__TRACE1_BASEVALUE = 0, /* This will force the first value to be 1 */
|
||||
|
||||
USBHOST_TRACE1_DEVDISCONN, /* OTGFS ERROR: Host Port Device disconnected */
|
||||
USBHOST_TRACE1_IRQATTACH, /* OTGFS ERROR: Failed to attach IRQ */
|
||||
USBHOST_TRACE1_TRNSFRFAILED, /* OTGFS ERROR: Host Port Transfer Failed */
|
||||
USBHOST_TRACE1_SENDSETUP, /* OTGFS ERROR: sendsetup() failed with: */
|
||||
USBHOST_TRACE1_SENDDATA, /* OTGFS ERROR: senddata() failed with: */
|
||||
USBHOST_TRACE1_RECVDATA, /* OTGFS ERROR: recvdata() failed with: */
|
||||
|
||||
#ifdef HAVE_USBHOST_TRACE_VERBOSE
|
||||
USBHOST_VTRACE1_CONNECTED, /* OTGFS Host Port connected */
|
||||
USBHOST_VTRACE1_DISCONNECTED, /* OTGFS Host Port disconnected */
|
||||
USBHOST_VTRACE1_GINT, /* OTGFS Handling Interrupt. Entry Point */
|
||||
USBHOST_VTRACE1_GINT_SOF, /* OTGFS Handle the start of frame interrupt */
|
||||
USBHOST_VTRACE1_GINT_RXFLVL, /* OTGFS Handle the RxFIFO non-empty interrupt */
|
||||
USBHOST_VTRACE1_GINT_NPTXFE, /* OTGFS Handle the non-periodic TxFIFO empty interrupt */
|
||||
USBHOST_VTRACE1_GINT_PTXFE, /* OTGFS Handle the periodic TxFIFO empty interrupt */
|
||||
USBHOST_VTRACE1_GINT_HC, /* OTGFS Handle the host channels interrupt */
|
||||
USBHOST_VTRACE1_GINT_HPRT, /* OTGFS Handle the host port interrupt */
|
||||
USBHOST_VTRACE1_GINT_HPRT_POCCHNG, /* OTGFS HPRT: Port Over-Current Change*/
|
||||
USBHOST_VTRACE1_GINT_HPRT_PCDET, /* OTGFS HPRT: Port Connect Detect */
|
||||
USBHOST_VTRACE1_GINT_HPRT_PENCHNG, /* OTGFS HPRT: Port Enable Changed */
|
||||
USBHOST_VTRACE1_GINT_HPRT_LSDEV, /* OTGFS HPRT: Low Speed Device Connected */
|
||||
USBHOST_VTRACE1_GINT_HPRT_FSDEV, /* OTGFS HPRT: Full Speed Device Connected */
|
||||
USBHOST_VTRACE1_GINT_HPRT_LSFSSW, /* OTGFS HPRT: Host Switch: LS -> FS */
|
||||
USBHOST_VTRACE1_GINT_HPRT_FSLSSW, /* OTGFS HPRT: Host Switch: FS -> LS */
|
||||
USBHOST_VTRACE1_GINT_DISC, /* OTGFS Handle the disconnect detected interrupt */
|
||||
USBHOST_VTRACE1_GINT_IPXFR, /* OTGFS Handle the incomplete periodic transfer */
|
||||
#endif
|
||||
|
||||
__TRACE1_NSTRINGS, /* Separates the format 1 from the format 2 strings */
|
||||
|
||||
USBHOST_TRACE2_CLIP, /* OTGFS CLIP: chidx: buflen: */
|
||||
|
||||
#ifdef HAVE_USBHOST_TRACE_VERBOSE
|
||||
USBHOST_VTRACE2_CHANWAKEUP_IN, /* OTGFS IN Channel wake up with result */
|
||||
USBHOST_VTRACE2_CHANWAKEUP_OUT, /* OTGFS OUT Channel wake up with result */
|
||||
USBHOST_VTRACE2_CTRLIN, /* OTGFS CTRLIN */
|
||||
USBHOST_VTRACE2_CTRLOUT, /* OTGFS CTRLOUT */
|
||||
USBHOST_VTRACE2_INTRIN, /* OTGFS INTRIN */
|
||||
USBHOST_VTRACE2_INTROUT, /* OTGFS INTROUT */
|
||||
USBHOST_VTRACE2_BULKIN, /* OTGFS BULKIN */
|
||||
USBHOST_VTRACE2_BULKOUT, /* OTGFS BULKOUT */
|
||||
USBHOST_VTRACE2_ISOCIN, /* OTGFS ISOCIN */
|
||||
USBHOST_VTRACE2_ISOCOUT, /* OTGFS ISOCOUT */
|
||||
USBHOST_VTRACE2_STARTTRANSFER, /* OTGFS EP buflen */
|
||||
USBHOST_VTRACE2_CHANCONF_CTRL_IN,
|
||||
USBHOST_VTRACE2_CHANCONF_CTRL_OUT,
|
||||
USBHOST_VTRACE2_CHANCONF_INTR_IN,
|
||||
USBHOST_VTRACE2_CHANCONF_INTR_OUT,
|
||||
USBHOST_VTRACE2_CHANCONF_BULK_IN,
|
||||
USBHOST_VTRACE2_CHANCONF_BULK_OUT,
|
||||
USBHOST_VTRACE2_CHANCONF_ISOC_IN,
|
||||
USBHOST_VTRACE2_CHANCONF_ISOC_OUT,
|
||||
USBHOST_VTRACE2_CHANHALT, /* Channel halted. chidx: , reason: */
|
||||
#endif
|
||||
|
||||
__TRACE2_NSTRINGS /* Total number of enumeration values */
|
||||
};
|
||||
|
||||
# define TRACE1_FIRST ((int)__TRACE1_BASEVALUE + 1)
|
||||
# define TRACE1_INDEX(id) ((int)(id) - TRACE1_FIRST)
|
||||
# define TRACE1_NSTRINGS TRACE1_INDEX(__TRACE1_NSTRINGS)
|
||||
|
||||
# define TRACE2_FIRST ((int)__TRACE1_NSTRINGS + 1)
|
||||
# define TRACE2_INDEX(id) ((int)(id) - TRACE2_FIRST)
|
||||
# define TRACE2_NSTRINGS TRACE2_INDEX(__TRACE2_NSTRINGS)
|
||||
|
||||
#endif /* HAVE_USBHOST_TRACE && CONFIG_EFM32_OTGFS */
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
************************************************************************************/
|
||||
|
@ -157,6 +157,13 @@
|
||||
# define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
/* Tracing *********************************************************************/
|
||||
|
||||
#define TR_FMT1 false
|
||||
#define TR_FMT2 true
|
||||
|
||||
#define TRENTRY(id,fmt1,string) {string}
|
||||
|
||||
/*******************************************************************************
|
||||
* Private Types
|
||||
*******************************************************************************/
|
||||
@ -270,6 +277,19 @@ struct efm32_usbhost_s
|
||||
struct efm32_chan_s chan[EFM32_MAX_TX_FIFOS];
|
||||
};
|
||||
|
||||
#ifdef HAVE_USBHOST_TRACE
|
||||
/* Format of one trace entry */
|
||||
|
||||
struct stm32_usbhost_trace_s
|
||||
{
|
||||
#if 0
|
||||
uint16_t id;
|
||||
bool fmt2;
|
||||
#endif
|
||||
FAR const char *string;
|
||||
};
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
* Private Function Prototypes
|
||||
*******************************************************************************/
|
||||
@ -479,6 +499,69 @@ static struct usbhost_connection_s g_usbconn =
|
||||
.enumerate = efm32_enumerate,
|
||||
};
|
||||
|
||||
#ifdef HAVE_USBHOST_TRACE
|
||||
/* Trace strings */
|
||||
|
||||
static const struct stm32_usbhost_trace_s g_trace1[TRACE1_NSTRINGS] =
|
||||
{
|
||||
TRENTRY(USBHOST_TRACE1_DEVDISCONN, TR_FMT1, "OTGFS ERROR: Host Port %d. Device disconnected\n"),
|
||||
TRENTRY(USBHOST_TRACE1_IRQATTACH, TR_FMT1, "OTGFS ERROR: Failed to attach IRQ\n"),
|
||||
TRENTRY(USBHOST_TRACE1_TRNSFRFAILED, TR_FMT1, "OTGFS ERROR: Transfer Failed. ret=%d\n"),
|
||||
TRENTRY(USBHOST_TRACE1_SENDSETUP, TR_FMT1, "OTGFS ERROR: ctrl_sendsetup() failed with: %d\n"),
|
||||
TRENTRY(USBHOST_TRACE1_SENDDATA, TR_FMT1, "OTGFS ERROR: ctrl_senddata() failed with: %d\n"),
|
||||
TRENTRY(USBHOST_TRACE1_RECVDATA, TR_FMT1, "OTGFS ERROR: ctrl_recvdata() failed with: %d\n"),
|
||||
|
||||
#ifdef HAVE_USBHOST_TRACE_VERBOSE
|
||||
TRENTRY(USBHOST_VTRACE1_CONNECTED, TR_FMT1, "OTGFS Host Port %d connected.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_DISCONNECTED, TR_FMT1, "OTGFS Host Port %d disconnected.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT, TR_FMT1, "OTGFS Handling Interrupt. Entry Point.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_SOF, TR_FMT1, "OTGFS Handle the start of frame interrupt.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_RXFLVL, TR_FMT1, "OTGFS Handle the RxFIFO non-empty interrupt.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_NPTXFE, TR_FMT1, "OTGFS Handle the non-periodic TxFIFO empty interrupt.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_PTXFE, TR_FMT1, "OTGFS Handle the periodic TxFIFO empty interrupt.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HC, TR_FMT1, "OTGFS Handle the host channels interrupt.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HPRT, TR_FMT1, "OTGFS Handle the host port interrupt.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HPRT_POCCHNG, TR_FMT1, "OTGFS HPRT: Port Over-Current Change.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HPRT_PCDET, TR_FMT1, "OTGFS HPRT: Port Connect Detect.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HPRT_PENCHNG, TR_FMT1, "OTGFS HPRT: Port Enable Changed.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HPRT_LSDEV, TR_FMT1, "OTGFS HPRT: Low Speed Device Connected.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HPRT_FSDEV, TR_FMT1, "OTGFS HPRT: Full Speed Device Connected.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HPRT_LSFSSW, TR_FMT1, "OTGFS HPRT: Host Switch: LS -> FS.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_HPRT_FSLSSW, TR_FMT1, "OTGFS HPRT: Host Switch: FS -> LS.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_DISC, TR_FMT1, "OTGFS Handle the disconnect detected interrupt.\n"),
|
||||
TRENTRY(USBHOST_VTRACE1_GINT_IPXFR, TR_FMT1, "OTGFS Handle the incomplete periodic transfer.\n"),
|
||||
#endif
|
||||
};
|
||||
|
||||
static const struct stm32_usbhost_trace_s g_trace2[TRACE2_NSTRINGS] =
|
||||
{
|
||||
TRENTRY(USBHOST_TRACE2_CLIP, TR_FMT2, "OTGFS CLIP: chidx: %d buflen: %d\n"),
|
||||
|
||||
#ifdef HAVE_USBHOST_TRACE_VERBOSE
|
||||
TRENTRY(USBHOST_VTRACE2_CHANWAKEUP_IN, TR_FMT2, "OTGFS EP%d(IN) wake up with result: %d\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANWAKEUP_OUT, TR_FMT2, "OTGFS EP%d(OUT) wake up with result: %d\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CTRLIN, TR_FMT2, "OTGFS CTRL_IN type: %02x req: %02x\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CTRLOUT, TR_FMT2, "OTGFS CTRL_OUT type: %02x req: %02x\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_INTRIN, TR_FMT2, "OTGFS INTR_IN chidx: %02x len: %02x\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_INTROUT, TR_FMT2, "OTGFS INTR_OUT chidx: %02x len: %02x\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_BULKIN, TR_FMT2, "OTGFS BULK_IN chidx: %02x len: %02x\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_BULKOUT, TR_FMT2, "OTGFS BULK_OUT chidx: %02x len: %02x\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_ISOCIN, TR_FMT2, "OTGFS ISOC_IN chidx: %02x len: %04d\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_ISOCOUT, TR_FMT2, "OTGFS ISOC_OUT chidx: %02x req: %02x\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_STARTTRANSFER, TR_FMT2, "OTGFS Transfer chidx: %d buflen: %d\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANCONF_CTRL_IN, TR_FMT2, "OTGFS Channel configured. chidx: %d: (EP%d,IN ,CTRL)\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANCONF_CTRL_OUT, TR_FMT2, "OTGFS Channel configured. chidx: %d: (EP%d,OUT,CTRL)\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANCONF_INTR_IN, TR_FMT2, "OTGFS Channel configured. chidx: %d: (EP%d,IN ,INTR)\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANCONF_INTR_OUT, TR_FMT2, "OTGFS Channel configured. chidx: %d: (EP%d,OUT,INTR)\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANCONF_BULK_IN, TR_FMT2, "OTGFS Channel configured. chidx: %d: (EP%d,IN ,BULK)\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANCONF_BULK_OUT, TR_FMT2, "OTGFS Channel configured. chidx: %d: (EP%d,OUT,BULK)\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANCONF_ISOC_IN, TR_FMT2, "OTGFS Channel configured. chidx: %d: (EP%d,IN ,ISOC)\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANCONF_ISOC_OUT, TR_FMT2, "OTGFS Channel configured. chidx: %d: (EP%d,OUT,ISOC)\n"),
|
||||
TRENTRY(USBHOST_VTRACE2_CHANHALT, TR_FMT2, "OTGFS Channel halted. chidx: %d, reason: %d\n"),
|
||||
#endif
|
||||
};
|
||||
#endif /* HAVE_USBHOST_TRACE */
|
||||
|
||||
/*******************************************************************************
|
||||
* Public Data
|
||||
*******************************************************************************/
|
||||
@ -767,13 +850,13 @@ static void efm32_chan_configure(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
|
||||
if (chan->eptype == EFM32_USB_EPTYPE_CTRL)
|
||||
{
|
||||
intrace = OTGFS_VTRACE2_CHANCONF_CTRL_IN;
|
||||
outtrace = OTGFS_VTRACE2_CHANCONF_CTRL_OUT;
|
||||
intrace = USBHOST_VTRACE2_CHANCONF_CTRL_IN;
|
||||
outtrace = USBHOST_VTRACE2_CHANCONF_CTRL_OUT;
|
||||
}
|
||||
else
|
||||
{
|
||||
intrace = OTGFS_VTRACE2_CHANCONF_BULK_IN;
|
||||
outtrace = OTGFS_VTRACE2_CHANCONF_BULK_OUT;
|
||||
intrace = USBHOST_VTRACE2_CHANCONF_BULK_IN;
|
||||
outtrace = USBHOST_VTRACE2_CHANCONF_BULK_OUT;
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -809,14 +892,14 @@ static void efm32_chan_configure(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
|
||||
if (chan->in)
|
||||
{
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_CHANCONF_INTR_IN, chidx,
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_CHANCONF_INTR_IN, chidx,
|
||||
chan->epno);
|
||||
regval |= USB_HC_INTMSK_BBLERRMSK;
|
||||
}
|
||||
#ifdef HAVE_USBHOST_TRACE_VERBOSE
|
||||
else
|
||||
{
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_CHANCONF_INTR_OUT, chidx,
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_CHANCONF_INTR_OUT, chidx,
|
||||
chan->epno);
|
||||
}
|
||||
#endif
|
||||
@ -834,14 +917,14 @@ static void efm32_chan_configure(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
|
||||
if (chan->in)
|
||||
{
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_CHANCONF_ISOC_IN, chidx,
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_CHANCONF_ISOC_IN, chidx,
|
||||
chan->epno);
|
||||
regval |= (USB_HC_INTMSK_XACTERRMSK | USB_HC_INTMSK_BBLERRMSK);
|
||||
}
|
||||
#ifdef HAVE_USBHOST_TRACE_VERBOSE
|
||||
else
|
||||
{
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_CHANCONF_ISOC_OUT, chidx,
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_CHANCONF_ISOC_OUT, chidx,
|
||||
chan->epno);
|
||||
}
|
||||
#endif
|
||||
@ -913,7 +996,7 @@ static void efm32_chan_halt(FAR struct efm32_usbhost_s *priv, int chidx,
|
||||
* handling logic to know what to do next.
|
||||
*/
|
||||
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_CHANHALT, chidx, chreason);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_CHANHALT, chidx, chreason);
|
||||
|
||||
priv->chan[chidx].chreason = (uint8_t)chreason;
|
||||
|
||||
@ -1144,8 +1227,8 @@ static void efm32_chan_wakeup(FAR struct efm32_usbhost_s *priv,
|
||||
#endif
|
||||
/* Wake'em up! */
|
||||
|
||||
usbhost_vtrace2(chan->in ? OTGFS_VTRACE2_CHANWAKEUP_IN :
|
||||
OTGFS_VTRACE2_CHANWAKEUP_OUT,
|
||||
usbhost_vtrace2(chan->in ? USBHOST_VTRACE2_CHANWAKEUP_IN :
|
||||
USBHOST_VTRACE2_CHANWAKEUP_OUT,
|
||||
chan->epno, chan->result);
|
||||
|
||||
efm32_givesem(&chan->waitsem);
|
||||
@ -1392,7 +1475,7 @@ static void efm32_transfer_start(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
|
||||
chan = &priv->chan[chidx];
|
||||
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_STARTTRANSFER, chidx, chan->buflen);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_STARTTRANSFER, chidx, chan->buflen);
|
||||
|
||||
chan->result = EBUSY;
|
||||
chan->inflight = 0;
|
||||
@ -1422,7 +1505,7 @@ static void efm32_transfer_start(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
{
|
||||
npackets = EFM32_MAX_PKTCOUNT;
|
||||
chan->buflen = EFM32_MAX_PKTCOUNT * maxpacket;
|
||||
usbhost_trace2(USB_TRACE2_CLIP, chidx, chan->buflen);
|
||||
usbhost_trace2(USBHOST_TRACE2_CLIP, chidx, chan->buflen);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1611,7 +1694,7 @@ static int efm32_ctrl_sendsetup(FAR struct efm32_usbhost_s *priv,
|
||||
ret = efm32_chan_waitsetup(priv, chan);
|
||||
if (ret != OK)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_DEVDISCONN, 0);
|
||||
usbhost_trace1(USBHOST_TRACE1_DEVDISCONN, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1634,7 +1717,7 @@ static int efm32_ctrl_sendsetup(FAR struct efm32_usbhost_s *priv,
|
||||
|
||||
if (ret < 0)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_TRNSFRFAILED, ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_TRNSFRFAILED, ret);
|
||||
}
|
||||
|
||||
/* Return the result in any event */
|
||||
@ -1690,7 +1773,7 @@ static int efm32_ctrl_senddata(FAR struct efm32_usbhost_s *priv,
|
||||
ret = efm32_chan_waitsetup(priv, chan);
|
||||
if (ret != OK)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_DEVDISCONN, 0);
|
||||
usbhost_trace1(USBHOST_TRACE1_DEVDISCONN, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1730,7 +1813,7 @@ static int efm32_ctrl_recvdata(FAR struct efm32_usbhost_s *priv,
|
||||
ret = efm32_chan_waitsetup(priv, chan);
|
||||
if (ret != OK)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_DEVDISCONN, 0);
|
||||
usbhost_trace1(USBHOST_TRACE1_DEVDISCONN, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1774,7 +1857,7 @@ static int efm32_in_setup(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
{
|
||||
/* Set up the IN data PID */
|
||||
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_ISOCIN, chidx, chan->buflen);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_ISOCIN, chidx, chan->buflen);
|
||||
chan->pid = EFM32_USB_PID_DATA0;
|
||||
}
|
||||
break;
|
||||
@ -1783,7 +1866,7 @@ static int efm32_in_setup(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
{
|
||||
/* Setup the IN data PID */
|
||||
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_BULKIN, chidx, chan->buflen);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_BULKIN, chidx, chan->buflen);
|
||||
chan->pid = chan->indata1 ? EFM32_USB_PID_DATA1 : EFM32_USB_PID_DATA0;
|
||||
}
|
||||
break;
|
||||
@ -1792,7 +1875,7 @@ static int efm32_in_setup(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
{
|
||||
/* Setup the IN data PID */
|
||||
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_INTRIN, chidx, chan->buflen);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_INTRIN, chidx, chan->buflen);
|
||||
chan->pid = chan->indata1 ? EFM32_USB_PID_DATA1 : EFM32_USB_PID_DATA0;
|
||||
}
|
||||
break;
|
||||
@ -1836,7 +1919,7 @@ static int efm32_in_transfer(FAR struct efm32_usbhost_s *priv, int chidx,
|
||||
ret = efm32_chan_waitsetup(priv, chan);
|
||||
if (ret != OK)
|
||||
{
|
||||
usbhost_trace1(OTGFS_TRACE1_DEVDISCONN, 0);
|
||||
usbhost_trace1(USBHOST_TRACE1_DEVDISCONN, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1860,7 +1943,7 @@ static int efm32_in_transfer(FAR struct efm32_usbhost_s *priv, int chidx,
|
||||
|
||||
if (ret != OK)
|
||||
{
|
||||
usbhost_trace1(OTGFS_TRACE1_TRNSFRFAILED,ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_TRNSFRFAILED,ret);
|
||||
|
||||
/* Check for a special case: If (1) the transfer was NAKed and (2)
|
||||
* no Tx FIFO empty or Rx FIFO not-empty event occurred, then we
|
||||
@ -2017,7 +2100,7 @@ static int efm32_out_setup(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
{
|
||||
/* Set up the OUT data PID */
|
||||
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_ISOCOUT, chidx, chan->buflen);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_ISOCOUT, chidx, chan->buflen);
|
||||
chan->pid = EFM32_USB_PID_DATA0;
|
||||
}
|
||||
break;
|
||||
@ -2026,7 +2109,7 @@ static int efm32_out_setup(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
{
|
||||
/* Setup the OUT data PID */
|
||||
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_BULKOUT, chidx, chan->buflen);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_BULKOUT, chidx, chan->buflen);
|
||||
chan->pid = chan->outdata1 ? EFM32_USB_PID_DATA1 : EFM32_USB_PID_DATA0;
|
||||
}
|
||||
break;
|
||||
@ -2035,7 +2118,7 @@ static int efm32_out_setup(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
{
|
||||
/* Setup the OUT data PID */
|
||||
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_INTROUT, chidx, chan->buflen);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_INTROUT, chidx, chan->buflen);
|
||||
chan->pid = chan->outdata1 ? EFM32_USB_PID_DATA1 : EFM32_USB_PID_DATA0;
|
||||
|
||||
/* Toggle the OUT data PID for the next transfer */
|
||||
@ -2091,7 +2174,7 @@ static int efm32_out_transfer(FAR struct efm32_usbhost_s *priv, int chidx,
|
||||
ret = efm32_chan_waitsetup(priv, chan);
|
||||
if (ret != OK)
|
||||
{
|
||||
usbhost_trace1(OTGFS_TRACE1_DEVDISCONN,0);
|
||||
usbhost_trace1(USBHOST_TRACE1_DEVDISCONN,0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2112,7 +2195,7 @@ static int efm32_out_transfer(FAR struct efm32_usbhost_s *priv, int chidx,
|
||||
|
||||
if (ret != OK)
|
||||
{
|
||||
usbhost_trace1(OTGFS_TRACE1_TRNSFRFAILED,ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_TRNSFRFAILED,ret);
|
||||
|
||||
/* Check for a special case: If (1) the transfer was NAKed and (2)
|
||||
* no Tx FIFO empty or Rx FIFO not-empty event occurred, then we
|
||||
@ -2135,7 +2218,7 @@ static int efm32_out_transfer(FAR struct efm32_usbhost_s *priv, int chidx,
|
||||
* data in the FIFO when the NAK occurs? Does it discard it?
|
||||
*/
|
||||
|
||||
efm32_flush_txfifos(OTGFS_GRSTCTL_TXFNUM_HALL);
|
||||
efm32_flush_txfifos(USB_GRSTCTL_TXFNUM_FALL);
|
||||
|
||||
/* Get the device a little time to catch up. Then retry the transfer
|
||||
* using the same buffer pointer and length.
|
||||
@ -2782,7 +2865,7 @@ static void efm32_gint_connected(FAR struct efm32_usbhost_s *priv)
|
||||
{
|
||||
/* Yes.. then now we are connected */
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_CONNECTED,0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_CONNECTED,0);
|
||||
priv->connected = true;
|
||||
priv->change = true;
|
||||
DEBUGASSERT(priv->smstate == SMSTATE_DETACHED);
|
||||
@ -2814,7 +2897,7 @@ static void efm32_gint_disconnected(FAR struct efm32_usbhost_s *priv)
|
||||
{
|
||||
/* Yes.. then we no longer connected */
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_DISCONNECTED,0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_DISCONNECTED,0);
|
||||
|
||||
/* Are we bound to a class driver? */
|
||||
|
||||
@ -3206,7 +3289,7 @@ static inline void efm32_gint_hprtisr(FAR struct efm32_usbhost_s *priv)
|
||||
uint32_t newhprt;
|
||||
uint32_t hcfg;
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HPRT, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HPRT, 0);
|
||||
|
||||
/* Read the port status and control register (HPRT) */
|
||||
|
||||
@ -3226,7 +3309,7 @@ static inline void efm32_gint_hprtisr(FAR struct efm32_usbhost_s *priv)
|
||||
{
|
||||
/* Set up to clear the POCCHNG status in the new HPRT contents. */
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HPRT_POCCHNG, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HPRT_POCCHNG, 0);
|
||||
newhprt |= USB_HPRT_PRTOVRCURRCHNG;
|
||||
}
|
||||
|
||||
@ -3240,7 +3323,7 @@ static inline void efm32_gint_hprtisr(FAR struct efm32_usbhost_s *priv)
|
||||
* process the new connection event.
|
||||
*/
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HPRT_PCDET, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HPRT_PCDET, 0);
|
||||
newhprt |= USB_HPRT_PRTCONNDET;
|
||||
efm32_portreset(priv);
|
||||
efm32_gint_connected(priv);
|
||||
@ -3252,7 +3335,7 @@ static inline void efm32_gint_hprtisr(FAR struct efm32_usbhost_s *priv)
|
||||
{
|
||||
/* Set up to clear the PENCHNG status in the new HPRT contents. */
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HPRT_PENCHNG, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HPRT_PENCHNG, 0);
|
||||
newhprt |= USB_HPRT_PRTENCHNG;
|
||||
|
||||
/* Was the port enabled? */
|
||||
@ -3275,7 +3358,7 @@ static inline void efm32_gint_hprtisr(FAR struct efm32_usbhost_s *priv)
|
||||
{
|
||||
/* Set the Host Frame Interval Register for the 6KHz speed */
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HPRT_LSDEV, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HPRT_LSDEV, 0);
|
||||
efm32_putreg(EFM32_USB_HFIR, 6000);
|
||||
|
||||
/* Are we switching from FS to LS? */
|
||||
@ -3283,7 +3366,7 @@ static inline void efm32_gint_hprtisr(FAR struct efm32_usbhost_s *priv)
|
||||
if ((hcfg & _USB_HCFG_FSLSPCLKSEL_MASK) != USB_HCFG_FSLSPCLKSEL_DIV8)
|
||||
{
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HPRT_FSLSSW, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HPRT_FSLSSW, 0);
|
||||
/* Yes... configure for LS */
|
||||
|
||||
hcfg &= ~_USB_HCFG_FSLSPCLKSEL_MASK;
|
||||
@ -3298,7 +3381,7 @@ static inline void efm32_gint_hprtisr(FAR struct efm32_usbhost_s *priv)
|
||||
else /* if ((hprt & _USB_HPRT_PRTSPD_MASK) == USB_HPRT_PSPD_FS) */
|
||||
{
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HPRT_FSDEV, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HPRT_FSDEV, 0);
|
||||
efm32_putreg(EFM32_USB_HFIR, 48000);
|
||||
|
||||
/* Are we switching from LS to FS? */
|
||||
@ -3306,7 +3389,7 @@ static inline void efm32_gint_hprtisr(FAR struct efm32_usbhost_s *priv)
|
||||
if ((hcfg & _USB_HCFG_FSLSPCLKSEL_MASK) != USB_HCFG_FSLSPCLKSEL_DIV1)
|
||||
{
|
||||
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HPRT_LSFSSW, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HPRT_LSFSSW, 0);
|
||||
/* Yes... configure for FS */
|
||||
|
||||
hcfg &= ~_USB_HCFG_FSLSPCLKSEL_MASK;
|
||||
@ -3422,7 +3505,7 @@ static int efm32_gint_isr(int irq, FAR void *context)
|
||||
#ifdef CONFIG_EFM32_OTGFS_SOFINTR
|
||||
if ((pending & USB_GINTSTS_SOF) != 0)
|
||||
{
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_SOF, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_SOF, 0);
|
||||
efm32_gint_sofisr(priv);
|
||||
}
|
||||
#endif
|
||||
@ -3431,7 +3514,7 @@ static int efm32_gint_isr(int irq, FAR void *context)
|
||||
|
||||
if ((pending & USB_GINTSTS_RXFLVL) != 0)
|
||||
{
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_RXFLVL, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_RXFLVL, 0);
|
||||
efm32_gint_rxflvlisr(priv);
|
||||
}
|
||||
|
||||
@ -3439,7 +3522,7 @@ static int efm32_gint_isr(int irq, FAR void *context)
|
||||
|
||||
if ((pending & USB_GINTSTS_NPTXFEMP) != 0)
|
||||
{
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_NPTXFE, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_NPTXFE, 0);
|
||||
efm32_gint_nptxfeisr(priv);
|
||||
}
|
||||
|
||||
@ -3447,7 +3530,7 @@ static int efm32_gint_isr(int irq, FAR void *context)
|
||||
|
||||
if ((pending & USB_GINTSTS_PTXFEMP) != 0)
|
||||
{
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_PTXFE, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_PTXFE, 0);
|
||||
efm32_gint_ptxfeisr(priv);
|
||||
}
|
||||
|
||||
@ -3455,7 +3538,7 @@ static int efm32_gint_isr(int irq, FAR void *context)
|
||||
|
||||
if ((pending & USB_GINTSTS_HCHINT) != 0)
|
||||
{
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_HC, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_HC, 0);
|
||||
efm32_gint_hcisr(priv);
|
||||
}
|
||||
|
||||
@ -3470,7 +3553,7 @@ static int efm32_gint_isr(int irq, FAR void *context)
|
||||
|
||||
if ((pending & USB_GINTSTS_DISCONNINT) != 0)
|
||||
{
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_DISC, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_DISC, 0);
|
||||
efm32_gint_discisr(priv);
|
||||
}
|
||||
|
||||
@ -3478,7 +3561,7 @@ static int efm32_gint_isr(int irq, FAR void *context)
|
||||
|
||||
if ((pending & USB_GINTSTS_INCOMPLP) != 0)
|
||||
{
|
||||
usbhost_vtrace1(OTGFS_VTRACE1_GINT_IPXFR, 0);
|
||||
usbhost_vtrace1(USBHOST_VTRACE1_GINT_IPXFR, 0);
|
||||
efm32_gint_ipxfrisr(priv);
|
||||
}
|
||||
}
|
||||
@ -3683,27 +3766,62 @@ static void efm32_txfe_enable(FAR struct efm32_usbhost_s *priv, int chidx)
|
||||
*******************************************************************************/
|
||||
|
||||
static int efm32_wait(FAR struct usbhost_connection_s *conn,
|
||||
FAR const bool *connected)
|
||||
FAR struct usbhost_hubport_s **hport)
|
||||
{
|
||||
FAR struct efm32_usbhost_s *priv = &g_usbhost;
|
||||
struct usbhost_hubport_s *connport;
|
||||
irqstate_t flags;
|
||||
|
||||
/* Are we already connected? */
|
||||
/* Loop until a change in connection state is detected */
|
||||
|
||||
flags = irqsave();
|
||||
while (priv->connected == *connected)
|
||||
for (;;)
|
||||
{
|
||||
/* No... wait for the connection/disconnection */
|
||||
/* Is there a change in the connection state of the single root hub
|
||||
* port?
|
||||
*/
|
||||
|
||||
if (priv->change)
|
||||
{
|
||||
connport = &priv->rhport.hport;
|
||||
|
||||
/* Yes. Remember the new state */
|
||||
|
||||
connport->connected = priv->connected;
|
||||
priv->change = false;
|
||||
|
||||
/* And return the root hub port */
|
||||
|
||||
*hport = connport;
|
||||
irqrestore(flags);
|
||||
|
||||
uvdbg("RHport Connected: %s\n", connport->connected ? "YES" : "NO");
|
||||
return OK;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USBHOST_HUB
|
||||
/* Is a device connected to an external hub? */
|
||||
|
||||
if (priv->hport)
|
||||
{
|
||||
/* Yes.. return the external hub port */
|
||||
|
||||
connport = (struct usbhost_hubport_s *)priv->hport;
|
||||
priv->hport = NULL;
|
||||
|
||||
*hport = connport;
|
||||
irqrestore(flags);
|
||||
|
||||
uvdbg("Hub port Connected: %s\n", connport->connected ? "YES" : "NO");
|
||||
return OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Wait for the next connection event */
|
||||
|
||||
priv->pscwait = true;
|
||||
efm32_takesem(&priv->pscsem);
|
||||
}
|
||||
|
||||
priv->change = false;
|
||||
irqrestore(flags);
|
||||
|
||||
uvdbg("Connected:%s\n", priv->connected ? "YES" : "NO");
|
||||
return OK;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@ -3751,7 +3869,7 @@ static int efm32_rh_enumerate(FAR struct efm32_usbhost_s *priv,
|
||||
{
|
||||
/* No, return an error */
|
||||
|
||||
usbhost_trace1(USB_TRACE1_DEVDISCONN,0);
|
||||
usbhost_trace1(USBHOST_TRACE1_DEVDISCONN,0);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@ -3925,10 +4043,7 @@ static int efm32_epalloc(FAR struct usbhost_driver_s *drvr,
|
||||
FAR const struct usbhost_epdesc_s *epdesc,
|
||||
FAR usbhost_ep_t *ep)
|
||||
{
|
||||
static int efm32_epalloc(FAR struct usbhost_driver_s *drvr,
|
||||
FAR const struct usbhost_epdesc_s *epdesc,
|
||||
FAR usbhost_ep_t *ep)
|
||||
{
|
||||
|
||||
FAR struct efm32_usbhost_s *priv = (FAR struct efm32_usbhost_s *)drvr;
|
||||
int ret;
|
||||
|
||||
@ -4232,7 +4347,7 @@ static int efm32_ctrlin(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
|
||||
int ret;
|
||||
|
||||
DEBUGASSERT(priv != NULL && ep0info != NULL && req != NULL);
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_CTRLIN, req->type, req->req);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_CTRLIN, req->type, req->req);
|
||||
uvdbg("type:%02x req:%02x value:%02x%02x index:%02x%02x len:%02x%02x\n",
|
||||
req->type, req->req, req->value[1], req->value[0],
|
||||
req->index[1], req->index[0], req->len[1], req->len[0]);
|
||||
@ -4254,7 +4369,7 @@ static int efm32_ctrlin(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
|
||||
ret = efm32_ctrl_sendsetup(priv, ep0info, req);
|
||||
if (ret < 0)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_SENDSETUP, -ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_SENDSETUP, -ret);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -4270,7 +4385,7 @@ static int efm32_ctrlin(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
|
||||
ret = efm32_ctrl_recvdata(priv, ep0info, buffer, buflen);
|
||||
if (ret < 0)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_RECVDATA, -ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_RECVDATA, -ret);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4288,7 +4403,7 @@ static int efm32_ctrlin(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
|
||||
return OK;
|
||||
}
|
||||
|
||||
usbhost_trace1(USB_TRACE1_SENDDATA, ret < 0 ? -ret : ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_SENDDATA, ret < 0 ? -ret : ret);
|
||||
}
|
||||
|
||||
/* Get the elapsed time (in frames) */
|
||||
@ -4317,7 +4432,7 @@ static int efm32_ctrlout(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
|
||||
int ret;
|
||||
|
||||
DEBUGASSERT(priv != NULL && ep0info != NULL && req != NULL);
|
||||
usbhost_vtrace2(OTGFS_VTRACE2_CTRLOUT, req->type, req->req);
|
||||
usbhost_vtrace2(USBHOST_VTRACE2_CTRLOUT, req->type, req->req);
|
||||
uvdbg("type:%02x req:%02x value:%02x%02x index:%02x%02x len:%02x%02x\n",
|
||||
req->type, req->req, req->value[1], req->value[0],
|
||||
req->index[1], req->index[0], req->len[1], req->len[0]);
|
||||
@ -4339,7 +4454,7 @@ static int efm32_ctrlout(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
|
||||
ret = efm32_ctrl_sendsetup(priv, ep0info, req);
|
||||
if (ret < 0)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_SENDSETUP, -ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_SENDSETUP, -ret);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -4358,7 +4473,7 @@ static int efm32_ctrlout(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
|
||||
ret = efm32_ctrl_senddata(priv, ep0info, NULL, 0);
|
||||
if (ret < 0)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_SENDDATA, -ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_SENDDATA, -ret);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4375,7 +4490,7 @@ static int efm32_ctrlout(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep0,
|
||||
return OK;
|
||||
}
|
||||
|
||||
usbhost_trace1(USB_TRACE1_RECVDATA, ret < 0 ? -ret : ret);
|
||||
usbhost_trace1(USBHOST_TRACE1_RECVDATA, ret < 0 ? -ret : ret);
|
||||
}
|
||||
|
||||
/* Get the elapsed time (in frames) */
|
||||
@ -4973,7 +5088,6 @@ static inline void efm32_sw_initialize(FAR struct efm32_usbhost_s *priv)
|
||||
priv->smstate = SMSTATE_DETACHED;
|
||||
priv->connected = false;
|
||||
priv->change = false;
|
||||
priv->lowspeed = false;
|
||||
|
||||
/* Put all of the channels back in their initial, allocated state */
|
||||
|
||||
@ -5174,7 +5288,7 @@ FAR struct usbhost_connection_s *efm32_usbhost_initialize(int controller)
|
||||
|
||||
if (irq_attach(EFM32_IRQ_USB, efm32_gint_isr) != 0)
|
||||
{
|
||||
usbhost_trace1(USB_TRACE1_IRQATTACH, 0);
|
||||
usbhost_trace1(USBHOST_TRACE1_IRQATTACH, 0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,6 @@
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
|
||||
|
||||
#include "stm32_usbhost.h"
|
||||
|
||||
#ifdef HAVE_USBHOST_TRACE
|
||||
|
@ -51,6 +51,10 @@
|
||||
|
||||
#if (defined(CONFIG_STM32_OTGFS) || defined(CONFIG_STM32_OTGHS)) && defined(CONFIG_USBHOST)
|
||||
|
||||
/************************************************************************************
|
||||
* Public Types
|
||||
************************************************************************************/
|
||||
|
||||
#ifdef HAVE_USBHOST_TRACE
|
||||
enum usbhost_trace1codes_e
|
||||
{
|
||||
|
@ -46,8 +46,9 @@ CONFIG_RAW_BINARY=y
|
||||
# Debug Options
|
||||
#
|
||||
# CONFIG_DEBUG is not set
|
||||
CONFIG_ARCH_HAVE_STACKCHECK=y
|
||||
# CONFIG_ARCH_HAVE_HEAPCHECK is not set
|
||||
CONFIG_ARCH_HAVE_STACKCHECK=y
|
||||
# CONFIG_STACK_COLORATION is not set
|
||||
# CONFIG_DEBUG_SYMBOLS is not set
|
||||
CONFIG_ARCH_HAVE_CUSTOMOPT=y
|
||||
# CONFIG_DEBUG_NOOPT is not set
|
||||
@ -91,6 +92,7 @@ CONFIG_ARCH_CHIP_EFM32=y
|
||||
# CONFIG_ARCH_CHIP_SAMA5 is not set
|
||||
# CONFIG_ARCH_CHIP_SAMD is not set
|
||||
# CONFIG_ARCH_CHIP_SAM34 is not set
|
||||
# CONFIG_ARCH_CHIP_SAMV7 is not set
|
||||
# CONFIG_ARCH_CHIP_STM32 is not set
|
||||
# CONFIG_ARCH_CHIP_STR71X is not set
|
||||
# CONFIG_ARCH_ARM7TDMI is not set
|
||||
@ -99,6 +101,7 @@ CONFIG_ARCH_CHIP_EFM32=y
|
||||
# CONFIG_ARCH_CORTEXM0 is not set
|
||||
CONFIG_ARCH_CORTEXM3=y
|
||||
# CONFIG_ARCH_CORTEXM4 is not set
|
||||
# CONFIG_ARCH_CORTEXM7 is not set
|
||||
# CONFIG_ARCH_CORTEXA5 is not set
|
||||
# CONFIG_ARCH_CORTEXA8 is not set
|
||||
CONFIG_ARCH_FAMILY="armv7-m"
|
||||
@ -106,11 +109,17 @@ CONFIG_ARCH_CHIP="efm32"
|
||||
# CONFIG_ARMV7M_USEBASEPRI is not set
|
||||
CONFIG_ARCH_HAVE_CMNVECTOR=y
|
||||
CONFIG_ARMV7M_CMNVECTOR=y
|
||||
# CONFIG_ARMV7M_LAZYFPU is not set
|
||||
# CONFIG_ARCH_HAVE_FPU is not set
|
||||
# CONFIG_ARCH_HAVE_DPFPU is not set
|
||||
|
||||
#
|
||||
# ARMV7M Configuration Options
|
||||
#
|
||||
# CONFIG_ARMV7M_HAVE_ICACHE is not set
|
||||
# CONFIG_ARMV7M_HAVE_DCACHE is not set
|
||||
# CONFIG_ARMV7M_HAVE_ITCM is not set
|
||||
# CONFIG_ARMV7M_HAVE_DTCM is not set
|
||||
# CONFIG_ARMV7M_TOOLCHAIN_ATOLLIC is not set
|
||||
# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set
|
||||
# CONFIG_ARMV7M_TOOLCHAIN_CODEREDW is not set
|
||||
@ -119,6 +128,7 @@ CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y
|
||||
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set
|
||||
# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW is not set
|
||||
# CONFIG_ARMV7M_TOOLCHAIN_RAISONANCE is not set
|
||||
# CONFIG_ARMV7M_HAVE_STACKCHECK is not set
|
||||
# CONFIG_ARMV7M_ITMSYSLOG is not set
|
||||
|
||||
#
|
||||
@ -146,6 +156,9 @@ CONFIG_EFM32_HAVE_OTGFS=y
|
||||
# CONFIG_EFM32_UART is not set
|
||||
CONFIG_EFM32_LEUART=y
|
||||
# CONFIG_EFM32_DMA is not set
|
||||
# CONFIG_EFM32_RMU is not set
|
||||
# CONFIG_EFM32_I2C0 is not set
|
||||
# CONFIG_EFM32_I2C1 is not set
|
||||
# CONFIG_EFM32_USART0 is not set
|
||||
# CONFIG_EFM32_USART1 is not set
|
||||
# CONFIG_EFM32_USART2 is not set
|
||||
@ -153,7 +166,12 @@ CONFIG_EFM32_LEUART=y
|
||||
# CONFIG_EFM32_UART1 is not set
|
||||
CONFIG_EFM32_LEUART0=y
|
||||
# CONFIG_EFM32_LEUART1 is not set
|
||||
# CONFIG_EFM32_TIMER0 is not set
|
||||
# CONFIG_EFM32_TIMER1 is not set
|
||||
# CONFIG_EFM32_TIMER2 is not set
|
||||
# CONFIG_EFM32_TIMER3 is not set
|
||||
CONFIG_EFM32_GPIO_IRQ=y
|
||||
# CONFIG_EFM32_LECLOCK is not set
|
||||
CONFIG_LEUART0_SERIAL_CONSOLE=y
|
||||
# CONFIG_NO_LEUART_SERIAL_CONSOLE is not set
|
||||
|
||||
@ -166,6 +184,7 @@ CONFIG_LEUART0_BAUD=9600
|
||||
CONFIG_LEUART0_BITS=8
|
||||
CONFIG_LEUART0_PARITY=0
|
||||
CONFIG_LEUART0_2STOP=0
|
||||
# CONFIG_EFM32_RTC_BURTC is not set
|
||||
|
||||
#
|
||||
# Architecture Options
|
||||
@ -245,6 +264,7 @@ CONFIG_NSH_MMCSDMINOR=0
|
||||
# EFM32GG-STK3700 Hardware Configuration
|
||||
#
|
||||
# CONFIG_EFM32GG_STK3700_BCEN is not set
|
||||
# CONFIG_LIB_BOARDCTL is not set
|
||||
|
||||
#
|
||||
# RTOS Features
|
||||
@ -367,9 +387,13 @@ CONFIG_DEV_NULL=y
|
||||
# CONFIG_I2C is not set
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_I2S is not set
|
||||
|
||||
#
|
||||
# Timer Driver Support
|
||||
#
|
||||
# CONFIG_TIMER is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_TIMER is not set
|
||||
# CONFIG_ANALOG is not set
|
||||
# CONFIG_AUDIO_DEVICES is not set
|
||||
# CONFIG_VIDEO_DEVICES is not set
|
||||
@ -378,6 +402,7 @@ CONFIG_DEV_NULL=y
|
||||
# CONFIG_LCD is not set
|
||||
# CONFIG_MMCSD is not set
|
||||
# CONFIG_MTD is not set
|
||||
# CONFIG_EEPROM is not set
|
||||
# CONFIG_PIPES is not set
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_POWER is not set
|
||||
@ -414,11 +439,11 @@ CONFIG_ARCH_HAVE_OTHER_UART=y
|
||||
#
|
||||
CONFIG_MCU_SERIAL=y
|
||||
CONFIG_STANDARD_SERIAL=y
|
||||
# CONFIG_SERIAL_IFLOWCONTROL is not set
|
||||
# CONFIG_SERIAL_OFLOWCONTROL is not set
|
||||
# CONFIG_ARCH_HAVE_SERIAL_TERMIOS is not set
|
||||
CONFIG_OTHER_SERIAL_CONSOLE=y
|
||||
# CONFIG_NO_SERIAL_CONSOLE is not set
|
||||
# CONFIG_SERIAL_IFLOWCONTROL is not set
|
||||
# CONFIG_SERIAL_OFLOWCONTROL is not set
|
||||
# CONFIG_USBDEV is not set
|
||||
# CONFIG_USBHOST is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
@ -431,6 +456,7 @@ CONFIG_OTHER_SERIAL_CONSOLE=y
|
||||
# System Logging
|
||||
#
|
||||
# CONFIG_RAMLOG is not set
|
||||
# CONFIG_SYSLOG_CONSOLE is not set
|
||||
|
||||
#
|
||||
# Networking Support
|
||||
@ -507,6 +533,7 @@ CONFIG_NUNGET_CHARS=2
|
||||
# CONFIG_LIBM is not set
|
||||
# CONFIG_NOPRINTF_FIELDWIDTH is not set
|
||||
# CONFIG_LIBC_FLOATINGPOINT is not set
|
||||
# CONFIG_LIBC_IOCTL_VARIADIC is not set
|
||||
CONFIG_LIB_RAND_ORDER=1
|
||||
# CONFIG_EOL_IS_CR is not set
|
||||
# CONFIG_EOL_IS_LF is not set
|
||||
@ -518,6 +545,7 @@ CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048
|
||||
# CONFIG_LIBC_STRERROR is not set
|
||||
# CONFIG_LIBC_PERROR_STDOUT is not set
|
||||
CONFIG_ARCH_LOWPUTC=y
|
||||
# CONFIG_TIME_EXTENDED is not set
|
||||
CONFIG_LIB_SENDFILE_BUFSIZE=512
|
||||
# CONFIG_ARCH_ROMGETC is not set
|
||||
# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set
|
||||
@ -576,10 +604,10 @@ CONFIG_EXAMPLES_NSH=y
|
||||
# CONFIG_EXAMPLES_OSTEST is not set
|
||||
# CONFIG_EXAMPLES_PIPE is not set
|
||||
# CONFIG_EXAMPLES_POLL is not set
|
||||
# CONFIG_EXAMPLES_PPPD is not set
|
||||
# CONFIG_EXAMPLES_POSIXSPAWN is not set
|
||||
# CONFIG_EXAMPLES_QENCODER is not set
|
||||
# CONFIG_EXAMPLES_RGMP is not set
|
||||
# CONFIG_EXAMPLES_ROMFS is not set
|
||||
# CONFIG_EXAMPLES_SENDMAIL is not set
|
||||
# CONFIG_EXAMPLES_SERIALBLASTER is not set
|
||||
# CONFIG_EXAMPLES_SERIALRX is not set
|
||||
@ -591,7 +619,6 @@ CONFIG_EXAMPLES_NSH=y
|
||||
# CONFIG_EXAMPLES_THTTPD is not set
|
||||
# CONFIG_EXAMPLES_TIFF is not set
|
||||
# CONFIG_EXAMPLES_TOUCHSCREEN is not set
|
||||
# CONFIG_EXAMPLES_UDP is not set
|
||||
# CONFIG_EXAMPLES_WEBSERVER is not set
|
||||
# CONFIG_EXAMPLES_USBSERIAL is not set
|
||||
# CONFIG_EXAMPLES_USBTERM is not set
|
||||
@ -601,12 +628,14 @@ CONFIG_EXAMPLES_NSH=y
|
||||
# Graphics Support
|
||||
#
|
||||
# CONFIG_TIFF is not set
|
||||
# CONFIG_GRAPHICS_TRAVELER is not set
|
||||
|
||||
#
|
||||
# Interpreters
|
||||
#
|
||||
# CONFIG_INTERPRETERS_FICL is not set
|
||||
# CONFIG_INTERPRETERS_PCODE is not set
|
||||
# CONFIG_INTERPRETERS_MICROPYTHON is not set
|
||||
|
||||
#
|
||||
# Network Utilities
|
||||
@ -616,15 +645,11 @@ CONFIG_EXAMPLES_NSH=y
|
||||
# Networking Utilities
|
||||
#
|
||||
# CONFIG_NETUTILS_CODECS is not set
|
||||
# CONFIG_NETUTILS_DHCPD is not set
|
||||
# CONFIG_NETUTILS_FTPC is not set
|
||||
# CONFIG_NETUTILS_FTPD is not set
|
||||
# CONFIG_NETUTILS_JSON is not set
|
||||
# CONFIG_NETUTILS_SMTP is not set
|
||||
# CONFIG_NETUTILS_TFTPC is not set
|
||||
# CONFIG_NETUTILS_THTTPD is not set
|
||||
# CONFIG_NETUTILS_NETLIB is not set
|
||||
# CONFIG_NETUTILS_WEBCLIENT is not set
|
||||
# CONFIG_NETUTILS_PPPD is not set
|
||||
|
||||
#
|
||||
# FreeModBus
|
||||
@ -656,6 +681,7 @@ CONFIG_NSH_NESTDEPTH=3
|
||||
# CONFIG_NSH_DISABLE_CD is not set
|
||||
# CONFIG_NSH_DISABLE_CP is not set
|
||||
# CONFIG_NSH_DISABLE_CMP is not set
|
||||
CONFIG_NSH_DISABLE_DATE=y
|
||||
# CONFIG_NSH_DISABLE_DD is not set
|
||||
# CONFIG_NSH_DISABLE_DF is not set
|
||||
# CONFIG_NSH_DISABLE_DELROUTE is not set
|
||||
@ -676,6 +702,7 @@ CONFIG_NSH_NESTDEPTH=3
|
||||
# CONFIG_NSH_DISABLE_MKRD is not set
|
||||
# CONFIG_NSH_DISABLE_MH is not set
|
||||
# CONFIG_NSH_DISABLE_MOUNT is not set
|
||||
# CONFIG_NSH_DISABLE_MV is not set
|
||||
# CONFIG_NSH_DISABLE_MW is not set
|
||||
# CONFIG_NSH_DISABLE_PS is not set
|
||||
# CONFIG_NSH_DISABLE_PUT is not set
|
||||
@ -726,116 +753,20 @@ CONFIG_NSH_CONSOLE=y
|
||||
#
|
||||
# System Libraries and NSH Add-Ons
|
||||
#
|
||||
|
||||
#
|
||||
# Custom Free Memory Command
|
||||
#
|
||||
# CONFIG_SYSTEM_FREE is not set
|
||||
|
||||
#
|
||||
# EMACS-like Command Line Editor
|
||||
#
|
||||
CONFIG_SYSTEM_CLE=y
|
||||
CONFIG_SYSTEM_CLE_DEBUGLEVEL=0
|
||||
|
||||
#
|
||||
# FLASH Program Installation
|
||||
#
|
||||
# CONFIG_SYSTEM_CUTERM is not set
|
||||
# CONFIG_SYSTEM_INSTALL is not set
|
||||
|
||||
#
|
||||
# FLASH Erase-all Command
|
||||
#
|
||||
|
||||
#
|
||||
# Intel HEX to binary conversion
|
||||
#
|
||||
# CONFIG_SYSTEM_HEX2BIN is not set
|
||||
|
||||
#
|
||||
# I2C tool
|
||||
#
|
||||
|
||||
#
|
||||
# INI File Parser
|
||||
#
|
||||
# CONFIG_SYSTEM_INIFILE is not set
|
||||
|
||||
#
|
||||
# NxPlayer media player library / command Line
|
||||
#
|
||||
# CONFIG_SYSTEM_NXPLAYER is not set
|
||||
|
||||
#
|
||||
# RAM test
|
||||
#
|
||||
# CONFIG_SYSTEM_RAMTEST is not set
|
||||
|
||||
#
|
||||
# readline()
|
||||
#
|
||||
CONFIG_SYSTEM_READLINE=y
|
||||
CONFIG_READLINE_ECHO=y
|
||||
|
||||
#
|
||||
# P-Code Support
|
||||
#
|
||||
|
||||
#
|
||||
# PHY Tool
|
||||
#
|
||||
|
||||
#
|
||||
# Power Off
|
||||
#
|
||||
# CONFIG_SYSTEM_POWEROFF is not set
|
||||
|
||||
#
|
||||
# RAMTRON
|
||||
#
|
||||
# CONFIG_SYSTEM_RAMTRON is not set
|
||||
|
||||
#
|
||||
# SD Card
|
||||
#
|
||||
# CONFIG_SYSTEM_SDCARD is not set
|
||||
|
||||
#
|
||||
# Sudoku
|
||||
#
|
||||
# CONFIG_SYSTEM_SUDOKU is not set
|
||||
|
||||
#
|
||||
# Sysinfo
|
||||
#
|
||||
# CONFIG_SYSTEM_SYSINFO is not set
|
||||
|
||||
#
|
||||
# VI Work-Alike Editor
|
||||
#
|
||||
# CONFIG_SYSTEM_VI is not set
|
||||
|
||||
#
|
||||
# Stack Monitor
|
||||
#
|
||||
|
||||
#
|
||||
# USB CDC/ACM Device Commands
|
||||
#
|
||||
|
||||
#
|
||||
# USB Composite Device Commands
|
||||
#
|
||||
|
||||
#
|
||||
# USB Mass Storage Device Commands
|
||||
#
|
||||
|
||||
#
|
||||
# USB Monitor
|
||||
#
|
||||
|
||||
#
|
||||
# Zmodem Commands
|
||||
#
|
||||
# CONFIG_SYSTEM_ZMODEM is not set
|
||||
|
Loading…
x
Reference in New Issue
Block a user