SAMA5D4-EK: Add support for USB host
This commit is contained in:
parent
f444bf41de
commit
73ed49fe06
@ -1580,7 +1580,7 @@ USB Ports
|
||||
|
||||
PIO Signal Name Function
|
||||
---- -------------- -------------------------------------------------------
|
||||
PE10 EN5V_USBA VBus power enable (via MN2 power switch) to VBus pin of
|
||||
PE10 USBA_EN5V_PE10 VBus power enable (via MN2 power switch) to VBus pin of
|
||||
the OTG connector (host)
|
||||
PE31 USBA_VBUS_PE31 VBus sensing from the VBus pin of the OTG connector (device)
|
||||
|
||||
@ -1589,7 +1589,7 @@ USB Ports
|
||||
|
||||
PIO Signal Name Function
|
||||
---- -------------- -------------------------------------------------------
|
||||
PE11 EN5V_USBB VBus power enable (via MN4 power switch). To the A1
|
||||
PE11 USBB_EN5V_PE11 VBus power enable (via MN4 power switch). To the A1
|
||||
pin of J5 Dual USB A connector
|
||||
|
||||
Port C
|
||||
@ -1597,15 +1597,15 @@ USB Ports
|
||||
|
||||
PIO Signal Name Function
|
||||
---- -------------- -------------------------------------------------------
|
||||
PE12 EN5V_USBC VBus power enable (via MN4 power switch). To the B1
|
||||
PE12 USB_OVCUR_PD9 VBus power enable (via MN4 power switch). To the B1
|
||||
pin of J5 Dual USB A connector
|
||||
|
||||
Both Ports B and C
|
||||
------------------
|
||||
|
||||
PIO Signal Name Function
|
||||
---- ----------- -------------------------------------------------------
|
||||
PE5 OVCUR_USB Combined over-current indication from port A and B
|
||||
PIO Signal Name Function
|
||||
---- ------------- -------------------------------------------------------
|
||||
PD9 USB_OVCUR_PD9 Combined over-current indication from port A and B
|
||||
|
||||
USB High-Speed Device
|
||||
=====================
|
||||
@ -1774,10 +1774,13 @@ USB High-Speed Host
|
||||
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
|
||||
: Defaults for values probably OK for both
|
||||
CONFIG_SAMA5_UHPHS_RHPORT1=n : (Reserved for use by USB device)
|
||||
CONFIG_SAMA5_UHPHS_RHPORT2=y : Enable port B
|
||||
CONFIG_SAMA5_UHPHS_RHPORT3=y : Enable port C
|
||||
|
||||
Device Drivers
|
||||
CONFIG_USBHOST=y : Enable USB host support
|
||||
CONFIG_USBHOST_INT_DISABLE=y : Interrupt endpoints not needed
|
||||
CONFIG_USBHOST_ISOC_DISABLE=y : Isochronous endpoints not needed
|
||||
|
||||
Device Drivers -> USB Host Driver Support
|
||||
@ -3452,19 +3455,25 @@ Configurations
|
||||
TIW0 bus. See the discussion above under "I2C Tool" for detailed
|
||||
configuration settings.
|
||||
|
||||
13. The SAMA5D4-EK includes for an AT25 serial DataFlash. That support is
|
||||
NOT enabled in this configuration. Support for that serial FLASH can
|
||||
13. Support the USB low-, high- and full-speed OHCI host driver is enabled
|
||||
enabled with the NuttX configuration file as described in the section
|
||||
above entitled "USB High-Speed Host". Only port B and port C, the
|
||||
larger "Type A" connectors, are enabled; port A (the smaller OTG
|
||||
connector) is reserved for future use with USB device (but could also
|
||||
be configured as a USB host port if desired).
|
||||
|
||||
Support for Mass Storage Class and USB (Boot) Keyboard class is also
|
||||
enabled.
|
||||
|
||||
14. Support the USB high-speed USB device driver (UDPHS) is not enabled by
|
||||
default but could be enabled by changing the NuttX configuration file as
|
||||
described above in the section entitled "USB High-Speed Device."
|
||||
|
||||
15. The SAMA5D4-EK includes for an AT25 serial DataFlash. That support is
|
||||
NOT enabled in this configuration. Support for that serial FLASH could
|
||||
be enabled by modifying the NuttX configuration as described above in
|
||||
the paragraph entitled "AT25 Serial FLASH".
|
||||
|
||||
14. Support the USB low-, high- and full-speed OHCI host driver can be
|
||||
enabled by changing the NuttX configuration file as described in the
|
||||
section entitled "USB High-Speed Host" above.
|
||||
|
||||
15. Support the USB high-speed USB device driver (UDPHS) can be enabled
|
||||
by changing the NuttX configuration file as described above in the
|
||||
section entitled "USB High-Speed Device."
|
||||
|
||||
16. This example can be configured to exercise the watchdog timer test
|
||||
(apps/examples/watchdog). See the detailed configuration settings in
|
||||
the section entitled "Watchdog Timer" above.
|
||||
|
@ -122,6 +122,9 @@ CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYW=y
|
||||
CONFIG_SDIO_DMA=y
|
||||
# CONFIG_SDIO_WIDTH_D1_ONLY is not set
|
||||
# CONFIG_NET_MULTICAST is not set
|
||||
# CONFIG_USBHOST_BULK_DISABLE is not set
|
||||
# CONFIG_USBHOST_INT_DISABLE is not set
|
||||
CONFIG_USBHOST_ISOC_DISABLE=y
|
||||
|
||||
#
|
||||
# SAMA5 Configuration Options
|
||||
@ -204,7 +207,7 @@ CONFIG_SAMA5_HSMCI0=y
|
||||
# CONFIG_SAMA5_ADC is not set
|
||||
# CONFIG_SAMA5_XDMAC0 is not set
|
||||
CONFIG_SAMA5_XDMAC1=y
|
||||
# CONFIG_SAMA5_UHPHS is not set
|
||||
CONFIG_SAMA5_UHPHS=y
|
||||
# CONFIG_SAMA5_UDPHS is not set
|
||||
CONFIG_SAMA5_EMACB=y
|
||||
CONFIG_SAMA5_EMAC0=y
|
||||
@ -261,6 +264,23 @@ CONFIG_SAMA5_HSMCI0_XDMAC1=y
|
||||
# CONFIG_SAMA5_HSMCI_RDPROOF is not set
|
||||
# CONFIG_SAMA5_HSMCI_WRPROOF 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_RHPORT1 is not set
|
||||
CONFIG_SAMA5_UHPHS_RHPORT2=y
|
||||
CONFIG_SAMA5_UHPHS_RHPORT3=y
|
||||
|
||||
#
|
||||
# External Memory Configuration
|
||||
#
|
||||
@ -585,7 +605,21 @@ CONFIG_USART4_2STOP=0
|
||||
# CONFIG_SERIAL_IFLOWCONTROL is not set
|
||||
# CONFIG_SERIAL_OFLOWCONTROL is not set
|
||||
# CONFIG_USBDEV 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_NPOLLWAITERS=2
|
||||
# CONFIG_HIDKBD_RAWSCANCODES is not set
|
||||
# CONFIG_HIDKBD_ALLSCANCODES is not set
|
||||
# CONFIG_HIDKBD_NODEBOUNCE is not set
|
||||
# CONFIG_USBHOST_HIDMOUSE is not set
|
||||
# CONFIG_USBHOST_RTL8187 is not set
|
||||
# CONFIG_USBHOST_TRACE is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
|
||||
#
|
||||
@ -694,6 +728,11 @@ CONFIG_NET_STATISTICS=y
|
||||
# CONFIG_NET_ROUTE is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
|
||||
#
|
||||
# Crypto API
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# File Systems
|
||||
#
|
||||
|
@ -284,10 +284,11 @@ void weak_function sam_usbinitialize(void)
|
||||
sam_configpio(PIO_USBC_VBUS_ENABLE); /* VBUS enable, initially OFF */
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SAMA5_UHPHS_RHPORT2) || defined(CONFIG_SAMA5_UHPHS_RHPORT3)
|
||||
/* Configure Port B/C VBUS overrcurrent detection */
|
||||
#ifdef HAVE_USBOVCUR
|
||||
|
||||
sam_configpio(PIO_USBBC_VBUS_OVERCURRENT); /* VBUS overcurrent */
|
||||
/* Configure Port B/C VBUS over-current detection */
|
||||
|
||||
sam_configpio(PIO_USBBC_VBUS_OVERCURRENT); /* VBUS over-current */
|
||||
#endif
|
||||
#endif /* HAVE_USBHOST */
|
||||
}
|
||||
@ -296,7 +297,7 @@ void weak_function sam_usbinitialize(void)
|
||||
* Name: sam_usbhost_initialize
|
||||
*
|
||||
* Description:
|
||||
* Called at application startup time to initialize the USB host functionality.
|
||||
* Called at application start-up time to initialize the USB host functionality.
|
||||
* This function will start a thread that will monitor for device
|
||||
* connection/disconnection events.
|
||||
*
|
||||
@ -457,17 +458,17 @@ void sam_usbhost_vbusdrive(int rhport, bool enable)
|
||||
* Name: sam_setup_overcurrent
|
||||
*
|
||||
* Description:
|
||||
* Setup to receive an interrupt-level callback if an overcurrent condition is
|
||||
* Setup to receive an interrupt-level callback if an over-current condition is
|
||||
* detected on port B or C.
|
||||
*
|
||||
* REVISIT: Since this is a common signal, we will need to come up with some way
|
||||
* to inform both EHCI and OHCI drivers when this error occurs.
|
||||
*
|
||||
* Input paramter:
|
||||
* handler - New overcurrent interrupt handler
|
||||
* handler - New over-current interrupt handler
|
||||
*
|
||||
* Returned value:
|
||||
* Old overcurrent interrupt handler
|
||||
* Old over-current interrupt handler
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
|
@ -60,6 +60,7 @@
|
||||
#define HAVE_NAND 1
|
||||
#define HAVE_USBHOST 1
|
||||
#define HAVE_USBDEV 1
|
||||
#define HAVE_USBOVCUR 1
|
||||
#define HAVE_USBMONITOR 1
|
||||
#define HAVE_NETWORK 1
|
||||
|
||||
@ -248,6 +249,29 @@
|
||||
# undef HAVE_USBHOST
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_USBHOST) && !defined(CONFIG_SAMA5_UHPHS_RHPORT1) && \
|
||||
!defined(CONFIG_SAMA5_UHPHS_RHPORT2) && !defined(CONFIG_SAMA5_UHPHS_RHPORT3)
|
||||
# undef HAVE_USBHOST
|
||||
# warning No ports defined for USB host
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_USBHOST
|
||||
# undef CONFIG_SAMA5_UHPHS_RHPORT1
|
||||
# undef CONFIG_SAMA5_UHPHS_RHPORT2
|
||||
# undef CONFIG_SAMA5_UHPHS_RHPORT3
|
||||
#endif
|
||||
|
||||
/* No overcurrent support if no USB host or no interrupts of PIOD */
|
||||
|
||||
#if !defined(HAVE_USBHOST)
|
||||
# undef HAVE_USBOVCUR
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_USBHOST) && !defined(CONFIG_SAMA5_PIOE_IRQ)
|
||||
# undef HAVE_USBOVCUR
|
||||
# warning CONFIG_SAMA5_PIOE_IRQ need for USB host overcurrent support
|
||||
#endif
|
||||
|
||||
/* Check if we should enable the USB monitor before starting NSH */
|
||||
|
||||
#ifndef CONFIG_SYSTEM_USBMONITOR
|
||||
@ -372,77 +396,91 @@
|
||||
PIO_PORT_PIOE | PIO_PIN15)
|
||||
|
||||
/* USB Ports ************************************************************************/
|
||||
/* The SAMA5D4 series-MB features three USB communication ports:
|
||||
/* The SAMA4D4-EK features three USB communication ports:
|
||||
*
|
||||
* 1. Port A Host High Speed (EHCI) and Full Speed (OHCI) multiplexed with
|
||||
* USB Device High Speed Micro AB connector, J6
|
||||
* * Port A Host High Speed (EHCI) and Full Speed (OHCI) multiplexed with
|
||||
* USB Device High Speed Micro AB connector, J1
|
||||
*
|
||||
* 2. Port B Host High Speed (EHCI) and Full Speed (OHCI) standard type A
|
||||
* connector, J7 upper port
|
||||
* * Port B Host High Speed (EHCI) and Full Speed (OHCI) standard type A
|
||||
* connector, J5 upper port
|
||||
*
|
||||
* 3. Port C Host Full Speed (OHCI) only standard type A connector, J7
|
||||
* lower port
|
||||
* * Port C Host Full Speed (OHCI) and Full Speed (OHCI) standard type A
|
||||
* connector, J5 lower port
|
||||
*
|
||||
* The two USB host ports (only) are equipped with 500-mA high-side power
|
||||
* The three USB host ports are equipped with 500-mA high-side power
|
||||
* switch for self-powered and bus-powered applications.
|
||||
*
|
||||
* The USB device port A (J6) features a VBUS insert detection function.
|
||||
*
|
||||
* The USB device port A (J5) features a VBUS insert detection function.
|
||||
*
|
||||
* Port A
|
||||
* ------
|
||||
*
|
||||
* PIO Signal Name Function
|
||||
* ---- ----------- -------------------------------------------------------
|
||||
* PE9 VBUS_SENSE VBus detection
|
||||
*
|
||||
* Note: No VBus power switch enable on port A. I think that this limits
|
||||
* this port to a device port or as a host port for self-powered devices
|
||||
* only.
|
||||
* PIO Signal Name Function
|
||||
* ---- -------------- -------------------------------------------------------
|
||||
* PE10 USBA_EN5V_PE10 VBus power enable (via MN2 power switch) to VBus pin of
|
||||
* the OTG connector (host)
|
||||
* PE31 USBA_VBUS_PE31 VBus sensing from the VBus pin of the OTG connector (device)
|
||||
*/
|
||||
|
||||
#define PIO_USBA_VBUS_SENSE \
|
||||
#ifdef CONFIG_SAMA5_UHPHS_RHPORT1
|
||||
#define PIO_USBA_VBUS_ENABLE \
|
||||
(PIO_OUTPUT | PIO_CFG_DEFAULT | PIO_OUTPUT_CLEAR | \
|
||||
PIO_PORT_PIOE | PIO_PIN10)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_USBDEV
|
||||
# define PIO_USBA_VBUS_SENSE \
|
||||
(PIO_INPUT | PIO_CFG_PULLUP | PIO_CFG_DEGLITCH | \
|
||||
PIO_INT_BOTHEDGES | PIO_PORT_PIOE | PIO_PIN9)
|
||||
#define IRQ_USBA_VBUS_SENSE \
|
||||
SAM_IRQ_PE9
|
||||
PIO_INT_BOTHEDGES | PIO_PORT_PIOE | PIO_PIN31)
|
||||
# define IRQ_USBA_VBUS_SENSE \
|
||||
SAM_IRQ_PE31
|
||||
#endif
|
||||
|
||||
/* Port B
|
||||
* ------
|
||||
*
|
||||
* PIO Signal Name Function
|
||||
* ---- ----------- -------------------------------------------------------
|
||||
* PE4 EN5V_USBB VBus power enable (via MN3 AIC1526 Dual USB High-Side
|
||||
* Power Switch). To the A1 pin of J7 Dual USB A
|
||||
* connector
|
||||
* PIO Signal Name Function
|
||||
* ---- -------------- -------------------------------------------------------
|
||||
* PE11 USBB_EN5V_PE11 VBus power enable (via MN4 power switch). To the A1
|
||||
* pin of J5 Dual USB A connector
|
||||
*/
|
||||
|
||||
#define PIO_USBB_VBUS_ENABLE \
|
||||
#ifdef CONFIG_SAMA5_UHPHS_RHPORT2
|
||||
# define PIO_USBB_VBUS_ENABLE \
|
||||
(PIO_OUTPUT | PIO_CFG_DEFAULT | PIO_OUTPUT_CLEAR | \
|
||||
PIO_PORT_PIOE | PIO_PIN4)
|
||||
PIO_PORT_PIOE | PIO_PIN11)
|
||||
#endif
|
||||
|
||||
/* Port C
|
||||
* ------
|
||||
*
|
||||
* PIO Signal Name Function
|
||||
* ---- ----------- -------------------------------------------------------
|
||||
* PE3 EN5V_USBC VBus power enable (via MN3 power switch). To the B1
|
||||
* pin of J7 Dual USB A connector
|
||||
* PIO Signal Name Function
|
||||
* ---- -------------- -------------------------------------------------------
|
||||
* PE12 USBC_EN5V_PE12 VBus power enable (via MN4 power switch). To the B1
|
||||
* pin of J5 Dual USB A connector
|
||||
*/
|
||||
|
||||
#define PIO_USBC_VBUS_ENABLE \
|
||||
#ifdef CONFIG_SAMA5_UHPHS_RHPORT3
|
||||
# define PIO_USBC_VBUS_ENABLE \
|
||||
(PIO_OUTPUT | PIO_CFG_DEFAULT | PIO_OUTPUT_CLEAR | \
|
||||
PIO_PORT_PIOE | PIO_PIN3)
|
||||
PIO_PORT_PIOE | PIO_PIN12)
|
||||
#endif
|
||||
|
||||
/* Both Ports B and C
|
||||
/* Both Ports B and C
|
||||
* ------------------
|
||||
*
|
||||
* PIO Signal Name Function
|
||||
* ---- ----------- -------------------------------------------------------
|
||||
* PE5 OVCUR_USB Combined over-current indication from port A and B
|
||||
* PIO Signal Name Function
|
||||
* ---- ------------- -------------------------------------------------------
|
||||
* PD9 USB_OVCUR_PD9 Combined over-current indication from port A and B
|
||||
*/
|
||||
|
||||
#define PIO_USBBC_VBUS_OVERCURRENT \
|
||||
#ifdef HAVE_USBOVCUR
|
||||
# define PIO_USBBC_VBUS_OVERCURRENT \
|
||||
(PIO_INPUT | PIO_CFG_PULLUP | PIO_CFG_DEGLITCH | \
|
||||
PIO_INT_BOTHEDGES | PIO_PORT_PIOE | PIO_PIN5)
|
||||
#define IRQ_USBBC_VBUS_OVERCURRENT \
|
||||
SAM_IRQ_PE5
|
||||
PIO_INT_BOTHEDGES | PIO_PORT_PIOD | PIO_PIN9)
|
||||
# define IRQ_USBBC_VBUS_OVERCURRENT \
|
||||
SAM_IRQ_PD9
|
||||
#endif
|
||||
|
||||
/* Ethernet */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user