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 <lwa...@gmail.com> 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);