CY7C67200 Errata Revision: *A June 25, 2004 Errata Document for CY7C67200 This document describes the errata for the CY7C67200. Details include errata trigger conditions, available workarounds, and silicon revision applicability. This document should be used to compare to the datasheet for this device to fully describe the device functionality. Please contact your local Cypress Sales Representative if you have further questions. Part Numbers Affected Part Number Device Characteristics CY7C67200 All Packages CY7C67200 Qualification Status In Production CY7C67200 Errata Summary The following table defines the errata applicability to available CY7C67200 family devices. An "X" indicates that the errata pertains to the selected device. Note: Errata titles are hyperlinked. Click on table entry to jump to description. CY7C67200 Rev Letter Fix Status 1. HPI write to SIE registers. Items X A No fix is currently planned for future silicon versions. Use workaround. 2. IDE register read when GPIO24 pin is low. X A No fix is currently planned for future silicon versions. Use workaround. 3. UART does not recognize framing errors. X A No fix is currently planned for future silicon versions. Use workaround. 4. UART Does not override GPIO Control Register. X A No fix is currently planned for future silicon versions. Use workaround. 5. VBUS Interrupt (VBUS Valid) Requires Debouncing. X A No fix is currently planned for future silicon versions. Use workaround. 6. Coupled SIE Interrupt Enable Bits. X A No fix is currently planned for future silicon versions. Use workaround. 7. Un-Initialized SIExmsg Registers X A No fix is currently planned for future silicon versions. Use workaround. 8. BIOS USB Peripheral Mode: Descriptor Length. X A No fix is currently planned for future silicon versions. Use workaround. 9. Peripheral short packet issue X A Will be fixed in future silicon revision. Use workaround. 10. Data toggle corruption issue X A Will be fixed in future silicon revision. Use workaround. San Jose • Cypress Semiconductor Corporation • 3901 North First Street • CA 95134 • 408-943-2600 June 2004 Errata Document CY7C67200 1. HPI write to SIE registers. • PROBLEM DEFINITION Writing to the SIE2 Control register via HPI can corrupt the SIE1 control register. Writing to the SIE1 Control register via HPI can corrupt the SIE2 control register. • PARAMETERS AFFECTED SIE control registers • TRIGGER CONDITION(S) When an external processor accesses the SIE1 or SIE2 register at the same time the internal CY16 CPU is also accessing the opposite SIE, the SIE accessed by the CY16 CPU will be corrupted. For example, the external processor writes a value of 0x80 to the SIE2 register 0xC0B0 while the internal CY16 is doing a read/write to the SIE1 register 0xC08C, the SIE1 register 0xC08C, will be corrupted with the value 0x80. • SCOPE OF IMPACT If the internal CPU and external CPU access the SIEs at the same time, contention will occur resulting in incorrect data in one of the SIE registers. • WORKAROUND 1. Use the LCP COMM_WRITE_CTRL_REG to handle the writing to SIE registers. 2. Use download code to handle SIE WRITE commands. 3. Avoid accessing SIE register from the external CPU. For example: Route all the SIE interrupts to the software mailbox interrupt registers 0x144 and 0x148. This requires user to create download code. • FIX STATUS Use workaround. No fix is currently planned for future silicon revisions. An implementation example is included in the Cypress Windows CE driver. 2. IDE register read when GPIO24 pin is low. • PROBLEM DEFINITION Part does not service USB ISRs when GPIO24 pin (also labeled as HPI_INT and IORDY) is low and any IDE register is read. • PARAMETERS AFFECTED USB ISRs do not get serviced. • TRIGGER CONDITIONS The IDE registers (0xC050 through 0xC06E) should not be read unless IDE is being used. Debuggers that read all memory locations while single stepping can cause this situation to manifest itself. • SCOPE OF IMPACT If debugging and using this pin, your application will appear to hang. • WORKAROUND When running in stand-alone mode, avoid using the GPIO24 pin if possible. • FIX STATUS Other workarounds being investigated. No fix is currently planned for future silicon revisions. 3. UART Does Not Recognize Framing Errors • PROBLEM DEFINITION The UART is not designed to recognize framing errors. • PARAMETERS AFFECTED UART serial communications. • TRIGGER CONDITIONS Some platforms can cause EZ-OTG to see a string of NULL characters and cause the UART to get out of sync. • SCOPE OF IMPACT This can cause the UART to lose connection with the host during serial communications. One example of this is if the UART is used as the debug port to the PC. This problem has occurred on, but is not limited to, Dell machines running WinXP or Win2k. 2 Errata Document CY7C67200 • WORKAROUND For general use, there is no workaround. If this problem is experienced while debugging, try running the debugger on a different Host (PC/OS). Otherwise the USB port can be used for the debugging interface. • FIX STATUS No fix is currently planned for future silicon versions. 4. UART does not override GPIO Control Register • PROBLEM DEFINITION When the UART is enabled, the GPIO Control Register still has control over GPIO 6 (UART RX pin). When enabled, the UART should override the GPIO Control Register, which defaults to setting the pin as an input. • PARAMETERS AFFECTED UART serial communications. • TRIGGER CONDITIONS Enabling UART • SCOPE OF IMPACT GPIO 6 UART RX pin is controlled by GPIO Control Register and defaults to an input. The UART mode does not override the GPIO control register for this pin and can be inadvertently configured as an output. • WORKAROUND Ensure the GPIO Control Register is written appropriately to set GPIO6 as an input when the UART is enabled. • FIX STATUS No fix is currently planned for future silicon versions. 5. VBUS Interrupt (VBUS Valid) Requires Debouncing • PROBLEM DEFINITION The VBUS interrupt in the Host/Device Status Registers [0xC090 and 0xC0B0] and OTG Control Register [0xC098] triggers multiple times whenever VBUS is turned on. It should only trigger once when VBUS rises above 4.4V and once when VBUS falls from above 4.4V to 0V. • PARAMETERS AFFECTED Electrical. • TRIGGER CONDITIONS VBUS turned on. • SCOPE OF IMPACT Host/Device Registers and OTG Control Register trigger multiple times. • WORKAROUND When reading the status of this interrupt, a software debounce should be implemented. • FIX STATUS No fix is currently planned for future silicon versions. 6. Coupled SIE Interrupt Enable Bits • PROBLEM DEFINITION Host/Device 1 SIE events will still trigger an interrupt when only the Host/Device 2 SIE Interrupt Enable is set and vise versa. • PARAMETERS AFFECTED Host/Device SIE Interrupts. • TRIGGER CONDITIONS Setting only 1 Host/Device SIE Interrupt Enable. • SCOPE OF IMPACT The Host/Device global Interrupt Enable bits can not be used to disable each Host/Device SIE independently. These bits are found in the Interrupt Enable Register (0xC00E). • WORKAROUND If an SIE Interrupt is desired, both Host/Device 1 and Host/Device 2 Interrupt Enable bits should be set in the global Interrupt Enable Register (0xC00E). To properly mask an SIE Interrupt to a single SIE, the lower level Host/Device Interrupt Enable Registers (0xC08C and 0xC0AC) must be used. For example, setting the 3 Errata Document CY7C67200 Host/Device 2 IE Register to 0x0000 will prevent any Host/Device 2 events from generating a Host/Device Interrupt. To disable all SIE interrupts, both Host/Device Interrupt Enable bits in the Interrupt Enable Register should be cleared. • FIX STATUS No fix is currently planned for future silicon versions. Examples provided in the Development Kit Software. 7. Un-Initialized SIExmsg Registers • PROBLEM DEFINITION The SIE1msg and SIE2msg Registers [0x0144 and 0x0148] are not initialized at power up. • PARAMETERS AFFECTED HPI interrupts. • TRIGGER CONDITIONS Power up initialization. • SCOPE OF IMPACT If using the HPI interface in coprocessor mode, random data will be written to the SIE1msg and SIE2msg Registers [0x0144 and 0x0148] at power up. This will cause two improper HPI interrupts (HPI_INTR) to occur, one for each of the two SIExmsg Registers. • WORKAROUND The external processor should clear the SIExmsg Registers [0x0144 and 0x0148] shortly after nRESET is deasserted and prior to the expected processing of proper HPI interrupts (generally 10ms after nRESET is deasserted.) • FIX STATUS No fix is currently planned for future silicon versions. 8. BIOS USB Peripheral Mode: Descriptor Length • PROBLEM DEFINITION The BIOS will not properly return a descriptor or set of descriptors if the length is a multiple of the control endpoint’s maximum packet size. • PARAMETERS AFFECTED Control Endpoint maximum packet size. • TRIGGER CONDITIONS Get Descriptor requests. • SCOPE OF IMPACT If the descriptor length is a multiple of the maximum packet size, the BIOS will respond with a STALL instead of a zero-length data packet for the final IN request. • WORKAROUND If the requested descriptor length is a multiple of the maximum packet size, then either the maximum packet size or the descriptor length needs to change. A descriptor length can be increased by simply adding a padded byte to the end of a descriptor and increasing the descriptor Length byte by one. Section 9.5 (Descriptor) of the USB2.0 specification allows a descriptor length to be larger than the value defined in the specification. • FIX STATUS No fix is currently planned for future silicon versions. 9. Peripheral short packet issue • PROBLEM DEFINITION When a SIE is configured as a peripheral, the SUSBx_RECEIVE function does not invoke the callback function when it receives a short packet. • PARAMETERS AFFECTED SIEx Endpoint x Interrupt (Interrupt 32-47). • TRIGGER CONDITIONS This issue is seen when a SIE is configured as a peripheral during an OUT data transfer when the host sends a zero length or short packet. If this occurs the BIOS will behave as if a full packet was received and will continue to accept data until the Device n Endpoint n Count Register value is satisfied. 4 Errata Document CY7C67200 • SCOPE OF IMPACT All peripheral functions are susceptible to this as it is a normal occurrence with USB traffic. • WORKAROUND To fix this problem the SIEx Endpoint x Interrupt must be replaced for any peripheral endpoint that is configured as an OUT endpoint. 1. Acquire the file called susb1.s from Cypress Support or by downloading a newer version of the frameworks that has had this fix applied and includes susb1.s. 2. Modify fwxcfg.h in your project to have the following flags and define/undef the fix for the endpoints you are using: #define #define #undef #undef #undef #undef #undef FIX_USB1_EP1 FIX_USB1_EP2 FIX_USB1_EP3 FIX_USB1_EP4 FIX_USB1_EP5 FIX_USB1_EP6 FIX_USB1_EP7 #undef #undef #undef #undef #undef #undef #undef FIX_USB2_EP1 FIX_USB2_EP2 FIX_USB2_EP3 FIX_USB2_EP4 FIX_USB2_EP5 FIX_USB2_EP6 FIX_USB2_EP7 3. Add the new susb1.s to the included assembly source files in the make file. For example : ASM_SRC := startup.s isrs.s susb1.s 4. Add usb_init somewhere in the startup code. This will likely be in fwxmain.c as demonstrated below: void fwx_program_init(void) { void usb_init(); /* define the prototype */ usb_init(); fwx_init(); /* Initialize everything in the base framework. */ } 5. Build the project using the modified make file. • FIX STATUS The ROM version of the BIOS will be updated during any future silicon rolls. No current roll of the part currently exists. 10. Data toggle corruption issue • PROBLEM DEFINITION When a SIE is configured as a peripheral, data toggle corruption as specified in the USB 2.0 spec, section 8.6.4, does not work as specified. • PARAMETERS AFFECTED SIEx Endpoint x Interrupt (Interrupt 32-47). • TRIGGER CONDITIONS This issue is seen when a SIE is configured as a peripheral and the host sends an incorrect data toggle. According to the USB specification, when an incorrect data toggle is seen from the host the peripheral should 5 Errata Document CY7C67200 throw away the data but increment the data toggle bit to re-synchronize the data toggle bits. In the current ROM BIOS the SIEx Endpoint x Interrupt will ignore the data toggle error and accept the data. • SCOPE OF IMPACT All peripheral functions are susceptible to this as it is a normal occurrence with USB traffic. • WORKAROUND To fix this problem the SIEx Endpoint x Interrupt must be replaced for any endpoint that is configured as an OUT endpoint. 1. Acquire the file called susb1.s from Cypress Support or by downloading a newer version of the frameworks that has this included. 2. Modify fwxcfg.h in your project to have the following flags and define/undef the fix for the endpoints you are using: #define #define #undef #undef #undef #undef #undef FIX_USB1_EP1 FIX_USB1_EP2 FIX_USB1_EP3 FIX_USB1_EP4 FIX_USB1_EP5 FIX_USB1_EP6 FIX_USB1_EP7 #undef #undef #undef #undef #undef #undef #undef FIX_USB2_EP1 FIX_USB2_EP2 FIX_USB2_EP3 FIX_USB2_EP4 FIX_USB2_EP5 FIX_USB2_EP6 FIX_USB2_EP7 3. Add the new susb1.s to the included assembly source files in the make file. For example : ASM_SRC := startup.s isrs.s susb1.s 4. Add usb_init somewhere in the startup code. This will likely be in fwxmain.c as demonstrated below: void fwx_program_init(void) { void usb_init(); /* define the prototype */ usb_init(); fwx_init(); } /* Initialize everything in the base framework. */ 5. Build the project using the modified make file. • FIX STATUS The ROM version of the BIOS will be updated during any future silicon rolls. No current roll of the part currently exists. 6 CY7C67200 Errata Document References 1 Document # 38-08014, CY7C67200 EZ-OTG™Programmable USB On-The-Go Host/Peripheral Controller Document History Page Document Title: CY7C67200 EZ-OTG™ Programmable USB on-The-Go Host/Peripheral Controller Errata Document Number: 38-17021 REV. ECN NO. Issue Date Orig. of Change ** 227148 See ECN bha Initial release *A 237769 See ECN ari Adding items 9 and 10 Description of Change 7