History: usbh_drv_musb_dma

This page describes all changes made to the usbh_drv_musb_dma package, the USB MUSB DMA Host Controller, since its release.


1.14 (2021-06-11, 15:03):

  • Driver stop did not work correctly (active session was not stopped).
  • Fixed port suspend and resume.
  • Bug fix: ISO RX and TX endpoint queues were not separated correctly. This caused mixing of IN and OUT EP transfers.
  • Bug fix: Double OUT ISO packets were sent when an audio device has feedback endpoint.
  • Corrected EP polling interval calculation.

1.13 (2021-02-19, 15:40):

  • MCU cores without separated DMA interrupt are supported.

1.12 (2021-02-24, 17:33):

  • Enumeration could fail after device reconnection.

1.11 (2021-02-16, 11:30):

  • Added ISO handling.

1.10r2 (2020-09-22, 16:36):

  • Added psp_template_membar dependency to the info file.

1.10 (2020-09-03, 15:30):

  • DMA was able to transfer more data into the user buffer than the size of the buffer.
  • Flushing the FIFO of a TX endpoint had no effect.
  • Requesting IN transactions were not stopped when the RX transfer ended with timeout or error.

1.9r2 (2020-08-03, 18:46):

  • Fixed configuration file in Smartfusion PSP (did not compile due to wrong version number check).

1.9 (2020-07-02, 17:32):

  • After USB reset, potential interrupted transfers could be mistakenly transmitted.
  • Added PSP template for ADSP-SC573 EZ-BOARD with FreeRTOS.

1.8 (2020-01-24, 12:32):

  • DMA transfers might generate unnecessary copying between RAM buffers.
  • Data corruption might occur when built with optimization enabled.
  • Added PSP template for ADSP-SC589 EZ-BOARD with FreeRTOS.

1.7 (2018-10-04, 10:13):

  • Control endpoint (Endpoint0) communication (e.g. enumeration) might have failed because of improper register access on some microcontrollers (e.g. SmartFusion2).
  • Non-control endpoint communication (e.g. bulk read/write, like r/w on mass-storage devices) might have failed on some microcontrollers (e.g. SmartFusion2).
  • New on Driver<->PSP interface: the driver expects HCC_MUSB_VADDR_TO_PADDR (the macro defining virtual to physical address conversion) to be defined in psp_usbh_musb_dma.h. This is because this attribute is platform-dependent.
  • New on Driver<->PSP interface: depending on the MCU non-word reading from endpoint FIFO might need different handling than what the documentation says. This deviation, if present, will be in psp_usbh_musb_dma.h. PIC32MZ devices behave this way - PIC32MZ PSP updated accordingly.
  • Added PSP for Microsemi SmartFusion2 (dev. board: Emcraft SOM-M2S010).

1.6r2 (2018-08-29, 18:16):

  • Document HTML link added to the documentation folder.
  • History and document files renamed to the package name.


  • Communication to devices with slow response time might fail - fixed.
  • Compiler warning eliminated.


  • Transfers or enumeration cannot be started due to DMA buffers could remain locked.
  • High speed mode can be enabled/disabled from configuration (MUSB_ENABLE_HS).


  • Virtual address translation was added.
  • Automatic session restart can be disabled from configuration (MUSB_RESTART_SESSION_AT_DISCONNECT).


  • IN transfers ending with short packet could fail.
  • Simultaneous transfers on different non control endpoints could cause data loss on one of the affected endpoints.
  • Connecting a device could cause unnoticed VBUS loss.
  • General code cleanup.


  • The maximum NAK rate interval setting changed. With some bInterval settings USB host high-speed BULK OUT endpoint doesn't transfer data.


  • Initial release.