It is possible to have the FX2 enumerate at full-speed when plugged into a high speed EHCI controller. It can be done in 2 ways. They are
1. Using EEPROM
At power-on reset, the EZ-USB detects an EEPROM connected to its I2C with the value 0xC2 /0xC0 at address zero, the EZ-USB loads the EEPROM data into on-chip RAM. The 7th byte of this EEPROM data is treated as Configuration Byte. If bit 7 of the Configuration Byte is set it will disable the chirp response and cause full-speed enumeration. Refer Sections 3.4.2 and 3.4.3 of the TRM for more information.
2. Using Register CT1
Register CT1 is located at RAM location 0xE6FB. Setting bit 1 of this register will disable the chirp response and cause full-speed enumeration.
To set FX2LP in full-speed mode by writing to this register follow these steps
- Disconnect from the host by setting bit 3 of the USBCS register (setting the DISCON bit in USBCS register).
- Cause a delay to ensure disconnect has occurred, i.e. EZUSB_Delay (1500).
- Once disconnected, set the bit 1 in the CTL1 register (bit 1) for full speed.
- Reconnect to the host by clearing bit 3 of the USBCS register (clearing the DISCON bit in USBCS register).
- The device renumerates and comes up at full speed
The following lines of code should achieve the above mentioned steps
USBCS |= 0x08;
CT1 |= 0x02;
Note: The CT1(0xE6FB) register is not explicitly mentioned in the TRM but it can be accessed with the name CT1.