Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 11/27/2024
Public
Document Table of Contents

5.7.6.4. Device Initialization

The following process sets up the USB OTG controller as a USB device:

  1. After power up, the USB OTG controller must be set to the desired device speed by writing to the Device Speed (devspd) bits in the Device Configuration Register (dcfg) in the Device Mode Registers (devgrp) group. After the device speed is set, the controller waits for a USB host to detect the USB port as a device port.
  2. When an external host detects the USB port, the host performs a port reset, which generates an interrupt to the USB device software. The USB Reset (usbrst) bit in the Interrupt (port reset) register in the Global Registers (globgrp) group is set. The device software then sets up the data FIFO buffer to receive a SETUP packet from the external host. Endpoint 0 is not enabled yet.
  3. After completion of the port reset, the operation speed required by the external host is known. Software reads the device speed status and sets up all the remaining required transaction fields to enable control endpoint 0.

After completion of this process, the device is receiving SOF packets, and is ready for the USB host to set up the device’s control endpoint.