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

Version 1
    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.