This is an automated email from the ASF dual-hosted git repository.
raiden00 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 2a7174601fc boards/sama5d3-xplained: Use common usb host waiter.
2a7174601fc is described below
commit 2a7174601fc751d7fd44a71dbbc64229223437af
Author: Lwazi Dube <[email protected]>
AuthorDate: Mon May 19 16:34:24 2025 -0400
boards/sama5d3-xplained: Use common usb host waiter.
Delete the board-specific usb host waiters and use the common code.
---
arch/arm/src/sama5/Kconfig | 2 +
boards/arm/sama5/sama5d3-xplained/src/sam_usb.c | 128 ++++--------------------
2 files changed, 20 insertions(+), 110 deletions(-)
diff --git a/arch/arm/src/sama5/Kconfig b/arch/arm/src/sama5/Kconfig
index 5e03b6e6c44..d1796b3b38c 100644
--- a/arch/arm/src/sama5/Kconfig
+++ b/arch/arm/src/sama5/Kconfig
@@ -4120,6 +4120,7 @@ config SAMA5_OHCI
default n
select USBHOST
select USBHOST_HAVE_ASYNCH
+ select USBHOST_WAITER
---help---
Build support for the SAMA5 USB full speed Open Host Controller
Interface (OHCI).
@@ -4156,6 +4157,7 @@ config SAMA5_EHCI
default n
select USBHOST
select USBHOST_HAVE_ASYNCH
+ select USBHOST_WAITER
---help---
Build support for the SAMA5 USB high speed Enhanced Host
Controller
Interface (EHCI). If low/full speed is needed too, then you
must
diff --git a/boards/arm/sama5/sama5d3-xplained/src/sam_usb.c
b/boards/arm/sama5/sama5d3-xplained/src/sam_usb.c
index f8848b947ec..1ddeb94f06c 100644
--- a/boards/arm/sama5/sama5d3-xplained/src/sam_usb.c
+++ b/boards/arm/sama5/sama5d3-xplained/src/sam_usb.c
@@ -52,14 +52,6 @@
* Pre-processor Definitions
****************************************************************************/
-#ifndef CONFIG_SAMA5D3XPLAINED_USBHOST_PRIO
-# define CONFIG_SAMA5D3XPLAINED_USBHOST_PRIO 50
-#endif
-
-#ifndef CONFIG_SAMA5D3XPLAINED_USBHOST_STACKSIZE
-# define CONFIG_SAMA5D3XPLAINED_USBHOST_STACKSIZE 1024
-#endif
-
#ifdef HAVE_USBDEV
# undef CONFIG_SAMA5_UHPHS_RHPORT1
#endif
@@ -68,15 +60,6 @@
* Private Data
****************************************************************************/
-/* Retained device driver handles */
-
-#ifdef CONFIG_SAMA5_OHCI
-static struct usbhost_connection_s *g_ohciconn;
-#endif
-#ifdef CONFIG_SAMA5_EHCI
-static struct usbhost_connection_s *g_ehciconn;
-#endif
-
/* Overcurrent interrupt handler */
#if defined(HAVE_USBHOST) && defined(CONFIG_SAMA5_PIOD_IRQ)
@@ -87,86 +70,6 @@ static xcpt_t g_ochandler;
* Private Functions
****************************************************************************/
-/****************************************************************************
- * Name: usbhost_waiter
- *
- * Description:
- * Wait for USB devices to be connected to either the OHCI or EHCI hub.
- *
- ****************************************************************************/
-
-#ifdef HAVE_USBHOST
-#ifdef CONFIG_DEBUG_USB
-static int usbhost_waiter(struct usbhost_connection_s *dev,
- const char *hcistr)
-#else
-static int usbhost_waiter(struct usbhost_connection_s *dev)
-#endif
-{
- struct usbhost_hubport_s *hport;
-
- uinfo("Running\n");
- for (; ; )
- {
- /* Wait for the device to change state */
-
- DEBUGVERIFY(CONN_WAIT(dev, &hport));
- uinfo("%s\n", hport->connected ? "connected" : "disconnected");
-
- /* Did we just become connected? */
-
- if (hport->connected)
- {
- /* Yes.. enumerate the newly connected device */
-
- CONN_ENUMERATE(dev, hport);
- }
- }
-
- /* Keep the compiler from complaining */
-
- return 0;
-}
-#endif
-
-/****************************************************************************
- * Name: ohci_waiter
- *
- * Description:
- * Wait for USB devices to be connected to the OHCI hub.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_SAMA5_OHCI
-static int ohci_waiter(int argc, char *argv[])
-{
-#ifdef CONFIG_DEBUG_USB
- return usbhost_waiter(g_ohciconn, "OHCI");
-#else
- return usbhost_waiter(g_ohciconn);
-#endif
-}
-#endif
-
-/****************************************************************************
- * Name: ehci_waiter
- *
- * Description:
- * Wait for USB devices to be connected to the EHCI hub.
- *
- ****************************************************************************/
-
-#ifdef CONFIG_SAMA5_EHCI
-static int ehci_waiter(int argc, char *argv[])
-{
-#ifdef CONFIG_DEBUG_USB
- return usbhost_waiter(g_ehciconn, "EHCI");
-#else
- return usbhost_waiter(g_ehciconn);
-#endif
-}
-#endif
-
/****************************************************************************
* Public Functions
****************************************************************************/
@@ -175,7 +78,7 @@ static int ehci_waiter(int argc, char *argv[])
* Name: sam_usbinitialize
*
* Description:
- * Called from sam_usbinitialize very early in inialization to setup
+ * Called from sam_usbinitialize very early in initialization to setup
* USB-related GPIO pins for the SAMA5D3-Xplained board.
*
* USB Ports
@@ -290,6 +193,13 @@ int sam_usbhost_initialize(void)
{
int ret;
+#ifdef CONFIG_SAMA5_OHCI
+ struct usbhost_connection_s *ohciconn;
+#endif
+#ifdef CONFIG_SAMA5_EHCI
+ struct usbhost_connection_s *ehciconn;
+#endif
+
/* First, register all of the class drivers needed to support the drivers
* that we care about
*/
@@ -359,18 +269,17 @@ int sam_usbhost_initialize(void)
#ifdef CONFIG_SAMA5_OHCI
/* Get an instance of the USB OHCI interface */
- g_ohciconn = sam_ohci_initialize(0);
- if (!g_ohciconn)
+ ohciconn = sam_ohci_initialize(0);
+ if (!ohciconn)
{
uerr("ERROR: sam_ohci_initialize failed\n");
return -ENODEV;
}
- /* Start a thread to handle device connection. */
+ /* Initialize waiter */
+
+ ret = usbhost_waiter_initialize(ohciconn);
- ret = kthread_create("OHCI Monitor", CONFIG_SAMA5D3XPLAINED_USBHOST_PRIO,
- CONFIG_SAMA5D3XPLAINED_USBHOST_STACKSIZE,
- ohci_waiter, NULL);
if (ret < 0)
{
uerr("ERROR: Failed to create ohci_waiter task: %d\n", ret);
@@ -381,18 +290,17 @@ int sam_usbhost_initialize(void)
#ifdef CONFIG_SAMA5_EHCI
/* Get an instance of the USB EHCI interface */
- g_ehciconn = sam_ehci_initialize(0);
- if (!g_ehciconn)
+ ehciconn = sam_ehci_initialize(0);
+ if (!ehciconn)
{
uerr("ERROR: sam_ehci_initialize failed\n");
return -ENODEV;
}
- /* Start a thread to handle device connection. */
+ /* Initialize waiter */
+
+ ret = usbhost_waiter_initialize(ehciconn);
- ret = kthread_create("EHCI Monitor", CONFIG_SAMA5D3XPLAINED_USBHOST_PRIO,
- CONFIG_SAMA5D3XPLAINED_USBHOST_STACKSIZE,
- ehci_waiter, NULL);
if (ret < 0)
{
uerr("ERROR: Failed to create ehci_waiter task: %d\n", ret);