Renumeration with a new EEPROM VID/PID

Question: My firmware changes the VID/PID in the I2C EEPROM used to identify my device when it is initially connected. Once the VID/PID is changed, the firmware performs a renumeration. But the new VID/PID is not picked up and the original firmware loader is used. If I unplug the device and reconnect it, the new VID/PID is used and my new firmware loader is used. How can I get the EZUSB to refresh its VID/PID from the EEPROM when it renumerates?



The core only checks for the presence of an EEPROM on its I2C once during power up when the EZ-USB chip comes out of reset. If an EEPROM is detected, the loader reads the first EEPROM byte to determine how to enumerate.

Once you download the firmware you may use it to change the contents of the EEPROM (as the Vend_Ax example can), but this new VID/PID will NOT overwrite the default VID/PID or any previous VID/PID. So in order for the new VID/PID to be picked up and be reported to the host, you will need to unplug and re-plug the device.

An alternate method of changing the VID/PID after having downloaded the firmware, is by changing these fields in the device descriptor (where the device descriptor resides in memory) and renumerating by performing software disconnect followed by a re-connect. See the fw.c for details on implementing renumeration.