diff --git a/arch/arm/src/efm32/efm32_usb.h b/arch/arm/src/efm32/efm32_usb.h index 5abe1544da7..06398d9b67b 100644 --- a/arch/arm/src/efm32/efm32_usb.h +++ b/arch/arm/src/efm32/efm32_usb.h @@ -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 ************************************************************************************/ diff --git a/arch/arm/src/efm32/efm32_usbhost.c b/arch/arm/src/efm32/efm32_usbhost.c index 9f4e5aa8cf1..c73764d4bc4 100644 --- a/arch/arm/src/efm32/efm32_usbhost.c +++ b/arch/arm/src/efm32/efm32_usbhost.c @@ -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; } diff --git a/arch/arm/src/stm32/stm32_usbhost.c b/arch/arm/src/stm32/stm32_usbhost.c index cfd33c1d9ae..8f887697dd6 100644 --- a/arch/arm/src/stm32/stm32_usbhost.c +++ b/arch/arm/src/stm32/stm32_usbhost.c @@ -43,7 +43,6 @@ #include #include - #include "stm32_usbhost.h" #ifdef HAVE_USBHOST_TRACE diff --git a/arch/arm/src/stm32/stm32_usbhost.h b/arch/arm/src/stm32/stm32_usbhost.h index ff3ee23455c..362944c67d5 100644 --- a/arch/arm/src/stm32/stm32_usbhost.h +++ b/arch/arm/src/stm32/stm32_usbhost.h @@ -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 { diff --git a/configs/efm32gg-stk3700/nsh/defconfig b/configs/efm32gg-stk3700/nsh/defconfig index 499eec4697f..e7ee98200c6 100644 --- a/configs/efm32gg-stk3700/nsh/defconfig +++ b/configs/efm32gg-stk3700/nsh/defconfig @@ -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