NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

Inventra HDRC USB Controller

From Texas Instruments Wiki
Jump to: navigation, search

The Inventra HDRC USB Controller (HDRC = Highspeed Dual Role Controller) is a member of an ASIC design family that is used by TI and several other vendors for implementing USB functionalities. Modes of the unit are master (host, A device; with high, full and low speed) and slave (gadget, B device; high and full speed). Some variants might only support 4 fully flexible endpoints in slave mode at the same time. In master mode some variants of this units might only drive one slave or endpoint at a time plus one hub in between. Due to the sufficiently smart switching ability between those modes the USB On-The-Go (OTG) standard is implemented by this unit.

TI semiconductors equipped with this unit[edit]

This unit is used in these TI devices:

  • DaVinci (DM355, DM365, DM644x, DM6467)
  • OMAP (OMAP 243x, OMAP 3; DA830/OMAP-L137)
  • TUSB 6010

Linux drivers[edit]

This unit is supported by the Linux kernel by the musb code and module. For using it it needs to be enabled whilst configuring the kernel included desired sub options and maybe the more general Linux USB OTG capability.

The TI data sheet for the OMAP35x (dated July 2008) lists this features:

  • Host mode driver
    • Mass Storage Class (MSC) Host
    • Hub Class.
    • Human Interface Devices (HID)
    • Isochronous Devices(ISO)
  • Slave mode driver
    • Mass Storage Class (MSC) Slave.
    • Communication Device Class (CDC) Slave support
    • Remote Network Driver Interface Specification (RNDIS) Slave support.

For that specific processor at that time OTG was mentioned as not-supported by the described version of the drivers.

The LSP 1.20 documentation (April 2008) for the DaVinci family states this:

The USB peripheral provides support for USB 2.0 including HID, HDD, CD and mass storage classes. [...] The USB driver is implemented as a communication driver. EDMA is used for both host and device operations. USB host and slave drivers are described in the following sections.

And later provides this more detailed listing on the drivers maturity state:

  • Supports data transfer in both PIO and DMA mode for all kernel preemption modes
  • Supports host and slave operations
  • Supports class driver for HID and Mass storage.
  • Supports USB ISO Class
  • Supports partial USB OTG for HNP and SRP. (HNP=Host Negotiation Protocol, SRP=Session Request Protocol)
    • USB OTG functionality has been tested on the DM355 devices by connecting two EVMs back to back using a mini-AB USB cable.
    • OTG functionality is currently operated/invoked by providing inputs to the proc entry.

With the publicly available preliminary documentation for LSP 2.10 dealing with the "DaVinci Linux Device Drivers" there comes a rich set of USB bandwidth benchmarks for a variety of processors and the following listing of featured USB drivers:

  • Data transfer in both PIO and DMA mode for all preemption modes
  • Internal CPPI DMA is used for both host and device operations.
  • Interrupt Endpoint scheduling feature to overcome the limitations of availability of number of Interrupt endpoints.
  • Provision to reserve bulk or Isochronous endpoints according to the necessity.
  • MSC Host and Slave support
  • USB HID Host support with hiddev and evdev interfaces
  • CDC Slave support (see e.g. this page at usb-software.org)
  • RNDIS Slave support
  • USB-ISO Audio/Video Host support

The software driver stack is divided in at least two functional layers. The base is the musb_hdrc module that knows about and controls the ASIC unit. The upper layers are formed by a set of gadget drivers for the various functionalities. These will, depending on system configuration, load and then plug in to the musb_hdrc module. They will get activated after the USB connection has successfully completed its configuration cycle using the Session Request Protocol (SRP) and finished this in the matching mode (host/gadget). The driver further takes care for the right voltage detection state as provided by the hardware unit. The hardware unit provides voltage level indicators matching the A mode (AVALID) and B mode (general VALID indicator) requirements, thus correct external wiring of all related pins of the SOC is necessary for proper operation.

Other Family members[edit]

Another naming related to a variant of this unit in the Linux kernel driver source is:

Inventra (Multidrop) Highspeed Dual-Role Controllers: (M)HDRC

Other variants out there in the wild are known as:

Mentor Graphics Inventra USB Full-Speed Dual-Role Controller (MUSBFDRC)

Web Links[edit]

Technology Related Press Releases[edit]

E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article Inventra HDRC USB Controller here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article Inventra HDRC USB Controller here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article Inventra HDRC USB Controller here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article Inventra HDRC USB Controller here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article Inventra HDRC USB Controller here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article Inventra HDRC USB Controller here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article Inventra HDRC USB Controller here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article Inventra HDRC USB Controller here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article Inventra HDRC USB Controller here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity