Is it possible to force FX2(CY7C68013) to enumerate as a full speed device when plugged into a high speed host (EHCI controller) (11995)

Question: Is it possible to force FX2 (CY7C68013) to enumerate as a full speed device when plugged into a high speed host (EHCI controller)?

 

Answer:

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;
EZUSB_Delay(1500);
CT1 |= 0x02;
USBCS &=0xF7;

Note: The CT1(0xE6FB) register is not explicitly mentioned in the TRM but it can be accessed with the name CT1.