History: usbh_drv_ohci

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


2.21 (2020-05-26, 09:55):

  • Fixed compilation warnings

2.20 (2019-12-03, 14:55):

  • Static analysis issues eliminated.

2.19 (2019-10-18, 15:12):

  • Static analysis issues eliminated.

2.18 (2018-08-27, 16:30):

  • Static analysis issues eliminated.

2.17r2 (2018-08-29, 18:05):

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

2.17 (2018-04-20, 15:26):

  • Compiler warnings eliminated.

2.16 (2017-09-25, 16:41):

  • Module interrupt is only enabled after initializing its service routine. This ensures correct operation in case interrupt is enabled in advance by another module (for example because OHCI interrupt is shared with EHCI interrupt).

2.15 (2017-06-29, 10:36):

  •  Compiler warning was eliminated.


  • Transfer completed size is updated with the number of bytes actually transferred in case transfer is stopped using ohci_transfer_stop().


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


  • PSP header file name changed.


  • Faulty behavior of removing device address zero fixed.


  • Under some special circumstances unplugging a device could stop the USB completely.


  • If ISO IN receives less data than requested then it reports USBH_SHORT_PACKET instead of USBH_SUCCESS.
  • ISO and non-ISO transfer start restructured.
  • Under certain circumstances if data cache was enabled the system could hang ( tried to unlock memory even if lock returned the same address).
  • Added the ability to set OHCI_MAX_ISO_TRANSFER to 0.


 - when transfer was stopped due to timeout the system got into a blocked state due to incorrect usage of mutexes, this issue only occurred if RTOS was used.

 - mem_alloc cast to uint8_t * to avoid warning.

 - usbh_ohci_hc defined as extern void * const to be consistent with the definition.


 - the driver could return an error when starting because it didn't wait for the operational state to complete.


 - 10 ms delay added to ohci_hub_start to have a delay before powering on the port (switched off from ohci_hub_init).


 - OAL resource initialization changed. It will free resources from init in case of failure.


 - ohci_hub_start is moved after ohci_isr_enable, to avoid missing interrupts on systems that can't handle an active interrupt when enabled. This could lead to unrecognized device attached at startup.


 - hcc_mem_unlock will be always called if hcc_mem_lock was executed, this way if lock can flush the cache then the buffer will be invalidated as well when the transfer is finished.


 - ep_hub_inf structure added before ehci_add_ep in ehci_start function to avoid passing NULL pointer to add_ep.


 - added hcc_mem_phy_addr and hcc_mem_uncached to obtain the correct memory address for a transfer. This is required if virtual addresses are used in the system. For example if the same RAM region is mapped to a virtual uncached address then before being able to DMA to/from that area the address needs to be converted to physical address.