ALTracer opened a new issue, #8968:
URL: https://github.com/apache/nuttx/issues/8968

   ## Summary
   I can't get USB OTG to work in device mode on WeAct BlackPill STM32F411CEU6 
rev 3.1 in CDC/ACM, MSC and COMPOSITE configurations.
   ## Impact
   Possibly all stm32f4-based boards and dwc2 IP users without VBUS_SENSE pad 
routed.
   ## Description
   As I was bringing up some more configs for stm32f411-minimum, I stumbled 
upon non-working USBDEV. USBHOST won't work because I didn't bridge VBUS with 
onboard 5V pin yet, and I don't need USBHOST on this board.
   
   I see several issues in stm32_otgfsdev driver code:
   1. VBUSASEN/VBUSBSEN bits are written unconditionally. Does NOVBUSSENS 
actually override them in this IP core version?
   ```patch
   diff --git a/arch/arm/src/stm32/stm32_otgfsdev.c 
b/arch/arm/src/stm32/stm32_otgfsdev.c
   index a0a9ecb70..7bf89426c 100644
   --- a/arch/arm/src/stm32/stm32_otgfsdev.c
   +++ b/arch/arm/src/stm32/stm32_otgfsdev.c
   @@ -5362,9 +5362,11 @@ static void stm32_hwinitialize(struct stm32_usbdev_s 
*priv)
       * Sense when Set
       */
    
   -  regval  = (OTGFS_GCCFG_PWRDWN | OTGFS_GCCFG_VBUSASEN |
   -             OTGFS_GCCFG_VBUSBSEN);
   -# ifndef CONFIG_USBDEV_VBUSSENSING
   +  regval  = OTGFS_GCCFG_PWRDWN;
   +
   +# ifdef CONFIG_USBDEV_VBUSSENSING
   +  regval |= OTGFS_GCCFG_VBUSBSEN;
   +# else
      regval |= OTGFS_GCCFG_NOVBUSSENS;
    # endif
    # ifdef CONFIG_STM32_OTGFS_SOFOUTPUT
    ```
   
   2. CONFIG_STM32_USBDEV_REGDEBUG option is unreachable. I added it to Kconfig 
myself to achieve the following trace:
   
   ```patch
   diff --git a/arch/arm/src/stm32/Kconfig b/arch/arm/src/stm32/Kconfig
   index 214a31ef3..7094ea2a6 100644
   --- a/arch/arm/src/stm32/Kconfig
   +++ b/arch/arm/src/stm32/Kconfig
   @@ -11088,6 +11088,15 @@ config STM32_USBFS_REGDEBUG
    
    endmenu
    
   +menu "USB OTG Device Debug Configuration"
   +
   +config STM32_USBDEV_REGDEBUG
   +       bool "Register-Level Debug for OTG in Device mode"
   +       default n
   +       depends on USBDEV && DEBUG_USB_INFO
   +
   +endmenu
   +
    menu "OTG Configuration"
           depends on STM32_OTGFS
    
   ```
   
   I input sercon, msconn, conn and disconn. The latter triggered an assert 
because my Gentoo Host cannot enumerate this device.
   
   ```
   ern  :info  : [ +18.810180] usb 1-8: new full-speed USB device number 20 
using xhci_hcd
   kern  :err   : [  +0.204052] usb 1-8: device descriptor read/64, error -71
   kern  :err   : [  +0.280011] usb 1-8: device descriptor read/64, error -71
   kern  :info  : [  +0.281943] usb 1-8: new full-speed USB device number 21 
using xhci_hcd
   kern  :err   : [  +0.205060] usb 1-8: device descriptor read/64, error -71
   kern  :err   : [  +0.280995] usb 1-8: device descriptor read/64, error -71
   kern  :info  : [  +0.106046] usb usb1-port8: attempt power cycle
   kern  :info  : [Apr 5 11:16] usb 1-8: new full-speed USB device number 22 
using xhci_hcd
   kern  :warn  : [  +0.026800] usb 1-8: Device not responding to setup address.
   kern  :warn  : [  +0.236003] usb 1-8: Device not responding to setup address.
   kern  :err   : [  +0.205205] usb 1-8: device not accepting address 22, error 
-71
   kern  :info  : [  +0.179008] usb 1-8: new full-speed USB device number 23 
using xhci_hcd
   kern  :warn  : [  +0.026811] usb 1-8: Device not responding to setup address.
   kern  :warn  : [  +0.237983] usb 1-8: Device not responding to setup address.
   kern  :err   : [  +0.204205] usb 1-8: device not accepting address 23, error 
-71
   kern  :err   : [  +0.004012] usb usb1-port8: unable to enumerate USB device
   ```
   
   Wireshark usbmon0 traces later. STM32 DfuSe USB BootROM works.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to