History: usbh_drv_max3421

This page describes all changes made to the usbh_drv_max3421 package, the USB MAX3421 Host Controller, since its release.



  • Added psp_spi_lock() and psp_spi_unlock() before and after accessing the SPI bus.
  • Introduced spiusp_set_isr_id() function to allow multiple devices on the SPI bus.
  • Introduced MAX3421_UH_SPI_SINGLE_MODE configuration option to be able to indicate that this is the only slave unit on the SPI bus.
  • psp_types.h used instead of stdint.h and stddef.h.


  • Updated to work with USB host base major version 3.


  • Warning removed from max3421_uh_hub_stop.


  • Decreased interrupt load in case if connection interrupt.
  • max3421_get_iopins and max3421_set_opins fixed.
  • Executed chip reset after after connection to the root HUB. This is required because due to an issue in the chip it can happen that double buffered endpoints transmit incorrect data in case a device has been unplugged in the wrong moment.
  • Transfer task changed to unlock the mutex when necessary. Required because if the SPI function(s) can reschedule the system then incorrect access to the MAX3421 could occur.
  • Handles first byte corruption in the SNDFIFO according to the errata.


  • hw_start(), stop(), delete() called from driver functions
  • SOF interrupt control modified for Bulk endpoints when using ONE_NAK_PER_FRAME: SOF interrupts are not enabled permanently during a Bulk transfer.


  • Initiate chip reset after port disconnect. Unsent data in the FIFO may be sent after next connection.  
  • EP0 not removed from del_daddr().
  • Removed warnings for unused parameters
  • SOF interrupts only enabled if either INT transfers are active or ONE_NAK_PER_FRAME is enabled and Bulk transfers are active.


  • Many fixes to handle transfers in a correct way.


  • Initial release.