SAMA5: Add support EHCI/OHCI to sama5d3x-ek/demo (does not work yet); Fix some EHCI/OHCI compilation issues when DEBUG is disabled

This commit is contained in:
Gregory Nutt 2013-09-07 11:43:06 -06:00
parent 9a9de5de81
commit 59f6aeefd2
4 changed files with 72 additions and 8 deletions

View File

@ -690,7 +690,7 @@ static void sam_putreg(uint32_t regval, volatile uint32_t *regaddr)
#else #else
static inline void sam_putreg(uint32_t regval, volatile uint32_t *regaddr) static inline void sam_putreg(uint32_t regval, volatile uint32_t *regaddr)
{ {
*regaval = regval; *regaddr = regval;
} }
#endif #endif

View File

@ -2504,7 +2504,9 @@ errout:
static int sam_epfree(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep) static int sam_epfree(FAR struct usbhost_driver_s *drvr, usbhost_ep_t ep)
{ {
#ifdef CONFIG_DEBUG
struct sam_rhport_s *rhport = (struct sam_rhport_s *)drvr; struct sam_rhport_s *rhport = (struct sam_rhport_s *)drvr;
#endif
struct sam_eplist_s *eplist = (struct sam_eplist_s *)ep; struct sam_eplist_s *eplist = (struct sam_eplist_s *)ep;
struct sam_ed_s *ed; struct sam_ed_s *ed;
int ret; int ret;

View File

@ -1037,10 +1037,37 @@ Configurations
nsh> msdis nsh> msdis
nsh> mount -t vfat /dev/mtdblock0 /mnt/at25 nsh> mount -t vfat /dev/mtdblock0 /mnt/at25
7. The USB high-speed EHCI and the low-/full- OHCI host drivers are supported
in this configuration.
Here are the relevant configuration options that enable EHCI support:
System Type -> ATSAMA5 Peripheral Support
CONFIG_SAMA5_UHPHS=y : USB Host High Speed
System Type -> USB High Speed Host driver options
CONFIG_SAMA5_EHCI=y : High-speed EHCI support
CONFIG_SAMA5_OHCI=y : Low/full-speed OHCI support
: Defaults for values probably OK for both
Device Drivers
CONFIG_USBHOST=y : Enable USB host support
CONFIG_USBHOST_ISOC_DISABLE=y : Isochronous endpoints not needed
Device Drivers -> USB Host Driver Support
CONFIG_USBHOST_ISOC_DISABLE=y : Isochronous endpoints not used
CONFIG_USBHOST_MSC=y : Enable the mass storage class driver
CONFIG_USBHOST_HIDKBD=y : Enable the HID keybaord class driver
: Defaults for values probably OK for both
Library Routines
CONFIG_SCHED_WORKQUEUE=y : Worker thread support is required
Application Configuration -> NSH Library
CONFIG_NSH_ARCHINIT=y : NSH board-initialization
The following features are *not* enabled in the demo configuration but The following features are *not* enabled in the demo configuration but
might be of some use to you: might be of some use to you:
7. Debugging USB Device. There is normal console debug output available 8. Debugging USB Device. There is normal console debug output available
that can be enabled with CONFIG_DEBUG + CONFIG_DEBUG_USB. However, that can be enabled with CONFIG_DEBUG + CONFIG_DEBUG_USB. However,
USB device operation is very time critical and enabling this debug USB device operation is very time critical and enabling this debug
output WILL interfere with the operation of the UDPHS. USB device output WILL interfere with the operation of the UDPHS. USB device
@ -1395,7 +1422,7 @@ Configurations
CONFIG_USBHOST_MSC=y : Enable the mass storage class driver CONFIG_USBHOST_MSC=y : Enable the mass storage class driver
Library Routines Library Routines
CONFIG_SCHED_WORKQUEUE : Worker thread support is required CONFIG_SCHED_WORKQUEUE=y : Worker thread support is required
Application Configuration -> NSH Library Application Configuration -> NSH Library
CONFIG_NSH_ARCHINIT=y : NSH board-initialization CONFIG_NSH_ARCHINIT=y : NSH board-initialization
@ -1427,12 +1454,12 @@ Configurations
CONFIG_USBHOST_MSC=y : Enable the mass storage class driver CONFIG_USBHOST_MSC=y : Enable the mass storage class driver
Library Routines Library Routines
CONFIG_SCHED_WORKQUEUE : Worker thread support is required CONFIG_SCHED_WORKQUEUE=y : Worker thread support is required
Application Configuration -> NSH Library Application Configuration -> NSH Library
CONFIG_NSH_ARCHINIT=y : NSH board-initialization CONFIG_NSH_ARCHINIT=y : NSH board-initialization
12. Support the USB high-speed EHCI device driver (UDPHS) can be enabled 12. Support the USB high-speed USB device driver (UDPHS) can be enabled
by changing the NuttX configuration file as follows: by changing the NuttX configuration file as follows:
Device Drivers -> USB Device Driver Support Device Drivers -> USB Device Driver Support

View File

@ -109,6 +109,9 @@ CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYW=y
# CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIL is not set # CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIL is not set
# CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIW is not set # CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIW is not set
# CONFIG_ARMV7A_TOOLCHAIN_GNU_OABI is not set # CONFIG_ARMV7A_TOOLCHAIN_GNU_OABI is not set
# CONFIG_USBHOST_BULK_DISABLE is not set
# CONFIG_USBHOST_INT_DISABLE is not set
CONFIG_USBHOST_ISOC_DISABLE=y
# #
# ATSAMA5 Configuration Options # ATSAMA5 Configuration Options
@ -146,7 +149,7 @@ CONFIG_SAMA5_SPI0=y
# CONFIG_SAMA5_ADC is not set # CONFIG_SAMA5_ADC is not set
CONFIG_SAMA5_DMAC0=y CONFIG_SAMA5_DMAC0=y
# CONFIG_SAMA5_DMAC1 is not set # CONFIG_SAMA5_DMAC1 is not set
# CONFIG_SAMA5_UHPHS is not set CONFIG_SAMA5_UHPHS=y
CONFIG_SAMA5_UDPHS=y CONFIG_SAMA5_UDPHS=y
# CONFIG_SAMA5_GMAC is not set # CONFIG_SAMA5_GMAC is not set
# CONFIG_SAMA5_EMAC is not set # CONFIG_SAMA5_EMAC is not set
@ -176,6 +179,22 @@ CONFIG_SAMA5_SPI_DMATHRESHOLD=4
# #
# CONFIG_UDPHS_SCATTERGATHER is not set # CONFIG_UDPHS_SCATTERGATHER is not set
#
# USB High Speed Host Controller driver (HCD) options
#
CONFIG_SAMA5_OHCI=y
CONFIG_SAMA5_OHCI_NEDS=6
CONFIG_SAMA5_OHCI_NTDS=9
CONFIG_SAMA5_OHCI_TDBUFFERS=6
CONFIG_SAMA5_OHCI_TDBUFSIZE=128
CONFIG_SAMA5_EHCI=y
CONFIG_SAMA5_EHCI_NQHS=4
CONFIG_SAMA5_EHCI_NQTDS=6
CONFIG_SAMA5_EHCI_BUFSIZE=128
CONFIG_SAMA5_EHCI_PREALLOCATE=y
CONFIG_SAMA5_UHPHS_RHPORT2=y
CONFIG_SAMA5_UHPHS_RHPORT3=y
# #
# External Memory Configuration # External Memory Configuration
# #
@ -313,6 +332,7 @@ CONFIG_SIG_SIGUSR1=1
CONFIG_SIG_SIGUSR2=2 CONFIG_SIG_SIGUSR2=2
CONFIG_SIG_SIGALARM=3 CONFIG_SIG_SIGALARM=3
CONFIG_SIG_SIGCONDTIMEDOUT=16 CONFIG_SIG_SIGCONDTIMEDOUT=16
CONFIG_SIG_SIGWORK=17
# #
# Sizes of configurable things (0 disables) # Sizes of configurable things (0 disables)
@ -449,7 +469,17 @@ CONFIG_USBMSC_PRODUCTID=0x5342
CONFIG_USBMSC_PRODUCTSTR="Mass Storage" CONFIG_USBMSC_PRODUCTSTR="Mass Storage"
CONFIG_USBMSC_VERSIONNO=0x399 CONFIG_USBMSC_VERSIONNO=0x399
# CONFIG_USBMSC_REMOVABLE is not set # CONFIG_USBMSC_REMOVABLE is not set
# CONFIG_USBHOST is not set CONFIG_USBHOST=y
CONFIG_USBHOST_NPREALLOC=4
CONFIG_USBHOST_MSC=y
CONFIG_USBHOST_HIDKBD=y
CONFIG_HIDKBD_POLLUSEC=100000
CONFIG_HIDKBD_DEFPRIO=50
CONFIG_HIDKBD_STACKSIZE=1024
CONFIG_HIDKBD_BUFSIZE=64
# CONFIG_HIDKBD_RAWSCANCODES is not set
# CONFIG_HIDKBD_ALLSCANCODES is not set
# CONFIG_HIDKBD_NODEBOUNCE is not set
# CONFIG_WIRELESS is not set # CONFIG_WIRELESS is not set
# #
@ -551,7 +581,12 @@ CONFIG_LIB_SENDFILE_BUFSIZE=512
# #
# Non-standard Library Support # Non-standard Library Support
# #
# CONFIG_SCHED_WORKQUEUE is not set CONFIG_SCHED_WORKQUEUE=y
CONFIG_SCHED_HPWORK=y
CONFIG_SCHED_WORKPRIORITY=192
CONFIG_SCHED_WORKPERIOD=50000
CONFIG_SCHED_WORKSTACKSIZE=2048
# CONFIG_SCHED_LPWORK is not set
# CONFIG_LIB_KBDCODEC is not set # CONFIG_LIB_KBDCODEC is not set
# CONFIG_LIB_SLCDCODEC is not set # CONFIG_LIB_SLCDCODEC is not set