Imported nuttx-6.25

Conflicts:

	nuttx/arch/arm/src/armv7-m/up_hardfault.c
	nuttx/arch/arm/src/stm32/chip/stm32_spi.h
	nuttx/drivers/mmcsd/mmcsd_spi.c
	nuttx/include/pthread.h
Apply nuttx-6.25-fat12fix.patch
Imported apps-6.25
Apply nuttx-6.25-nshleak-2.patch
Imported NxWidgets-1.5

Conflicts:

	NxWidgets/libnxwidgets/include/cgraphicsport.hxx
	NxWidgets/libnxwidgets/include/ctabpanel.hxx
	NxWidgets/libnxwidgets/src/cgraphicsport.cxx
	NxWidgets/libnxwidgets/src/clabel.cxx
	NxWidgets/libnxwidgets/src/cscrollingpanel.cxx
	NxWidgets/libnxwidgets/src/ctabpanel.cxx

Conflicts:

	NxWidgets/libnxwidgets/src/cscrollingpanel.cxx
Fix #ifdef->#ifndef in CLabel flicker free logic.
Add string descriptions for USB trace events.

This adds configuration option CONFIG_USBDEV_TRACE_STRINGS.

When it is enabled, instead of:
Interrupt decode 2: 0010
Interrupt decode 16: 0010
Interrupt decode 91: 0000

You will get textual representations:
Interrupt decode   2: STM32_TRACEINTID_INTPENDING              0010
Interrupt decode  16: STM32_TRACEINTID_RXFIFO                  0010
Interrupt decode  91: STM32_TRACEINTID_OUTRECVD                0000

Currently implemented for DEVERROR and INTDECODE in stm32_otgfs.
When used with unsupported driver it will cause a linker error about
undefined symbol g_usb_trace_strings_deverror, which means you have
to disable CONFIG_USBDEV_TRACE_STRINGS.
stm32_otgfsdev: Clear NAK to allow reception of SETUP OUT DATA.

Some class drivers, such as the CDC ACM "Set Line Coding", use
DATA contents in SETUP transactions. This means a sequence of
packets like:

SETUP
DATA   # The normal 8-byte setup request type packet
ACK
OUT
DATA   # The parameters to the setup request
ACK

However, previously the driver would (sometimes?) NAK the OUT
transaction.

From STM32F4 reference manual on DOEPCTL (output endpoint control):
"The core can also set this bit on a Transfer completed interrupt,
or after a SETUP is received on the endpoint."

If I understand this correctly it means that after a SETUP + DATA,
the core will automatically block any further OUT transactions.
This makes sense, but we need to manually CNAK if we are actually
waiting for further data.
stm32_otgfsdev: in epin/epout, make switch to IDLE conditional

Previously the driver would switch to IDLE state in epin/epout if
there was not an active in/out transfer.

This seemed to cause premature switches to IDLE state in atleast
two situations:

1) When usbinterrupt was delayed for some reason, such as debug messages.
   Then there were multiple events (in/out/setup) queued, and they might
   not be processed in the same order as they were received.
2) When waiting for DATA OUT in a SETUP request. Then the state is
   EP0STATE_SETUP_OUT, and stm32_ep0out_receive would handle the data.
   However if stm32_epout gets called first, it will see no OUT request
   and set state to IDLE.

This patch makes the epin/epout switch state only if the previous state
is expected.

I'm not sure if these "unexpected state changes to IDLE" represent errors
elsewhere in code. However they currently do occur, and this patch makes
things work for me.

Another way would be to assert the state before switching to idle. Currently
it would cause multiple assert failures for me.