Intel® 80331 I/O Processor Specification Update April 2006 The Intel® 80331 I/O Processor may contain design defects or errors known as errata that may cause the product to deviate from published specifications. Current characterized errata are documented in this specification update. Order Number: 273930-021US INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. EXCEPT AS PROVIDED IN INTEL’S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY RELATING TO SALE AND/OR USE OF INTEL PRODUCTS, INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT, OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel Corporation may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights that relate to the presented subject matter. The furnishing of documents and other materials and information does not provide any license, express or implied, by estoppel or otherwise, to any such patents, trademarks, copyrights, or other intellectual property rights. Intel products are not intended for use in medical, life saving, life sustaining, critical control or safety systems, or in nuclear facility applications. Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked “reserved” or “undefined.” Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order. Copies of documents which have an ordering number and are referenced in this document, or other Intel literature may be obtained by calling 1-800-548-4725 or by visiting Intel's website at http://www.intel.com. Intel, Intel logo, and Intel XScale are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. *Other names and brands may be claimed as the property of others. Copyright © 2006, Intel Corporation 2 Specification Update Intel® 80331 I/O Processor Contents Revision History ......................................................................................... 5 Preface....................................................................................................... 8 Summary Table of Changes....................................................................... 9 Identification Information.......................................................................... 17 Non-Core Errata....................................................................................... 19 Core Errata .............................................................................................. 43 Specification Changes ............................................................................. 47 Specification Clarifications ....................................................................... 51 Documentation Changes ......................................................................... 61 Specification Update 3 Intel® 80331 I/O Processor This page intentionally left blank. THIS PAGE INTENTIONALLY LEFT BLANK 4 Specification Update Revision History Date Version Description Added: April 2006 021 • D-1 stepping information to all Summary tables and to Table 1, “Intel® 80331 I/O Processor Die Details” on page 17 and Table 2, “Intel® 80331 I/O Processor Device ID Registers” on page 18 • Status change of Erratum 62 • Status change of Specification Change 22 • Status change of Specification Clarification 33 Added: February 2006 020 • Non-Core Errata 63 • Specification Clarification 33 Added: January 2006 019 • Non-Core Errata 62 • Specification Change 22 Added: December 2005 018 • Specification Clarification 31 and 32 • Documentation Change 17 October 2005 017 Added: • Specification Clarification 29 and 30 Added: August 2005 016 • Specification Clarification 27 and 28 • Documentation Change 16. June 2005 015 Added: • Non-Core Errata 61 Added: • Non-Core Errata 60 May 2005 014 • Specification Change 21 Updated: • Specification Change 13, 15, and 16 April 2005 013 Added: • Non-Core Errata 58 and 59 Added: • Specification Change 19 and 20 • Documentation Change 15 • PB-free Markings to Table 1, “Intel® 80331 I/O Processor Die Details” on page 17 March 2005 012 Updated: • Non-Core Errata 4 • Updated Non-Core Errata 50 Changed: • Status of Non-Core Errata 20 to Fixed Specification Update 5 Intel® 80331 I/O Processor Revision History Date Version Description Added: January 2005 011 • Non-Core Errata 57 • Specification Clarification 26 • Documentation Change 13 and 14 Added: November 2004 010 • Non-Core Errata 56 • Specification Clarification 25 Added: • Specification Clarification 23 and 24. September 2004 009 • Specification Change 18. • Documentation Change 12. Updated: • Specification Change 11 and Specification Clarifications 13 and 22. Added: • D-0 stepping information. • Non-Core Errata 55. August 2004 008 • Specification Clarification 21 and 22. • Specification Change 17. Updated: • Non-Core Errata 51 and 54. Added: June 2004 007 • Non-Core Errata 52 through 54. • Specification Clarification 19 and 20. • Documentation Change 11. Added: • Non-Core Errata 49 through 51 • Specification Clarification 17 and 18 May 2004 006 • Specification Change 14 through 16 • Documentation Change 10 Updated: • Spec Change 12; Spec Clarification 13 Added: • Non-Core Errata 46 through 48. • Specification Clarification 13 through 16. • Documentation Change 8 and 9. • Added C-1 to errata table April 2004 005 Updated: • Non-Core Errata 45. • Specification Change 11. • Specification Clarification 11 and 12. • Documentation Change 3. • Status information for Non-Core Errata. 6 Specification Update Intel® 80331 I/O Processor Revision History Date Version Description Added: • Errata 37 through 45. • Specification Change 10 through 13. March 2004 004 • Specification Clarification 9 through 12. • Documentation Change 5 through 7. Updated: • Erratum 35. Added: • Errata 33 through 36. • Specification Change 9. January 2004 003 • Specification Clarification 8. • Documentation Change 3 and 4. Updated: • Erratum 31. Added: • Errata 27 through 32. • Specification Changes 7 and 8. November 2003 002 • Specification Clarification 6 and 7. • Documentation Changes 1 and 2. Updated: • Errata 6, 21 and 26. September 2003 Specification Update 001 Initial Release. 7 Intel® 80331 I/O Processor Preface Preface This document is an update to the specifications contained in the Affected Documents/Related Documents table below. This document is a compilation of device and documentation errata, specification clarifications and changes. It is intended for hardware system manufacturers and software developers of applications, operating systems, or tools. Information types defined in Nomenclature are consolidated into the specification update and are no longer published in other documents. This document may also contain information that was not previously published. Affected Documents/Related Documents Title Order Intel® 80331 I/O Processor Developer’s Manual 273942 Intel® 80331 I/O Processor Datasheet 273943 ® Intel 80331 I/O Processor Design Guide 273823 Nomenclature Errata are design defects or errors. These may cause the Intel® 80331 I/O Processor1 behavior to deviate from published specifications. Hardware and software designed to be used with any given stepping must assume that all errata documented for that stepping are present on all devices. Specification Changes are modifications to the current published specifications. These changes will be incorporated in any new release of the specification. Specification Clarifications describe a specification in greater detail or further highlight a specification’s impact to a complex design situation. These clarifications will be incorporated in any new release of the specification. Documentation Changes include typos, errors, or omissions from the current published specifications. These will be incorporated in any new release of the specification. Note: 1. 8 Errata remain in the specification update throughout the product’s lifecycle, or until a particular stepping is no longer commercially available. Under these circumstances, errata removed from the specification update are archived and available upon request. Specification changes, specification clarifications and documentation changes are removed from the specification update when the appropriate changes are made to the appropriate product specification or user documentation (datasheets, manuals, etc.). ARM* architecture compliant. Specification Update Intel® 80331 I/O Processor Summary Table of Changes Summary Table of Changes The following table indicates the errata, specification changes, specification clarifications, or documentation changes which apply to the Intel® 80331 I/O Processor. Intel may fix some of the errata in a future stepping of the component, and account for the other outstanding issues through documentation or specification changes as noted. This table uses the following notations: Codes Used in Summary Table Stepping X: Errata exists in the stepping indicated. Specification Change or Clarification that applies to this stepping. (No mark) or (Blank box): This erratum is fixed in listed stepping or specification change does not apply to listed stepping. (Page): Page location of item in this document. Doc: Document change or update will be implemented. Plan Fix: This erratum may be fixed in a future stepping of the product. Fixed: This erratum has been previously fixed. No Fix: There are no plans to fix this erratum. Page Status Row Change bar to left of table row indicates this erratum is either new or modified from the previous version of the document. Specification Update 9 Intel® 80331 I/O Processor Summary Table of Changes Non-Core Errata (Sheet 1 of 3) Steppings No. 10 Page Status 19 No Fix CAS latency of three not supported for DDR-II On-Die Termination (ODT) X 19 Fixed Upper PCI signals on Secondary PCI bus are not driven low during reset 3 X 19 Fixed Memory Controller Unit does not properly support 32-bit memory configurations 4 X 19 No Fix Legacy Power Fail Mechanism does not work 5 X 20 Fixed Boundary Scan data gets inverted A-1 B-0 C-0 C-1 D-0 D-1 1 X X X X X X 2 X X X X X Errata 6 X 20 Fixed BIU interrupt does not occur on Internal Bus Write Master Abort 7 X 20 Fixed CRC value calculated by DMA unit is not compliant with iSCSI 8 X 20 Fixed ATU Outbound Direct Window overlaps with PBI exception vectors 9 X 20 No Fix S_REQ64# Initialization Pattern Timing Violation in PCI-33 Mode 10 X 21 Fixed PCI-66 Mode violates PCI AC Timings 11 X 21 Fixed Reserved bits in the Modem Status Register incorrectly generate interrupts 12 X 21 Fixed P_REQ# not de-asserted during idle 13 X 21 Fixed Chassis/Slot PCI Extended Capability is not valid 14 X 22 Fixed SDCR0.2 implemented as ‘Reserved’ 15 X 22 Fixed 32-bit region missing proper address decode 16 X 22 Fixed S_GNT[3:2]# outputs are not pulled high when Bridge is disabled. 17 X X X X X X 22 No Fix Split Transaction Commitment limit register mechanism, in the PCI-X bridge, does not operate as implied by the PCI-X Addendum to the PCI Local Bus Specification, Revision 1.0a 18 X X X X X X 23 No Fix Watchdog time-outs by the PCI-X bridge may cause data corruption 19 X 23 Fixed Discard timer expiration on delayed read can cause data corruption or deadlock when data is still being received on target bus 20 X 23 Fixed Configuration cycle attribute parity error signaled incorrectly by PCI-X bridge 21 X 23 Fixed Transactions are buffered during Secondary Reset 22 X 24 Fixed Primary bus pin mode behavior incorrect during reset in the 80331 no bridge mode 23 X 24 Fixed P_REQ# pin mode behavior when in the 80331 no bridge mode 24 X 24 Fixed Master abort after data transfer within a single ADB on PCI-X to PCI-X read block transactions may cause data corruption or deadlock X X X X X X X Specification Update Intel® 80331 I/O Processor Summary Table of Changes Non-Core Errata (Sheet 2 of 3) Steppings No. Page Status X 25 No Fix Boundary scan multi-chip module implementation X 25 No Fix Auto refresh command also generates a Precharge All command on DDR bus X 26 Fixed SERR# set to incorrect voltage X 26 Fixed M66EN set to incorrect voltage 29 X 26 Fixed P_INT[D:A]# not operating correctly 30 X 26 Fixed Secondary bus may not initialize correctly at 100 MHz PCI-X or 133 MHz PCI-X 31 X X X X X X 26 No Fix Coalesced writes to 32-bit memory can cause data corruption 32 X X X X X X 27 No Fix ATU passing rules operation in PCI mode 33 X X 27 Fixed S_INT[D:A]# pull-ups disabled by Internal Bus Reset 34 X X 27 Fixed MCU Preemption Control does not properly manage the byte count 35 X X 28 Fixed I2C unit hang condition 36 X X 28 No Fix VPD Data Register bit 19 is not read/write 37 X X 29 Fixed Intel XScale® Core lockup condition 38 X X 30 Fixed 32-bit region write corrupts ECC immediately after 64-bit Read-Modify-Write 39 X 30 Fixed Reset straps incorrectly sampled on the secondary reset 40 X X 31 Fixed PCI-X to PCI Memory Read double-word near 1MB boundary may cause the system to hang 41 X X 31 Fixed PCI-X to PCI Memory Read Block across 1MB boundary may cause data corruption 42 X X X X X X 32 No Fix DMA CRC result is byte reversed 43 X X X X X X 32 No Fix CRC corruption on PCI-to-local DMA transfers 44 X X X X 32 Fixed Byte Count Modified bit set to 1 45 X X X X 33 Fixed Corrupted byte count and data when crossing 1 MByte boundary in PCI-X to PCI mode 46 X X X X 33 Fixed PCI-X to PCI Memory Read with 4 K byte count and unaligned starting address 47 X X X 34 Fixed VCCDDR (VCC25/VCC18) Current Spike 48 X X X X 35 Fixed Bridge PCI ordering rule violation 49 X X X X X X 35 No Fix ATU claims PCI commands 8 and 9 when issued as Dual Address Cycle (DAC) 50 X X X X X X 36 No Fix Secondary bus PCI RST# pulse prior to the rising edge of P_RST# 51 X X 36 Fixed Slow edge rates observed when 80331 is driving the primary bus 52 X X 37 Fixed Enabling the core-to-memory port can cause a stall condition A-1 B-0 C-0 C-1 D-0 D-1 25 X X X X X 26 X X X X X 27 28 Specification Update X X X X X X Errata 11 Intel® 80331 I/O Processor Summary Table of Changes Non-Core Errata (Sheet 3 of 3) Steppings No. Page Status Errata 38 No Fix PCI-to-PCI read flow-through with destination TRDY# stalls can cause data corruption 38 Fixed S_PCIXCAP PCI mode threshold is too high X 39 No Fix No support for burst I/O and configuration read/writes X X 39 No Fix Read flow through hangs due to disconnect without data at a buffer boundary. X X X 39 No Fix P_SERR# not asserted for parity error on AD[63:32] X X X X 39 No Fix Bus Interface Unit (BIU) claims DAC addresses in the range of the Memory Mapped Registers (MMR X X X X X 40 No Fix PCIX-to-PCI Memory Read issued as 32-bit, then retried as 64-bit X X X X X X 41 No Fix Tc1(min) of the PCI-X clock observed to be marginally less than the requirement specified for the PCI-X (Mode 1, class1) clock jitter. X X X X X X 41 No Fix I2C Control Register reset bit does not function 41 Fixed Internal Clock Misalignment Can Cause Processor Hang. 41 No Fix Spurious DMA0 End-Of-Transfer Interrupt A-1 B-0 C-0 C-1 D-0 D-1 53 X X X X X X 54 X X X X 55 X X X X X 56 X X X X 57 X X X 58 X X 59 X 60 61 62 63 12 X X X X X X X Specification Update Intel® 80331 I/O Processor Summary Table of Changes Core Errata Steppings No. Page Status X 43 No Fix Abort is missed when lock command is outstanding X X 43 No Fix Aborted Store that Hits the Data Cache May Mark Write-Back Data as Dirty X X X 44 No Fix Performance Monitor Unit event 0x1 can be incremented erroneously by unrelated events X X X X 44 No Fix In Special Debug State, back-to-back memory operations — where the first instruction aborts — may cause a hang X X X X X 45 No Fix Accesses to the CP15 ID register with opcode2 > 0b001 returns unpredictable values 6 X X X X X 45 No Fix Disabling and re-enabling the MMU can hang the core or cause it to execute the wrong code 7 X X X X X 46 No Fix Updating the JTAG parallel registers requires an extra TCK rising edge 8 X X X X X 46 No Fix Non-branch instruction in vector table may execute twice after a thumb mode exception A-1 B-0 C-0 D-0 D-1 1 X X X X 2 X X X 3 X X 4 X 5 Specification Update Errata 13 Intel® 80331 I/O Processor Summary Table of Changes Specification Changes Steppings No. Status X 47 Doc HPI# (High Priority Interrupt) is a maskable interrupt X X 47 Doc PCIODT_EN Reset Strap Signal X X X 47 Doc LOCK# functionality has been de-featured X X X 47 Doc Watchdog Timer and Retry Timer has been de-featured B-0 C-x D-0 D-1 1 X X X X 2 X X X 3 X X 4 X X 5 Specification Changes X X X X 47 Doc P_GNT# and P_REQ# signals have new ball locations on B-0 6 X X X X X 47 Doc Peripheral Performance Monitor Unit has been de-featured 7 X X X X X 48 Doc Processor Device ID has been removed 8 X X X X X 48 Doc 1.5K pull-down required on AD[15] of the PBI bus 9 X 10 X X X X 48 Doc OCD and Receive Enable calibration de-featured X X X X 48 Doc New Watchdog Timer (WDT) functionality in B-0 stepping 11 X X X X X 48 Doc PWRDELAY needs only a pull-up for battery back-up mode 12 X X X X X 48 Doc ARB_EN signal has been de-featured 13 X X X X X 48 Doc Intel® 80331 I/O Processor Design Guide change for Unbuffered DDR-I dual-banked DIMMs 14 X X X X X 48 Doc DDRRES2 can be pulled down to reduce current during self-refresh 15 X X X X X 48 Doc Intel® 80331 I/O Processor Design Guide change for Peripheral Bus Interface (PBI) 16 X X X X X 49 Doc Intel® 80331 I/O Processor Design Guide change for PCI/-X busses 17 X X 49 Doc Internal bus operates at 333 MHz for D-0 stepping 18 X X 49 Doc Application Accelerator Unit enhanced for D-0 stepping 19 X X X X X 49 Doc Recommended DLL register values 20 X X X X X 49 Doc DDR-II JEDEC initialization sequence includes writes to EMRS2 and EMRS3 21 X X X X X 50 Doc Case temperature (Tcase) change 50 Fixed 22 14 Page A-1 X Internal Clock Misalignment. Specification Update Intel® 80331 I/O Processor Summary Table of Changes Specification Clarifications Steppings No. Page Status X 51 No Fix 64 MB and 2 GB DDR333 capacities not to be tested in post-silicon validation X X 51 No Fix DDR-II 400 Unbuffered DIMMs are not supported X X X 51 No Fix Interrupt behavior in the 80331 no bridge mode X X X X 51 No Fix Memory map for 2 GByte of DDR memory X X X X X 51 No Fix Back to back MCU MMR reads X X X X X 52 No Fix Write requirements for the Peripheral Bus Interface 7 X X X X X 52 No Fix PCI-X Status Register during PCI mode 8 X X X X X 52 No Fix M_RST# driven to DDR-II or DDR-I voltage levels A-1 B-0 C-x D-0 D-1 1 X X X X 2 X X X 3 X X 4 X 5 6 Specification Clarifications 9 X X X X X 52 No Fix BIU master abort causes two interrupts on reads. 10 X X X X X 53 No Fix Reset Internal Bus (PCSR.5) usage 11 X X X X X 53 No Fix No Bridge Mode (BRG_EN) validation 12 X X X X X 53 No Fix Potential race condition with Interrupt Controller Unit status bits 13 X X X X X 54 No Fix Bus Interface Unit follows PCI ordering rules 14 X X X X X 55 No Fix UART, I2C and GPIO memory mapped registers should be addressed with 32-bit accesses 15 X X X X X 55 No Fix Flash Wait States 16 X X X X X 55 No Fix UART Interrupt Identification Register 17 X X X X X 55 No Fix Reads on 16-bit PBI bus operate as 32-bit 18 X X X X X 56 No Fix Embedded Design Usage Model - Secondary PCI bus only 19 X X X X X 56 No Fix 3.3 V to 1.5 V leakage 20 X X X X X 56 No Fix Accessing “reserved” registers in “no bridge” mode 21 X X X X X 56 No Fix Power plane isolation for Battery Back-Up (BBU) mode 22 X X X X X 57 No Fix AAU result can be written directly to PCI host memory 23 X X X X X 57 No Fix PWRDELAY functionality during power sequencing 24 X X X X X 57 No Fix PBI lockout condition X X 57 No Fix Interleaving descriptors with D-0 AAU 25 26 X X X X X 58 No Fix RCVDLY setting for DDR-I memory 27 X X X X X 58 No Fix ATUBAR3 Functionality 28 X X X X X 58 No Fix VREF isolation for Battery Back-up (BBU) mode 29 X X X X X 58 No Fix I2C Unit Enabling 30 X X X X X 59 No Fix DMA transactions from local memory to a conventional PCI target can complete out of order 31 X X X X X 59 No Fix SBR1 Programming with Bank 1 Unpopulated 32 X X X X X 59 No Fix 32-bit Writes to Unaligned 64-bit Addresses are Promoted to 64-bit Aligned Writes 33 X X X X 60 Fixed Case Temperature Clarification. Specification Update 15 Intel® 80331 I/O Processor Summary Table of Changes Documentation Changes 16 No. Document Revision Page Status Documentation Changes 1 273942-002 61 Doc Table 236 shows incorrect description for tWDL field 2 273942-002 61 Doc Processor Device ID should be removed 3 273942-002 61 Doc Core Performance Monitoring Unit (CPMON) section is incorrect 4 273942-002 61 Doc UART FIFO Occupancy Register is read only 5 273942-002 61 Doc Refresh Frequency Register table is incorrect 6 273942-002 61 Doc PBI interrupt should be removed 7 273942-002 62 Doc ARB_EN has been de-featured 8 273942-002 62 Doc Flash wait state information is incorrect 9 273942-002 63 Doc SDCR0 and SDCR1 register updates 10 273823-001 66 Doc Power sequence timing 11 273943-001 66 Doc Updated Peripheral Bus Interface (PBI) timings 12 273942-002 66 Doc ATU PM_CAP[5] text must be updated 13 273942-002 67 Doc WDTCR also affected by TMR1[3] 14 273942-002 67 Doc Split Completion Message clarification 15 273823-002 67 Doc Figure 49 in Design Guide shows incorrect trace length 16 273943-001 67 Doc Wrong Voltage Values in Table 21 17 273942-002 67 Doc SBR1 Programming When Bank 1 is Unpopulated Specification Update Intel® 80331 I/O Processor Identification Information Identification Information Die Details Table 1. Intel® 80331 I/O Processor Die Details Stepping Part Number QDF (Q)/ Specification Number (SL) Processor Speed (MHz) Notes A-1 NQ80331M500 Q623 500 Engineering Samples B-0 NQ80331M500 Q651 500 Engineering Samples C-0 NQ80331M500 Q723 500 Engineering Samples C-0 NQ80331M667 Q726 667 Engineering Samples C-0 NQ80331M800 Q729 800 Engineering Samples C-1 NQ80331M500 Q870 500 Engineering Samples C-1 NQ80331M667 Q871 667 Engineering Samples C-1 NQ80331M800 Q872 800 Engineering Samples C-1 NQ80331M500 SL7NM, SL82R 500 Production C-1 NQ80331M667 SL7NN, SL82S 667 Production C-1 NQ80331M800 SL7NP, SL82T 800 Production D-0 D-0 D-0 D-0 D-0 D-0 D-1 D-1 D-1 Specification Update NQ80331M500 Q006 QG80331M500 Q105 NQ80331M667 Q007 QG80331M667 Q106 NQ80331M800 Q008 QG80331M800 Q107 NQ80331M500 SL823 (Tray), SL827 (T&R) QG80331M500 SL8C5 (Tray), SL8C9 (T&R) NQ80331M667 SL824 (Tray), SL828 (T&R) QG80331M667 SL8C6 (Tray), SL8CA (T&R) NQ80331M800 SL825 (Tray), SL829 (T&R) QG80331M800 SL8C7 (Tray), SL8CB (T&R) NQ80331M500 Q604 QG80331M500 Q608 NQ80331M667 Q605 QG80331M667 Q609 NQ80331M800 Q606 QG80331M800 Q610 500 667 800 500 667 800 500 667 800 Engineering Samples PB-free Eng Samples Engineering Samples PB-free Eng Samples Engineering Samples PB-free Eng Samples Production PB-free Production Production PB-free Production Production PB-free Production Engineering Samples PB-free Eng Samples Engineering Samples PB-free Eng Samples Engineering Samples PB-free Eng Samples 17 Intel® 80331 I/O Processor Identification Information Table 1. Stepping D-1 D-1 D-1 Table 2. Intel® 80331 I/O Processor Die Details Part Number QDF (Q)/ Specification Number (SL) NQ80331M500 SL9B7 QG80331M500 SL9BE NQ80331M667 SL9B8 QG80331M667 SL9BF NQ80331M800 SL9B9 QG80331M800 SL9BG Processor Speed (MHz) 500 667 800 Notes Production PB-free Production Production PB-free Production Production PB-free Production Intel® 80331 I/O Processor Device ID Registers Device and Stepping Processor Device ID (CP15, Register 0 – opcode_2=0) Revision ID JTAG Device ID and PDIR A-1 0x69054090 0x00 0x09279013 B-0 0x69054094 0x04 0x49279013 C-0 0x69054096 0x06 0x69279013 C-1 0x69054097 0x07 0x69279013 D-0 0x6905409A 0x0A 0xA9279013 D-1 0x6905409A 0x0A 0xA9279013 NOTE: Processor core speed can be identified by reading CCLKCFG[3:0] (CP14, register 6) 500 MHz = 0x0, 667 MHz = 0x2, 800 MHz = 0x4 18 Specification Update Intel® 80331 I/O Processor Non-Core Errata Non-Core Errata 1. CAS latency of three not supported for DDR-II On-Die Termination (ODT) Problem: For DDR-II memory with a CAS Latency (CL) of three, the memory controller unit (MCU) does not provide the proper timing for the On-Die Termination signals (ODT[1:0]). The JEDEC DDR-II SDRAM Specification, September 2002, states that ODT must be driven one cycle prior to the write command, but the MCU does not meet this timing. Implication: CAS latency of 3 is not supported in the 80331, therefore minimal performance impact as compared to CAS latency of 4. Workaround: Use CAS latency = 4 or do not use ODT feature. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 2. Upper PCI signals on Secondary PCI bus are not driven low during reset Problem: PCI requires the central resource to provide valid logic states on AD[63:32], C/BE[7:4]# and PAR64 during reset, and that they may only be driven to zero. The S_AD[63:32], S_C/BE[7:4]#, S_PAR64 on the secondary PCI bus are not driven to zero during secondary bridge PCI-X initialization; instead, these pins are tri-stated, “Z”. This is not a violation of the PCI Local Bus Specification, Revision 2.3. Implication: Some PCI targets may not operate correctly, when they require these signals to be zero during reset. Workaround: No workaround. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 3. Memory Controller Unit does not properly support 32-bit memory configurations Problem: The memory controller unit (MCU) incorrectly stores the row address used in the page miss/page hit look up table. The result of this can cause the MCU to incorrectly determine a page hit or miss. When this occurs, it causes aliasing to an incorrect row of DDR SDRAM. Implication: 32-bit memory cannot be used with A-1 stepping. Workaround: No workaround. Use a 64-bit memory subsystem. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 4. Legacy Power Fail Mechanism does not work Problem: For previous I/O processor generations, an external clock was required to maintain the incoming PCI clock (P_CLK) long enough for the power fail sequence to be sent to the memory. This is what is referred to as ‘legacy power fail’. The internal control circuit that enables the legacy power fail method is broken. Implication: Legacy power fail cannot be used. Workaround: For 80331, a new feature was added which keeps internal clocks running on power fail. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. Specification Update 19 Intel® 80331 I/O Processor Non-Core Errata 5. Boundary Scan data gets inverted Problem: Data driven in during boundary scan gets inverted during the capture phase. During parallel loading on a pin, an external zero on data in gets inverted to one for data out. This is a violation of the IEEE 1149.1 Specification. Implication: Boundary scan cannot be used with A-1 stepping. Workaround: No workaround. Do not use boundary scan. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 6. BIU interrupt does not occur on Internal Bus Write Master Abort Issue: Software developers be aware that an interrupt is not generated when the Bus Interface Unit gets master aborted on an internal bus write. Implication: When left undetected, it could cause data corruption. Workaround: The status bit needs to be polled by software. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9 7. CRC value calculated by DMA unit is not compliant with iSCSI Problem: Several issues with the CRC generation engine have caused it to not be compliant with iSCSI in A-1 step. Implication: CRC cannot be used with A-1 stepping. Workaround: No workaround. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 8. ATU Outbound Direct Window overlaps with PBI exception vectors Problem: When the PBI exception vectors are enabled (PBCR.3), it claims addresses 00h-3fh. When the ATU outbound direct window is enabled, it claims addresses 28h-7fffffffh. There is an overlap between 28h-3fh, where both devices claim the internal bus transaction. For writes, this may not be an issue, since the only transaction here is a posted write to the ATU. For reads, the PBI handles the transaction as a single data phase disconnect, and the ATU internally handles it as a split transaction. Implication: The agent which issued the internal bus transaction does not claim the returning data, since the transaction has been completed by the PBI. This causes the data from PCI to not be returned to the issuing internal bus agent. Workaround: Consider address range of 28h-3Fh reserved. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 9. S_REQ64# Initialization Pattern Timing Violation in PCI-33 Mode Problem: The PCI Local Bus Specification, Revision 2.3 states RST# to REQ64# Hold time is 0 ns minimum and 50 ns maximum. The 80331 drives the REQ64# signal for three cycles after RST# deasserts. Therefore, in PCI-33 mode, this is 90 ns, which violates the 50 ns maximum. All other PCI and PCI-X modes are within the specification (i.e., PCI-66 is 45 ns). Implication: Some PCI targets may not interpret the REQ64# signal correctly, causing it to operate in 32-bit mode. Workaround: When running in PCI-33 mode, make sure PCI target can handle the extra 40 ns. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 20 Specification Update Intel® 80331 I/O Processor Non-Core Errata 10. PCI-66 Mode violates PCI AC Timings Problem: The PCI Local Bus Specification, Revision 2.3 states a setup time of 3 ns for PCI-66 mode. The 80331 A-1 step has estimated the setup time to be in the range of 3.5 ns to 4 ns, which violates the PCI Local Bus Specification, Revision 2.3. Implication: Some PCI 66 MHz targets may not function correctly with A-1 stepping. Workaround: Use PCI-33 or PCI-X modes for initial development on A-1 stepping. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 11. Reserved bits in the Modem Status Register incorrectly generate interrupts Problem: Bits[3:1] in the UART Modem Status Register are reserved bits. These reserved bits are incorrectly tied to the asserted state therefore generate false interrupts when the Modem Interrupt Enable bit (UxIER.3) is set. However, the reserved bits only generate the false interrupt once. This happens the cycle after the UART unit is enabled (UxIER.6) and the Modem Status Interrupts are enabled (UxIER.3). Once the Modem Interrupt Register is read no more false interrupts occur. Implication: A false interrupt can occur. Workaround: Software needs to read the Modem Status Register to determine proper interrupt sources. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 12. P_REQ# not de-asserted during idle Problem: The P_REQ# signal stays asserted during bus idle instead of de-asserting as required by PCI Local Bus Specification, Revision 2.3. For example, when a PCI target asserts STOP#, the P_REQ# signal de-asserts one clock later than it should. The P_REQ# should have been de-asserted during the idle cycle. Implication: May cause conflict with other PCI agents. Workaround: Use a system arbiter that does not care when this condition occurs. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 13. Chassis/Slot PCI Extended Capability is not valid Problem: The Chassis/Slot PCI extended capability cannot be configured, and therefore the capability is not valid and needs to be removed from the capability chain. The Chassis/Slot capability registers at D4h - D7h needs to be listed as reserved. Implication: Invalid capability information provided to the host. Workaround: Do not use Chassis/Slot PCI Extended Capability. Status: Fixed. Fixed in B-0 stepping. The fix is to change the capability pointer at 34h to point to the next capability pointer (Power Management) at DCh, instead of D4h. D4h is to return zero when read. See the Table , “Summary Table of Changes” on page 9. Specification Update 21 Intel® 80331 I/O Processor Non-Core Errata 14. SDCR0.2 implemented as ‘Reserved’ Problem: The attribute for bit 2 in the MCU SDRAM Control Register 0 (SDCR0) is incorrectly implemented as ‘Reserved’, instead of ‘Read Only’. Since it is ‘reserved’, software cannot rely on reading this bit to determine when DDR or DDR-II memory type is selected. The external state of MEM_TYPE can not be correctly identified by reading this bit. Implication: This bit cannot be used to determine memory type. Workaround: Since hardware design is specific to either DDR or DDR-II, software engineers know what memory is being used in their application and therefore need not rely on this bit. Also, software can read DIMM information via Serial Presence Detect (SPD). Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 15. 32-bit region missing proper address decode Problem: When connected to 64-bit SDRAM, a 32-bit region can be defined by the S32SR register. There is an issue with the calculation that is performed to determine whether a transaction is in the 32-bit window or not. The MCU address decoder is missing the MSB for the 32-bit region hit/miss. This issue only applies to systems that intend to use the 32-bit region. There are no other base address restrictions. Implication: 32-bit addresses can be decoded improperly causing unstable code execution. Workaround: Do not allow the base address, defined by SDBR, to be aligned on an odd 1G boundary (e.g., bit 30 cannot be set to a ‘1’: For example, allowable base addresses: 0x8000_0000, 0xA000_0000, 0x2000_0000 Non-allowable base addresses: 0x4000_0000, 0xC000_0000, 0x4100_0000 Status: Fixed. Fixed in B-0. See the Table , “Summary Table of Changes” on page 9. 16. S_GNT[3:2]# outputs are not pulled high when Bridge is disabled. Problem: When the bridge is disabled (BRG_EN = 0), the S_GNT[3:2]# signals float (Z). These signals need to not float, but be pulled high (H). Implication: No negative impact expected. Workaround: External pull-ups are required. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 17. Split Transaction Commitment limit register mechanism, in the PCI-X bridge, does not operate as implied by the PCI-X Addendum to the PCI Local Bus Specification, Revision 1.0a Problem: The PCI-X Addendum to the PCI Local Bus Specification, Revision 1.0a requires that the bridge operate in a fully buffered mode. The 80331 bridge allows software to write the Split Transaction limit register, to allow compatibility with existing software, however, it behaves as though the register is programmed with a value FFFFh. The bridge forwards all split transactions without regard to the sequence size or the amount of available buffer space. Implication: This behavior could result in the bridge split completion buffers becoming full, while additional split completions are being received. When this situation occurs, the bridge either issues a retry or disconnects on the next ADB, until buffer space is available. Workaround: No workaround. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 22 Specification Update Intel® 80331 I/O Processor Non-Core Errata 18. Watchdog time-outs by the PCI-X bridge may cause data corruption Problem: A watchdog time-out by the PCI-X bridge may cause data loss or corruption in an unrelated transaction. Implication: Watchdog time-outs can cause data corruption. Workaround: Do not enable the watchdog time-out counter (default setting). The Watchdog Timer has been de-featured from the 80331. See Specification Change #4. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 19. Discard timer expiration on delayed read can cause data corruption or deadlock when data is still being received on target bus Problem: The discard timer in the PCI-X bridge starts counting when read data is first received. When data comes in very slowly (for example, when the target bus speed is much slower than the requesting bus) the discard timer on the requesting bus may elapse before the read data is complete, and cause state machine errors. Implication: When a delayed read in PCI-to-PCI or PCI-to-PCIX mode receives immediate data on the destination bus, and the time required to receive that data exceeds the value of the discard timer, data corruption or deadlock may occur. Workaround: Set discard time-out value to 2^15 (default setting) or reduce prefetch settings when bus speeds are very different. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 20. Configuration cycle attribute parity error signaled incorrectly by PCI-X bridge Problem: A configuration cycle with an attribute parity error gets a retry response by the PCI-X bridge, instead of a target abort. Implication: When the SERR# Enable bit (PCR.8) is not set, transient parity errors may go undetected. Workaround: Set PCR.8 to enable primary bus SERR# assertions for parity error detection. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 21. Transactions are buffered during Secondary Reset Problem: When the secondary bus is reset by software (i.e., setting the secondary bus reset bit - BCR.6), the buffer control needs to retry all transactions (except type 0 configuration cycles). The problem is that the buffer controller is not looking at the secondary reset signal, so when the secondary bus reset bit is set (S_RST# asserted) the buffers enqueue a transaction that was retried. Instead, it needs to remain idle until reset is complete, and not enqueue the retried transactions. Implication: May cause data corruption. Workaround: After de-asserting S_RST# by clearing (i.e., writing a '0') the Secondary Bus Reset bit (BCR.6), wait 155 µs before sending a new transaction to the bridge. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. Specification Update 23 Intel® 80331 I/O Processor Non-Core Errata 22. Primary bus pin mode behavior incorrect during reset in the 80331 no bridge mode Problem: In the 80331 no bridge mode (BRG_EN = 0), several unused primary PCI signals provide the wrong behavior during reset. The following signals float (‘Z’ = output disabled) during reset: P_AD[63:0], P_PAR, P_PAR64, P_C/BE[7:0]#. Implication: No negative impact expected. Workaround: No workaround. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. These signals are ‘H’ (pulled up to Vcc). 23. P_REQ# pin mode behavior when in the 80331 no bridge mode Problem: In the 80331 No Bridge Mode (BRG_EN = 0), P_REQ# (ball T6) drives a 1 in A-1, needs to be “H” (pulled up to Vcc). Implication: No negative impact expected. Workaround: No workaround. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. Note: P_GNT# and P_REQ# signals have new ball locations on B-0, see Specification Change #5. 24. Master abort after data transfer within a single ADB on PCI-X to PCI-X read block transactions may cause data corruption or deadlock Problem: When a PCI-X to PCI-X Memory Read Block request is terminated with a single data phase disconnect (SDPD) by the target after the target has provided some data, and a subsequent request in the same allowable disconnect boundary (ADB) is not claimed (Master Abort), the bridge may deallocate memory buffers not involved in the transaction. Implication: This may cause data corruption of another transaction or result in deadlock. This erratum only occurs in PCI-X to PCI-X mode, the read byte count must be greater than 4 bytes and must not cross an ADB boundary. The target must respond with a single data phase disconnect and when the bridge attempts to get the remainder of the data, the target does not claim the transaction. Workaround: No workaround. The likelihood of this occurrence is extremely small and would require 'bad' behavior by the target. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. 24 Specification Update Intel® 80331 I/O Processor Non-Core Errata 25. Boundary scan multi-chip module implementation Problem: The 80331 is not BSDL-compliant for the SAMPLE and BYPASS instructions specified by the JTAG specification 1149.1. It is compliant for most board-level testing. When boards are tested for opens and shorts, the 80331 BSDL can define the boundary scan length as +1 to encompass the BYPASS register in the Intel XScale® core (therefore not visible). Implication: When doing ID, SAMPLE, or BYPASS, the Intel XScale® core BYPASS register makes the path from TDI to TDO one flop longer than the specification requires, which could cause canned software to error. Note: When neither of these are used by the board vendors during manufacturing testing, there is no issue. Workaround: Intel can provide two BSDL files which allow opens and shorts testing, as long as it does not test the ID and BYPASS instructions. One covers the Intel XScale® core unit and the other one for the I/O processor, with the exception that both instruction sets are reduced from 14 to 7, since they are operating independently. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 26. Auto refresh command also generates a Precharge All command on DDR bus Problem: When an auto refresh command is issued to the MCU SDRAM Initialization Register (write 0x6 to SDIR) the hardware state machine executes a precharge all command and then an auto refresh command. Implication: Some DIMMs may fail to initialize. Workaround: There is no way to decouple the precharge all and auto refresh commands in the MCU. However, the DCAL can issue an auto refresh command, which can be used instead to issue the auto refresh for initialization. For both DDRI and DDRII initialization sequences, there are two back-to-back AutoRefresh (ARF) commands issued to the DIMM (accomplished by writing 0x6 to MCU_SDIR 0xFFFF_E500 twice). This sequence is replaced by writing to the DCAL Control and Status Register (DCALSR) 0xFFFF_F500 to issue an AutoRefresh to each Chip Select, thus there are four writes to the DCALSR as opposed to the previous two writes to MCU_SDIR. The exact address and data values are as follows: ADDRESS WRITE_DATA NOTE 0xFFFF_F500 0x8000_0001 -- ARF to CS[0] 0xFFFF_F500 0x8000_0001 -- ARF to CS[0] 0xFFFF_F500 0x8010_0001 -- ARF to CS[1] 0xFFFF_F500 0x8010_0001 -- ARF to CS[1] Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. Specification Update 25 Intel® 80331 I/O Processor Non-Core Errata 27. SERR# set to incorrect voltage Problem: SERR# is being driven to 1 V. The 80331 might detect SERR# being asserted during boot-up and does not detect SERR# assertion when a device on the PCI-X bus asserts SERR#. Implication: The 80331 falsely detects and logs SERR# assertion during boot-up, due to the SERR# pin being held at 1 V, which the 80331 detects as a logic low (asserted). Devices assert SERR# for a minimum of one clock when an SERR# occurs. Since SERR# is being held low, devices asserting SERR# are not detected by the 80331. Workaround: Putting a 34–39 Ω pull-up resistor on SERR# might work; however, some add-in cards do not have the drive strength to pull-down against this pull-up, and therefore cannot reliably generate SERR# in the system. An alternative workaround is to have software mask SERR# assertion in the ATU or bridge. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 28. M66EN set to incorrect voltage Problem: The M66EN signals do not get set to the appropriate level with or without an add-in card present. M66EN should be at 3.3 V without an add-in card present. Implication: Prevents auto-detection of 66 MHz PCI devices. Forces the bus speed to 33 MHz when not in PCI-X mode and only impacts busses that should be set to 66 MHz PCI. Workaround: Use a 34-39 ohm pull-up resistor on the M66EN signals. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 29. P_INT[D:A]# not operating correctly Problem: The P_INT[D:A]# signals only rise to ~1 V at power-on. Implication: P_INT[D:A]# interrupt signals can cause false interrupts to the host. Workaround: Use a 34-39 ohm pull-up resistor on the P_INT[D:A]# signals. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 30. Secondary bus may not initialize correctly at 100 MHz PCI-X or 133 MHz PCI-X Problem: When a 133 MHz PCI-X capable device is plugged into the secondary PCI-X bus supporting >= 100 MHz PCI-X, the 80331 might not correctly initialize the bus at 100 MHz PCI-X or 133 MHz PCI-X. Implication: The bus may initialize at 66 MHz PCI-X. Workaround: Replace the 3.3 Kohm pull-up resistor on S_PCIXCAP with a 1.5 Kohm resistor. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 31. Coalesced writes to 32-bit memory can cause data corruption Problem: The Bus Interface Unit (BIU) can cause data corruption within the memory controller unit when either an 8-byte write with a starting address offset of four (i.e., DWord alignment) or a 12-byte write is done to 32-bit memory (or the 32-bit memory region). Implication: Can cause data corruption. This is not an issue with 64-bit memory subsystems. Workaround: When the use of 32-bit memory or the 32-bit memory region is required, write coalescing must be turned off. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 26 Specification Update Intel® 80331 I/O Processor Non-Core Errata 32. ATU passing rules operation in PCI mode Problem: When the secondary PCI bus is in PCI bus mode, the PCI passing rule enforcement logic within the ATU, allows a read completion to pass write data; until at least four inbound delayed reads, inbound configuration writes, inbound configuration reads, or any combination of these have occurred from the PCI bus. Implication: This issue causes a deadlock condition in legacy devices, which contain shared read and write data queues, where the device allocates the data buffer for the requested delayed read data and is also being addressed by the outbound ATU write data. This ATU functionality does not exist in PCI-X mode. Workaround: Use the secondary PCI bus in PCI-X mode. When the secondary PCI bus is in PCI mode, configuration retry is enabled, and the legacy buffer allocating device is present in the system, the ATU must not issue writes to that device until the configuration cycles or reads have completed. When this situation cannot be achieved by the host, the ATU can be momentarily programmed in loopback mode and issue delayed reads to itself. This workaround is only required when the ATU is sending upstream traffic at the same time as the host is configuring it. This should not happen since the ATU needs to wait for the driver to be enabled after enumeration completes. This erratum does not occur when configuration retry is deasserted at power on and the host meets the above configuration cycles. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 33. S_INT[D:A]# pull-ups disabled by Internal Bus Reset Problem: During power-on or anytime the internal bus is reset, the S_INT[D:A]# interrupt inputs are asserted as the on-die termination (ODT) gets disabled. Implication: This situation causes floating/asserted interrupts to the 80331, during power-on or anytime the internal bus is reset. Workaround: Need external pull-ups on the S_INT[D:A]# pins. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. 34. MCU Preemption Control does not properly manage the byte count Problem: During a transfer, the MCU tracks the byte count to determine when a transfer can be preempted. When preemption is enabled, a preempted transfer that is resumed does not transfer the full remaining byte count of data. Implication: Can cause data corruption when preemption control is enabled. Workaround: Do not enable preemption control. Keep the default setting of the MCU Preemption Control Register (MPCR, FFFF E540h) bits 3-0 as 0h. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. Specification Update 27 Intel® 80331 I/O Processor Non-Core Errata 35. I2C unit hang condition Problem: When a processor reset occurs, the 80331 does not properly detect an idle condition on the I2C bus, potentially causing the I2C unit to hang indefinitely. This occurs only when an I2C slave device is writing a 0 on the SDA signal when reset is asserted. The SCL signal goes high, but SDA remains low, signaling that the bus is still busy. Warm reset does not clear up this condition; only a cold reset (power-on) resolves the I2C bus hang. Implication: The I2C bus stays in a hang condition indefinitely Workaround: Since this is fixed in the C-0 stepping, this workaround must be implemented only when I2C hang issues are preventing proper usage of A-2 and B-0 parts. The recommended workaround for A-1 and B-0 parts involves both a hardware and software change. In hardware, tie GPIO pins to the SCL signals; then in the initialization software, the GPIO pins must toggle the SCL signals to bring the slave I2C devices out of the locked condition. This can be done by using one GPIO signal and an external tristate buffer on SCL lines, or by using two GPIO signals and no external logic to allow unlocking the I2C bus. Also, the external PWRDELAY circuit must use S_RST#, instead of PWRGD. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. In the C-0 stepping, the I2C bus lock condition can be cleared by software doing a toggle of the GPOD[11:10] to toggle SCL[1:0]. Bit[11] and bit[10] of the GPOD register are writable. When GPOD[11] is high, SCL[1] is driven low. When GPOD[10] is driven high, SCL[0] is driven low. I2C is no longer in the processor reset equation for the internal bus (that it, MRST), so the I2C bus can hang when a reset happens during the reading of a 0 from an external I2C slave. Therefore, the software is required to toggle the I2C clock signals (at least eight times) before I2C is enabled. GPOD bit[11] and bit[10] can be used to unhang the bus by creating a 100 K (5 ms high and low time) or 400 K (1.25 ms high and low time) clock pulse. Also, since the I2C bus has been removed from the processor reset equation, the PWRDELAY circuit is no longer needed. Only a 1.5 KΩ pull-up to 3.3 V is required on PWRDELAY. See Specification Change 11, “PWRDELAY needs only a pull-up for battery back-up mode” on page 48. 36. VPD Data Register bit 19 is not read/write Problem: VPD (Vital Product Data) is an extended capability of the ATU. Bit 19 of the VPD Data Register (FFFF_E1BCh) was implemented as RC (read clear) instead of RW (read/write). Implication: This is application dependant as VPD provides the system with information that uniquely identifies hardware and, potentially, software elements of a system. Workaround: When the VPD feature is needed, care must be taken to mask bit 19. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 28 Specification Update Intel® 80331 I/O Processor Non-Core Errata 37. Intel XScale® Core lockup condition Problem: The Intel XScale® core fetches code and data through an internal switch called the Bus Interface Unit (BIU), which manages traffic in two directions; a general path to the Flash and PCI-X interfaces (as well as internal units) and a private path to DDR memory controller. There is a boundary condition for returning data, specifically for code fetches from Flash or host memory colliding with private DDR read data. At the wrong clock alignment, the BIU corrupts the returning code with the DDR data. This results in arbitrary code returned to the core, resulting in lockup or other unpredictable core behavior. The following describes one scenario of how this condition can occur: • The Intel XScale® core fetches an instruction cache line, which is executed through the internal bus to the Flash interface unit and out to Flash memory. • While this is happening, the Intel XScale® core is scrubbing the DDR clean with a series of data transactions through a second private path, directly to the DDR Memory Controller. These data transactions are a series of cache line writes to DDR and reads from DDR. • The original instruction fetch is returned from the Flash interface unit back to the core with the critical instruction first (critical word first). • One clock after the instruction cache line is being returned to the Intel XScale® core, one of the data transactions returns from the DDR memory controller. • The BIU switches to handle the higher priority DDR return. • The instruction cache line that was being returned from the Flash interface is only partially returned to the Intel XScale® core (five of the eight instructions). • The data cache line from the DDR memory controller is then returned to the Intel XScale® core in its entirety. • The Intel XScale® core then starts executing the instructions that were fetched in the cache line (since the critical instruction was returned first, the core can continue). • The five instructions that were returned are executed by the Intel XScale® core and the core then stalls waiting for the sixth, seventh and eighth instruction to be returned from the initial cache line fill. • The BIU continues to return any outstanding transactions unaware that the instruction cache fetch was not fully returned. Note: 1) The case where this happens is where the core memory port is enabled and there is a cache line fill (instruction or data) that executes through the internal bus (Flash/PCI/etc., transactions, not DDR transactions) and any size fetch to DDR through the direct port to DDR memory controller. The timing has to be such that the cache line fill from the internal bus must beat the DDR return by 1 clock cycle. 2) The scenario given above is just one example of what excites this condition and is by no means the only scenario that excites this condition. Implication: This results in a lockup or other unpredictable core behavior. Workaround: For A-x and B-0 silicon the only reliable workaround is for software to turn off the core to the DDR Memory Controller port, redirecting DDR accesses through the Internal Bus interface with other transactions. This prevents the core lockup condition but at a cost to performance. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. Specification Update 29 Intel® 80331 I/O Processor Non-Core Errata 38. 32-bit region write corrupts ECC immediately after 64-bit Read-Modify-Write Problem: ECC can be corrupted when the following scenario occurs: • • • • All of memory is initialized to 0s A 32-bit region is enabled. Agent A fills the 64-bit memory region with pattern A. Agent A does a DDR write to same 64-bit memory region, causing an Read-Modify-Write (RMW) at the end of the transfer where pattern A is returned as part of the RMW process. • Immediately thereafter, Agent B does a DDR write to an open region of 32-bit memory. On DQ[63:32] data is driven to pattern A. The wrong ECC is generated (where the ECC is that of DQ[63:0] where pattern A is present at the upper half of the bus). Implication: The wrong ECC is generated (where the ECC is that of DQ[63:0] where pattern A is present at the upper half of the bus). Workaround: Turn ECC off or don’t use the 32-bit memory region. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. 39. Reset straps incorrectly sampled on the secondary reset Problem: All reset straps are sampled on the rising edge of P_RST#, except the following: MEMTYPE, P_BOOT16# and CORE_RST#. Implication: When external circuitry is used to dynamically control the reset straps, the timing may cause incorrect values to be latched. Workaround: By default all reset straps have internal pull-ups. When non-default state is required, then an external 1.5K pull-down resistor should be used. This implementation has no timing requirements. Otherwise, when external circuitry is used to dynamically control, then make sure the proper level is provided at the rising edge of S_RST#. Status: Fixed. Fixed in B-0 stepping. See the Table , “Summary Table of Changes” on page 9. 30 Specification Update Intel® 80331 I/O Processor Non-Core Errata 40. PCI-X to PCI Memory Read double-word near 1MB boundary may cause the system to hang Problem: PCI-X to PCI Memory Read DWORD near a 1 MB boundary may cause the system to hang. Implication: In the following scenario: • A master on the PCI-X bus initiates a Memory Read DWORD through the bridge, with a starting address that is not DW aligned and is within the last 4 bytes of a 1 MB address boundary. • On the PCI side, the bridge initiates the request and disconnects after a single data phase. The transaction should end at this point, but instead, the transaction is then issued a second time with the starting address at the 1 MB boundary before being retired. • Back on the PCI-X side, the completion is issued with the correct data for the initial 4-byte request, followed by a second “unexpected” completion. As a result of the second completion, the internal resource counter gets decremented twice, causing the resource checking logic to assume there is no more room on the chip for split transactions. • At this point the bridge can no longer process upstream non-posted requests and terminates them with retry. Note: The above failure only occurs on a Memory Read DWORD from PCI-X to PCI when the starting address is not DW aligned. A Memory Read DWORD to 0xffffc does not fail, whereas a read to 0xfffff does fail. Workaround: This issue only affects PCI-X to PCI transactions. PCI to PCI-X, PCI to PCI and PCI-X to PCI-X transactions are not affected. PCI-X to PCI implementations should not attempt to do a Memory Read DWORD that is not DW aligned and is within the last 4 bytes of a 1 MB address boundary. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. 41. PCI-X to PCI Memory Read Block across 1MB boundary may cause data corruption Problem: PCI-X to PCI Memory Read Block across 1MB boundary may cause data corruption. Implication: In the following scenario: • A master on the PCI-X bus initiates a Memory Read Block through the bridge, with a starting address + byte count that crosses a 1 MB boundary. The request is not DWORD aligned and starts less than three data phases from the 1 MB boundary. • On the PCI side, the bridge initiates the request by setting the low two address bits to 00b as required by the PCI Local Bus Specification, Revision 2.3. • The bridge receives data up to the boundary and disconnects, then requests the remainder of the data in a second transaction. • On the source bus, the bridge should deliver a small completion up to the 1MB boundary with the BCM bit set. However, in this case the bridge plays the request without BCM and uses the full remaining byte count. Since the bridge can not disconnect, it winds up satisfying the byte count with garbage for data after the boundary. Note: For failure to occur, starting address and byte count must be set so the request crosses the 1 MB boundary, but bytes requested after the boundary are less than 4 bytes. Requests that are DWORD aligned do not fail, nor do requests that do not cross the 1MB boundary (even when not aligned). Workaround: This issue only affects PCI-X to PCI transactions. PCI to PCI-X, PCI to PCI and PCI-X to PCI-X transactions are not affected. PCI-X to PCI implementations that do not cross a 1 MB boundary does not experience this issue. Status: Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. Specification Update 31 Intel® 80331 I/O Processor Non-Core Errata 42. DMA CRC result is byte reversed Problem: The DMA CRC result value is byte reversed. Example CRC operation with the DMA: CRC Seed: 0x0000 0000 Data Pattern (16 bytes): 0x1234 5678, 0x1457 9098, 0x1234 5678 0x1457 9098 Expected CRC Value: 0x6791 25DA Actual CRC Value: 0xDA25 9167 CRC Seed: 0x1122 3344 Data Pattern(16 bytes): 0x1234 5678 0x1457 9098, 0x1234 5678 0x1457 9098 Expected CRC Value: 0x1D2C B941 Actual CRC Value: 0x41B9 2C1D Implication: Data corruption occurs when software does not take care of the byte reversal. Workaround: Software must byte reverse the CRC result after the DMA completes. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 43. CRC corruption on PCI-to-local DMA transfers Problem: CRC corruption can occur when polling DMA registers during PCI-to-local transfers. CRC corruption happens regardless of whether the transfer data is written to memory (DMA Transfer disable bit DCR.7, is set). Both DMA channels are affected. Implication: CRC data corruption occurs. The DMA transfer itself is not affected by this erratum. Workaround: Use local address sources only when calculating CRC. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 44. Byte Count Modified bit set to 1 Problem: During a memory read DWORD which crosses the 1 MB boundary in PCI-X to PCI mode, the split completion has the correct data and byte count but the BCM (Byte Count Modified) bit in the attribute field is set to 1. In the PCI-X Addendum to the PCI Local Bus Specification, Revision 1.0a description of the BCM bit it states, “BCM is used only for split completions resulting from burst transaction and is set to 0 for split completions resulting from all other commands.” Implication: The PCI-X Addendum to the PCI Local Bus Specification, Revision 1.0a states that for non-burst transactions that the BCM bit is not to be used and should read 0, this bit is used for diagnostic purposes, and targets (bridges and requesters) are permitted to ignore this bit. Workaround: BCM is a non-error status bit, only used for “flow control” in split completions and should be ignored. Status: Fixed. Fixed in D-0 stepping. See the Table , “Summary Table of Changes” on page 9. 32 Specification Update Intel® 80331 I/O Processor Non-Core Errata 45. Corrupted byte count and data when crossing 1 MByte boundary in PCI-X to PCI mode Problem: Scenario - Memory Read Block PCI-X to PCI mode beginning at address 9, 10 or 11 bytes from the 1 MB boundary, with a byte count that crosses the boundary. In this failing scenario, the check for two DWords away from the boundary relies on the aligned DWord address of the third DWord. Since the starting address is in the middle of the third DWord, the case is missed. The result is the PCI read satisfies the byte count by reading across the 1 MB boundary. The first split completion on the PCI-X bus is correct data, modified byte count and BCM set. The second split completion on the PCI-X bus has a corrupted byte count, therefore, the correct data is sent and additional garbage data is then sent until the corrupt byte count is satisfied. The corrupted byte count is a result of crossing the 1 MB boundary. The original byte count minus the byte count captured is less than zero. The failing case is very similar to the previous memory read block case, but the impact to the requester is different. Implication: Corrupted byte count and additional garbage data is sent to the requester to satisfy the corrupted byte count. In some cases, other transactions (on the bridge) following the bad split completion can be corrupted. When the bridge completes sending the corrupted byte count, it frees the buffer space used by that data. That buffer may contain data for other transactions and that data is lost. Workaround: Do not allow PCI-X to PCI memory reads with DWORD unaligned starting address to cross the 1 MByte boundary. The starting address must have bits [1:0] equal to 01, 10 or 11 for this erratum to occur. When the starting address[1:0] = 00, this erratum does not occur. Status: Fixed. Fixed in D-0 stepping. See the Table , “Summary Table of Changes” on page 9. 46. PCI-X to PCI Memory Read with 4 K byte count and unaligned starting address Problem: The initiator on the PCI-X side issues a Memory Read Block with 4 K request byte count (BC=000h), which the bridge terminates with Split Response. The address in this case is not DWORD aligned (A[1:0] does not = 00b). On the PCI side, the bridge executes the transaction as Memory Read Multiple, but disconnects after only a single dataphase and does not re-issue the transaction. No split completion is returned to the PCI-X bus and the transaction permanently consumes transaction resources. Implication: This can permanently consume transaction resources, and therefore could result in a system hang. Workaround: Use addresses that are DWORD aligned or any byte count other than 4 K. Status: Fixed. Fixed in D-0 stepping. See the Table , “Summary Table of Changes” on page 9 Specification Update 33 Intel® 80331 I/O Processor Non-Core Errata 47. VCCDDR (VCC25/VCC18) Current Spike Problem: An internal DDR signal gets routed through logic that is powered by the VCC15 rail. This signal gets driven to the wrong level when VCC15 rail is not powered up. This signal controls the input and output enable of all DDR buffers, so when VCC15 is off and VCC25/18 is on, it asserts high and cannot tristate the DDR outputs. The issue can occur at power-up, power down and power fail when battery back-up continues to power the 80331. Implication: Excessive VCC25/18 power supply rail current to the VSS rail is experienced until VCC15 core supply is up. Also, when using DDR-I mode (VCC25), the buffers can be overstressed when VCC15 = off and VCC25 = on. This can cause a reliability problem since the processor may become damaged over time. When in DDR-II mode (VCC18), the buffers do not overstress since VCC18 maximum is 1.9 V. Therefore, no reliability problems exist. Workaround: A new power sequencing requirement should be followed for B-0 and C-0 steppings. This problem does not affect A-1 stepping, and is being fixed in C-1 stepping. 1. VCC33 power up 2. VCC15 power up 3. VCC25/18 power up The VCC15 minimum supply voltage has to be within 25% of the VCC25 supply voltage, until the VCC15 supply reaches 1.425 V (VCC15 minimum), during power-up and power-down sequences. This is the minimum requirement to ensure no gate overstress when using DDR-I memory. For power-fail condition, the battery should power only the DIMM. The 80331 should be isolated from the battery power. Status: 34 Fixed. Fixed in C-1 stepping. See the Table , “Summary Table of Changes” on page 9. Specification Update Intel® 80331 I/O Processor Non-Core Errata 48. Bridge PCI ordering rule violation Problem: When the bridge is in PCI-to-PCI mode, it receives a downstream memory write which is claimed by the bridge, followed by a subsequent memory read request which is enqueued immediately afterwards. At the same time, the upstream buffers on the chip are filled with upstream Memory Writes and read completion data. On the destination bus, the memory write is issued in small fragments due to either target disconnect or a low setting of the secondary MLT, and the upstream buffers begin to free up due to delivery of upstream Memory Write data. In between delivery of downstream Memory Write fragments, the bridge issues the subsequent Memory Read, in violation of PCI ordering rules. Summary of the four failure modes: 1. PCI-to-PCI: A Memory Read transaction may pass a previously enqueued Memory Write. 2. PCI-to-PCI: A Configuration or I/O Read transaction may pass a previously enqueued Memory Write. 3. PCI-to-PCI: A Configuration or I/O Write transaction (including type1 configure-to-special cycle) may pass a previously enqueued Memory Write. 4. PCI-X-to-PCI: A Configuration or I/O Write transaction (including type1 configure-to-special cycle) may pass a previously enqueued Memory Write. Implication: In the above scenario, a PCI read/write transaction can pass a PCI memory write transaction which violates PCI ordering rules. When the primary bus is PCI and secondary bus is PCI-X, this would only be seen as described in item 4 listed above. No impact when the bridge is configured in PCI-X to PCI-X mode. Workaround: Use in PCI-X to PCI-X mode. When the primary bus is PCI and secondary bus is PCI-X, do not use upstream DWORD I/O or type1 configure-to-special cycle writes that must be ordered against previously issued Memory Writes. Status: Fixed. Fixed in D-0 stepping. See the Table , “Summary Table of Changes” on page 9. 49. ATU claims PCI commands 8 and 9 when issued as Dual Address Cycle (DAC) Problem: In PCI mode, commands 8 and 9 are reserved. The appropriate PCI response to these commands is to master abort. When these commands are issued as a Dual Address Cycle (DAC), the Address Translation Unit (ATU) claims them and they are executed as Memory Read (command 8) and Memory Write (command 9) on the internal bus. The ATU properly master aborts SAC PCI commands 8 and 9. This issue does not occur in PCI-X mode. Implication: No negative impact expected, since these PCI commands are ‘reserved’ and should not be issued to the ATU. Workaround: No workaround. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. Specification Update 35 Intel® 80331 I/O Processor Non-Core Errata 50. Secondary bus PCI RST# pulse prior to the rising edge of P_RST# Problem: During system power on and prior to 80331 receiving the rising edge of P_RST#, a pulse may be observed on the secondary bus PCI RST# signal (S_RST#). This functionality is a result of the 3.3v to 1.5v leakage described in Specification Clarification 19. Other signals that may see a pulse during power-on include the following: all Peripheral Bus Interface (PBI), PCI, GPIO, UART, JTAG and PWRDELAY signals. Refer to Specification Clarification 23 for specifics on PWRDELAY. Signals not included are DDR and I2C. Implication: PCI/PCI-X controllers on the secondary bus segment could interpret this S_RST# pulse as a true rising edge and initialize into an undetermined state. Pulses on PWE# and PCEx# may cause data corruption for memory devices connected to the PBI bus. Workaround: A hardware workaround has been identified. The P_RST# signal that is received by the 80331 can be used to gate the secondary bus PCI RST# signal. For example, use P_RST# and S_RST# as inputs to an AND gate and connect the output to the secondary device RST# pin. The gate delay should be kept down to a couple nanoseconds, so as to not interfere with the PCI initialization pattern. Another workaround is to bring up 3.3 V and 1.5 V power rails simultaneously, but continue to maintain the power sequencing requirement (as specified in the design guide) for these two power rails. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 51. Slow edge rates observed when 80331 is driving the primary bus Problem: Signal integrity issues might occur when the 80331 is driving the primary PCI/PCI-X bus in conventional PCI or PCI-X modes. Implication: Parity errors and system hangs may occur. Workaround: A software workaround has been identified. The workaround is required for reliable conventional PCI and PCI-X mode operation. The workaround is to write all 1s to the PCI drive strength overrides with the Intel XScale® core. Bit 31 should be set in the following two registers to enable drive strength override: • 3.3 V Drive Strength Control Register at FFFF_F5D0h • 1.5 V Drive Strength Control Register at FFFF_F5D4h The default value is 0000_3F3Fh for both registers. Status: 36 Fixed. Fixed in C-0 stepping. See the Table , “Summary Table of Changes” on page 9. Specification Update Intel® 80331 I/O Processor Non-Core Errata 52. Enabling the core-to-memory port can cause a stall condition Problem: A stall condition can occur during high data throughput to the Memory Controller Unit (MCU), due to a non-empty Bus Interface Unit (BIU) data queue that might allow no further traffic to be submitted from the Intel XScale® core. The stall is due to an invalid state in the queue control registers and the associated pointers. The pointers and the queue status bits get out of sync, allowing part of the BIU to conclude that it is full and therefore not to accept any more transactions. The other part of the BIU concludes that it is empty, and therefore does not flush the non-empty condition. The stall condition can be generated in the following scenario: 1. Within the MCU, accept a read from one port (core-to-memory or IB-MCU). This triggers an automatic coherency check, which requires writes within the same 1 K address “page” to be pushed ahead of the read. 2. An “incoherent” write (in other words, a write that must precede the read from step 1) must exist in the opposite port. This write is executed to DDR memory as normal. 3. A read must also exist in the opposite port; destination (coherent or incoherent) is unimportant. This has the effect of maintaining the port’s request to the MCU. 4. An incoherent write arrives in the original port during the exact cycle the opposite write is completed. 5. Due to the combination of pending read request and last-second incoherent write, the MCU gets out of sync and attempts to acknowledge a write from the wrong port. This causes the offending queue pointer/status bit mismatch. This situation locks the opposite port to the original read transaction. Implication: Enabling the core-to-memory port (BIUCR.0 = 1, IB address = FFFF_E608h) can cause a stall condition or data corruption. Workaround: Do not enable the core-to-memory port in the BIU Control Register (BIUCR.0). When BIUCR.0 = 0 (default condition), the core-to-memory port is disabled and forces all Intel XScale® core memory transactions to be issued out the core internal bus (IB) port, therefore avoiding the stall condition. Note: Status: Disabling the core-to-memory port requires a review of specification clarification 13, “Bus Interface Unit follows PCI ordering rules” on page 54. Fixed. Fixed in D-0 stepping. See the Table , “Summary Table of Changes” on page 9. Specification Update 37 Intel® 80331 I/O Processor Non-Core Errata 53. PCI-to-PCI read flow-through with destination TRDY# stalls can cause data corruption Problem: PCI-to-PCI read flow-through with destination TRDY# stalls can cause data corruption. Implication: The scenario is a PCI-to-PCI memory read with flow-through enabled (source bus bandwidth is less than or equal to destination bus bandwidth). Requestor initiates the read on the source bus, and it is retried by the bridge (executed as a delayed transaction). The bridge plays the transaction on the destination bus and starts receiving data from the target. After getting two or three cache lines, the transaction is requested again on the source bus, and the bridge enters flow-through. The target device on the destination bus begins to insert target wait-states, and eventually ends the transaction by stalling TRDY# for a number of clocks then signaling disconnect without data at the cache line boundary. On the source bus, the bridge delivers an extra garbage dataphase beyond what was received on the destination side, causing data corruption. The affected mode is PCI-to-PCI only. Neither PCI-X-to-PCI-X nor PCI-to-PCI-X modes allow TRDY# stalls on the destination side. Workaround: Do not use in PCI-to-PCI configuration. Expected usage model for the 80331 is that the secondary PCI bus operates in PCI-X mode only. For an alternate workaround, when in a system that has devices that might terminate transactions in the above manner, the prefetch policy registers must be set so that the target is not given the opportunity to significantly stall TRDY#. For example: When a device can provide 256 bytes in a timely manner, but delays a request for 384 bytes, the first read and reread factors must not be set higher than 01h (giving an MRM prefetch of 256 bytes, assuming a 64-byte cache-line size). Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 54. S_PCIXCAP PCI mode threshold is too high Problem: The “PCI mode” threshold on the S_PCIXCAP signal on the secondary PCI bus is too high (1.87 V). This has the effect of detecting a PCI bus when more than two slots are populated with PCI-X 66 cards. Implication: A heavily loaded secondary PCI bus (three or four slots), might operate in PCI mode instead of PCI-X mode. Workaround: When a board is configured with more than two PCI-X slots, a circuit can be added to adjust the PCIXCAP voltage. Status: Fixed. Fixed in D-0 stepping. See the Table , “Summary Table of Changes” on page 9. 38 Specification Update Intel® 80331 I/O Processor Non-Core Errata 55. No support for burst I/O and configuration read/writes Problem: The 80331 bridge does not support burst I/O read, I/O write, configuration read, or configuration write in PCI mode. Implication: In conventional PCI mode, it is legal for a requester to attempt a burst I/O read, I/O write, configuration read, or configuration write. The 80331 bridge supports only single data phase configuration and I/O transactions. When a master attempts to issue a burst I/O or configuration read, the bridge does not assert STOP# after the first data phase, resulting in data corruption of all DWords beyond the first. For burst I/O or configuration writes, the bridge asserts STOP#, but does not de-assert TRDY# on the final data phase, resulting in loss of data (the second data phase is dropped by the bridge). PCI-X does not permit these modes of operation. Workaround: X86 processors do not allow this condition to occur. In non-X86 systems that do not preclude these burst mode operations, the application must limit the transfer to a single aligned DWORD (32 bit) operation. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 56. Read flow through hangs due to disconnect without data at a buffer boundary. Problem: Read flow through hangs due to disconnect without data at a buffer boundary. Implication: In PCI to PCI mode an upstream read is issued to the bridge and forwarded to the primary bus, using a calculated prefetch size of at least 3 cachelines. On the primary bus, the target claims the request, and delivers data (with intermittent TRDY# slips) up to a 128-byte boundary, then deasserts TRDY# and waits a number of clocks before disconnecting without data. After the 2nd chatelaine gets on chip, the bridge enters flow-through and begins delivering data to the initiator. If the time difference between the end of the primary bus read and the end of the secondary bus read is approximately 10 clocks or less, the bridge may hang after the data is delivered. Workaround: PCI-X to PCI-X and PCI to PCI-X implementations are not affected by this issue. For PCI to PCI systems in which targets might exhibit the above behavior, set all prefetch factors to 000b. This will set the maximum prefetch size to 2 cachelines (for MRM) and effectively disable read flow-through. There may be a performance impact due to these settings. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 57. P_SERR# not asserted for parity error on AD[63:32] Problem: Primary side P_SERR# is not asserted for a parity error on AD[63:32] during the data phase of a split response to a read request issued by the bridge. Implication: Since no valid data is driven onto the upper A/D bus during a split response for a read transaction, there are no negative side affects of not asserting P_SERR# in this case. This behavior does not comply with the PCI-X specification v1.0a requirements in section 5.4.1.3, however it will have no impact in the application. Workaround: No workaround needed. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 58. Bus Interface Unit (BIU) claims DAC addresses in the range of the Memory Mapped Registers (MMR Problem: The BIU incorrectly decodes and claims Dual Address Cycle (DAC) addresses in the xxxx_xxxx_FFFF_E000h to xxxx_xxxx_FFFF_FFFFh range (e.g. - ‘x’ represents any bit being set Specification Update 39 Intel® 80331 I/O Processor Non-Core Errata to ‘1’). The 32-bit address range of FFFF_E000h to FFFF_FFFFh on the internal bus, represents MMR and reserved space. When a 64-bit address in this range is presented on the internal bus, multiple internal bus units, one of them being the BIU, will claim the transaction. Note: Only the DMA can generate a 64-bit address (DAC) on the internal bus. Implication: Using DAC addresses in the xxxx_xxxx_FFFF_E000h to xxxx_xxxx_FFFF_FFFFh range on the internal bus will cause an internal bus conflict that may result in the reception of undesired data and setting of error flags. Workaround: Avoid using the DMA with DAC addresses in the xxxx_xxxx_FFFF_E000h to xxxx_xxxx_FFFF_FFFFh range. This can be done by utilizing one of the two 64MB ATU outbound memory windows (8000 0000H or 8400 0000H) and its corresponding outbound translation registers (OMWTVR0/OUMWTR0 or OMWTVR1/OUMWTR1) in order to present a 32 bit address on the internal bus and generate a 64 bit address on the PCI bus. The upper translate value register should be programmed with the upper 32 bits of the desired PCI address. The lower translate value register would then be configured to OR in the appropriate value such that the desired lower 32 bits appear on the PCI bus after translation. Refer to Section 3.2.2 “Outbound Transactions – Single Address Cycle (SAC) Internal Bus Transactions” in The Intel® 80331 I/O Processor Developer’s Manual (274065) for more information on how the windowing and translation scheme works. It is possible to now generate the 32 bit internal bus transaction either using the core or the DMA. Both options are viable and one may be preferable over the other depending on the application. Note: Use of the DMA to generate the transaction would require not only the modification of the descriptors in question and setting of the memory-memory transfer enable bit (DCRx) for those descriptors, but care must also be taken not to allow any individual transfer to overrun the size of the outbound window (64MB). Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 59. PCIX-to-PCI Memory Read issued as 32-bit, then retried as 64-bit Problem: A 32-bit memory read transaction from PCI-X to PCI may be retried with REQ64# asserted in violation of the PCI specification. Implication: A memory read with multiple dataphases requested is issued from the PCI-X side across the bridge and played on the PCI-side of the bridge. This read gets some data and is then disconnected by the target. At the same time, a memory read with starting address less than 4DW from the next ADB is enqueued on the PCI-X side and then issued on the PCI immediately after the first read is disconnected. This read is issued the first time with REQ64# deasserted and is retried by the target (delayed transaction). Some time later, the bridge re-issues this read with REQ64# asserted, violating PCI requirements that REQ64# remain the same for every retry. Note: This can only occur in PCI-X to PCI transactions. This behavior is fairly common in many PCI devices and generally has minimal side effects on overall system performance. In some systems, depending on the setting of the discard timer, a delay may occur before normal system throughput is restored. Workaround: Limit the PCI-side to 32-bit only in X-to-I configurations. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 40 Specification Update Intel® 80331 I/O Processor Non-Core Errata 60. Tc1(min) of the PCI-X clock observed to be marginally less than the requirement specified for the PCI-X (Mode 1, class1) clock jitter. Problem: The 80331 generates the PCI-X clock with a nominal frequency of 133 MHz (Tc1 of 7.5 ns). After considering the clock jitter, the minimum clock period (Tc1(min)) observed at the pin may be less than 7.5 ns. The PCI-X class 1 clock jitter specification for mode 1 requires the Tcyc-min to be 7.5 ns with jitter consideration. The same applies for the PCI-X clock generated @ 66 MHz. Implication: No negative impact is expected, when compliant with the routing guidelines. Workaround: There is no workaround to adjust the minimum clock period (Tc1(min)) of the PCI-X clocks. However, the routing guidelines for the PCI-X clock signal take into consideration the effect of the jitter on the minimum clock period (Tc1(min)). Conforming to the routing guidelines in the 80331 design guide will offset the effect of the marginally reduced minimum clock period (Tc1(min)) towards the setup and hold times. Therefore, for system boards that are compliant with the routing guidelines, the risk of violating the setup and hold time requirements and any resulting functional impact, is low. Please refer to the 80331 I/O processor design guide (273823) for further information on the PCI-X clock routing guidelines. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 61. I2C Control Register reset bit does not function Problem: The I2C Control Register (ICR0 and ICR1) bit 14 is supposed to be used for resetting the I2C unit, but writing a '1' to this bit does not reset the I2C unit. Writing a '1' to bit 14 has no effect. Implication: The I2C unit cannot be reset by using ICRx.14. Workaround: Depends on what needs to be accomplished. Asserting P_RST# or setting BCR.6 will reset the I2C unit but will also reset the entire chip or the secondary bus/ATU. For an I2C bus lock condition, it may be cleared by software doing a toggle of the GPOD[11:10] to toggle SCL[1:0] (see non-core erratum 35). If SDA[1:0] need to be toggled, then an external device or unused GPIO will need to be used to control this sequence. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 62. Internal Clock Misalignment Can Cause Processor Hang Problem: After a reset, the 80331 can hang during initial accesses to SDRAM, due to a possible clock misalignment, aggravated by a race condition in the clock divider clear circuit. Implication: A failure will manifest itself as a hang of the I/O processor after reset, during initial accesses to SDRAM. Subsequent warm or cold resets may clear the condition and allow the 80331 to continue operation. Workaround: In most cases, doing a cold or warm reset will clear this condition. Increasing the 1.5v power supply will reduce the probability of a processor hang. Intel is screening parts to eliminate the probability of occurrence (refer to Specification Change #22 “Internal Clock Misalignment” on page 50). Status: Fixed. This issue was fixed in the D-1 stepping of the product (this is also related to Specification Change #22 “Internal Clock Misalignment” on page 50). 63. Spurious DMA0 End-Of-Transfer Interrupt Problem: When the interrupt controller goes from having no interrupts asserted to one or more asserted, there is a 1-clock cycle window in which the IINTVEC (IRQ Interrupt Vector register; FFFF_E7C8h or CP6, register 14) or FINTVEC (FIQ Interrupt Vector register; FFFF_E7CCh or CP6, register 15) may report the value of the INTBASE register (Interrupt Base register; FFFF_E7C0h or CP6, register 12), which is the vector address for interrupt 0, DMA0 End-of-Transfer. This condition can occur even if the DMA0 EOT interrupt is masked, INTCTL0.0 = 0. Specification Update 41 Intel® 80331 I/O Processor Non-Core Errata Implication: No negative impact expected. If the routine that reads the IINTVEC/FINTVEC qualifies the return value against IINTSRC0.0/FINTSRC0.0, it will either see there is nothing to do or it will validly call the DMA0 End-of-Transfer handler. Workaround: If IINTVEC/FINTVEC equals INTBASE, then re-read the IINTVEC/FINTVEC register. Status: No Fix. Not to be fixed. See the Table , “Summary Table of Changes” on page 9. 42 Specification Update Intel® 80331 I/O Processor Core Errata Core Errata 1. Abort is missed when lock command is outstanding Problem: A bus abort occurs on a code fetch, while an instruction TLB or I-Cache lock MCR, Move to Coprocessor from ARM Register, command is outstanding. The core fails to abort, instead executing the instruction returned on the aborting transaction. Parity errors are not affected. The bus abort may be due to either an abort pin assertion or a multi-bit ECC error. Workaround: Branch flush after every I-TLB or I-Cache lock. For example, the following instruction does this: SUB PC, PC #4;flush the pipe. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 2. Aborted Store that Hits the Data Cache May Mark Write-Back Data as Dirty Problem: When there is an aborted store that hits clean data in the data cache (data in an aligned four word range that has not been modified from the core since it was last loaded in from memory or cleaned), the data in the array is not modified (the store is blocked), but the dirty bit is set. When the line is then aged out of the data cache or explicitly cleaned, the data in that four word range is evicted to external memory, even though it has never been changed. In normal operation this is nothing more than an extra store on the bus that writes the same data to memory that is already there. Here is the boundary condition where this might be visible: 1. A cache line is loaded into the cache at address A. 2. Another master externally modifies address A. 3. A core store instruction attempts to modify A, hits the cache, aborts because of MMU permissions, and is backed out of the cache. That line normally is not marked dirty, but because of this errata is marked as dirty. 4. The cache line at A then ages out or is explicitly cleaned. The original data from location A is evicted to external memory, overwriting the data written by the external master. This only happens when software is allowing an external master to modify memory that is, write-back or write-allocate in the core page tables, and depending on the fact that the data is not 'dirty' in the cache, to preclude the cached version from overwriting the external memory version. When there are any semaphores or any other handshaking to prevent collisions on shared memory, this is not a problem. Workaround: For this shared memory region, mark it as write-through memory in the core page table. This prevents the data from ever being written out as dirty. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. Specification Update 43 Intel® 80331 I/O Processor Core Errata 3. Performance Monitor Unit event 0x1 can be incremented erroneously by unrelated events Event 0x1 in the performance monitor unit (PMU) can be used to count cycles in which the instruction cache cannot deliver an instruction. The only cycles counted should be those due to an instruction cache miss or an instruction TLB miss. The following unrelated events in the core, also causes the corresponding count to increment when event number 0x1 is being monitored: • • • • Any architectural event (e.g., IRQ, data abort) MSR instructions which alter the CPSR control bits. Some branch instructions, including indirect branches and those mispredicted by the BTB. CP15 MCR instructions to registers 7, 8, 9, or 10 which involve the instruction cache or the instruction TLB. Each of the preceding items may cause the performance monitoring count to increment several times. The resulting performance monitoring count may be higher than expected, when the preceding items occur, but should never be lower than expected. Workaround: There is no way to obtain the correct number of cycles stalled due to instruction cache misses and instruction TLB misses. Extra counts, due to branch instructions mispredicted by the BTB, may be one component of the unwanted count that can be filtered out. The number of mispredicted branches also can be monitored using performance monitoring event 0x6 during the same time period as event 0x1. The mispredicted branch number then can be subtracted from the instruction cache stall number generated by the performance monitor to get a value closer to the correct one. This workaround only addresses counts contributed by branches that the BTB is able to predict. All the items in the preceding bulleted list still affect the count. Depending on the nature of the code being monitored, this workaround may have limited value. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 4. In Special Debug State, back-to-back memory operations — where the first instruction aborts — may cause a hang Problem: When back-to-back memory operations occur in the Special Debug State (SDS, used by ICE and Debug vendors) and the first memory operation gets a precise data abort, the first memory operation is correctly cancelled and no abort occurs. Depending on the timing, however, the second memory operation may not work correctly. The data cache may internally cancel the second operation, but the register file may have scoreboarded registers for that second memory operation. The effect is that the core may hang (due to a permanently scoreboarded register) or that a store operation may be incorrectly cancelled. Workaround: In Special Debug State, any memory operation that may cause a precise data abort should be followed by a write-buffer drain operation. This precludes further memory operations from being in the pipe when the abort occurs. Load Multiple/Store Multiple that may cause precise data aborts should not be used. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 44 Specification Update Intel® 80331 I/O Processor Core Errata 5. Accesses to the CP15 ID register with opcode2 > 0b001 returns unpredictable values Problem: The ARM Architecture Reference Manual (ARM DDI 0100E) states the following in chapter B-2, section 2.3: When an <opcode2> value corresponding to an unimplemented or reserved ID register is encountered, the System Control processor returns the value of the main ID register. ID registers other than the main ID register are defined so that when implemented, their value cannot be equal to that of the main ID register. Software can therefore determine whether they exist by reading both the main ID register and the desired register and comparing their values. When the two values are not equal, the desired register exists. The Intel XScale® core does not implement any CP15 ID code registers other than the Main ID register (opcode2 = 0b000) and the Cache Type register (opcode2 = 0b001). When any of the unimplemented registers are accessed by software (e.g., mrc p15, 0, r3, c15, c15, 2), the value of the Main ID register was to be returned. Instead, an unpredictable value is returned. Workaround: No workaround. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 6. Disabling and re-enabling the MMU can hang the core or cause it to execute the wrong code Problem: When the MMU is disabled via the CP15 control register (CP15, CR1, opcode_2 = 0, bit 0) after being enabled, certain timing cases can cause the processor to hang. In addition to this, re-enabling the MMU after disabling it can cause the processor to fetch and execute code from the wrong physical address. To avoid these issues, the code sequence below must be used whenever disabling the MMU or re-enabling it afterwards. Workaround: The following code sequence can be used to disable and/or re-enable the MMU safely. The alignment of the mcr instruction that disables or re-enables the MMU must be controlled carefully, so that it resides in the first word of an instruction cache line. @ The following code sequence takes r0 as a parameter. The value of r0 will be @ written to the CP15 control register to either enable or disable the MMU. mcr p15, 0, r0, c10, c4, 1 @ unlock I-TLB mcr p15, 0, r0, c8, c5, 0 @ invalidate I-TLB mrc p15, 0, r0, c2, c0, 0 @ CPWAIT mov r0, r0 sub pc, pc, #4 b 1f @ branch to aligned code .align 5 1: mcr p15, 0, r0, c1, c0, 0 @ enable/disable MMU, caches mrc p15, 0, r0, c2, c0, 0 @ CPWAIT mov r0, r0 sub pc, pc, #4 Status: No Fix. See the Table , “Summary Table of Changes” on page 9. Specification Update 45 Intel® 80331 I/O Processor Core Errata 7. Updating the JTAG parallel registers requires an extra TCK rising edge Problem: The IEEE 1149.1 spec states that the effects of updating all parallel JTAG registers should be seen on the falling edge of TCK in the Update-DR state. The Intel XScale® core parallel JTAG registers, incorrectly require an extra TCK rising edge to make the update visible. Therefore, operations like hold-reset, JTAG break, and vector traps require either an extra TCK cycle by going to Run-Test-Idle or by cycling through the state machine again in order to trigger the expected hardware behavior. Workaround: When the JTAG interface is polled continuously, this erratum has no effect. When not, an extra TCK cycle can be caused by going to Run-Test-Idle after writing a parallel JTAG register. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 8. Non-branch instruction in vector table may execute twice after a thumb mode exception Problem: When an exception occurs in thumb mode and a non-branch instruction is executed at the corresponding exception vector, that instruction may execute twice. Typically instructions located at exception vectors must be branch instructions which go to the appropriate handler, but the ARM architecture allows the FIQ handler to be placed directly at the FIQ vector (0x0000001c/0xffff001c) without requiring a branch. Because of this bug, the first instruction of such an FIQ handler may be executed twice when it is not a branch instruction. Workaround: When a ‘NOP’ is placed at the beginning of the FIQ handler, the ‘NOP’ executes twice and no incorrect behavior results. When a branch instruction is placed at the beginning of the handler, it does not executed twice. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 46 Specification Update Intel® 80331 I/O Processor Specification Changes Specification Changes 1. HPI# (High Priority Interrupt) is a maskable interrupt Issue: The HPI# interrupt input is both maskable and masked by default (as are all interrupts). It is controlled by INTCTL1.31. HPI# operates the same as the other external interrupt inputs (S_INT[D:A]#). 2. PCIODT_EN Reset Strap Signal Issue: PCI Bus ODT Enable (PCIODT_EN) is a reset strap muxed onto signal A[20] and is latched on the rising (de-asserting) edge of P_RST#. It is used to determine when the secondary PCI(-X) bus uses internal pull-ups on the following signals: S_AD[63:32], S_C/BE[7:4]#, S_PAR64, S_REQ64#, S_REQ[3:0]#, S_ACK64#, S_FRAME#, S_IRDY#, S_DEVSEL#, S_TRDY#, S_STOP#, S_PERR#, S_LOCK#, S_M66EN, S_SERR# and S_INT[D:A]#. When disabled, then external pull-up resistors are required. PCI ODT enable is valid for the 80331 secondary PCI bus only. Secondary PCI bus options: 1. PCIODTEN = 1 (default), enables 8.2 K internal pull-ups to 3.3 V. 2. PCIODTEN = 0, external 8.2 K pull-ups to 3.3 V are required. 3. LOCK# functionality has been de-featured Issue: The LOCK# functionality of the PCI-X bridge has been de-featured from the 80331. 4. Watchdog Timer and Retry Timer has been de-featured Issue: The Watchdog Timer and Retry Timer of the PCI-X bridge has been de-featured from the 80331. 5. P_GNT# and P_REQ# signals have new ball locations on B-0 Issue: The location of P_REQ# and P_GNT# on A-1 causes a violation of the maximum trace length required by the PCI Local Bus Specification, Revision 2.3: P_REQ# signal is moving from T6 on A-1 to H11 on B-0. P_GNT# signal is moving from R4 on A-1 to G12 on B-0. The 80331 boards need to incorporate series resistors that can be populated/de-populated for connection to either the A-1 or B-0 P_REQ#/P_GNT# ball location. Route the P_REQ# net to the two ball locations as separate routes through two 0 ohm series resistor located near the PCI edge connector. Route the P_GNT# net to the two ball locations as separate routes through two 0 ohm series resistor located near the PCI edge connector. Populate the resistor that connects the net to the correct ball according to the silicon revision. 6. Peripheral Performance Monitor Unit has been de-featured Issue: The Peripheral Performance Monitor Unit has been de-featured. The Intel XScale® core PMON is still functional. Specification Update 47 Intel® 80331 I/O Processor Specification Changes 7. Processor Device ID has been removed Issue: The Processor Device ID (PDIR) at FFFF E780h is suppose to mirror the JTAG ID, but instead has a value of 0x0. This register is not to be fixed in future steppings, since there are other registers that can be read to determine processor type and revision information. 8. 1.5K pull-down required on AD[15] of the PBI bus Issue: In order to prevent secondary PCI clock instabilities, make sure AD[15] of the PBI bus has a 1.5 K pull-down. 9. OCD and Receive Enable calibration de-featured Issue: The ability to adjust the electrical interface to account for out of specification DDR-II DIMMs using OCD (off-chip driver) and receive enable calibration, is no longer a supported feature. 10. New Watchdog Timer (WDT) functionality in B-0 stepping Issue: Watchdog timer (WDT) expiration can either generate a chip reset or a core interrupt. Added Watchdog timer interrupt control to the following register bits: INTCTL0.17, INTSTR0.17, IINTSRC0.17, FINTSRC0.17, IPR1.3:2 Control for WDT reset or interrupt generation is done by the interrupt mask bit, INTCTL0.17. When clear (default), the WDT generates a reset. When set, the WDT generates an interrupt to the core. These functions are mutually exclusive. The WDT is disabled by default see the developers manual for the enabling sequence. 11. PWRDELAY needs only a pull-up for battery back-up mode Issue: The I2C bus has been removed from the processor reset equation (see erratum #35). This allows the PWRDELAY circuit to be simplified to a single pull-up resistor, to enable battery back-up mode. PWRDELAY must be isolated from all other circuitry, and only a 1.5K pull-up to 3.3 V is required. When battery back-up is not required, PWRDELAY should have a 1.5 K pull-down resistor. Note: In some applications PWRDELAY may control other board logic. Before making this change, make sure the other logic is not adversely impacted. 12. ARB_EN signal has been de-featured Issue: The ARB_EN reset strap, muxed on AD[1], has been de-featured from the 80331. When using ‘no bridge’ mode (BRG_EN=0), ARB_EN needs to be pulled low. 13. Intel® 80331 I/O Processor Design Guide change for Unbuffered DDR-I dual-banked DIMMs Issue: The latest routing guidelines for unbuffered DDR-I dual-banked DIMMs are available upon request and is included in the next revision of the design guide. Update - These routing guidelines were added to the October 2004 release of the 80331 design guide (273823-002) 14. DDRRES2 can be pulled down to reduce current during self-refresh Issue: DDRRES2 is used as compensation for DDR-II OCD. Since OCD is not supported in the 80331 (see Specification Change #9), then DDRRES2 can be pulled down to reduce current draw during self-refresh mode. 15. Intel® 80331 I/O Processor Design Guide change for Peripheral Bus Interface (PBI) Issue: The latest routing guidelines for the Peripheral Bus Interface (PBI) are available upon request and included in the next revision of the Intel® 80331 I/O Processor Design Guide. 48 Specification Update Intel® 80331 I/O Processor Specification Changes Update - These routing guidelines were added to the October 2004 release of the 80331 design guide (273823-002) 16. Intel® 80331 I/O Processor Design Guide change for PCI/-X busses Issue: The latest routing guidelines for the PCI/-X busses are available upon request and included in the next revision of the Intel® 80331 I/O Processor Design Guide. Update - These routing guidelines were added to the October 2004 release of the 80331 design guide (273823-002) 17. Internal bus operates at 333 MHz for D-0 stepping Issue: For the D-0 stepping of the 80331, the internal bus operates at 333 MHz. For all previous steppings, the internal bus runs at 266 MHz. 18. Application Accelerator Unit enhanced for D-0 stepping Issue: The Application Accelerator Unit (AAU) in the D-0 stepping has been enhanced to support RAID 6 functionality. The details of this new feature are described in an addendum to the AAU chapter. 19. Recommended DLL register values Issue: Using the default DLL values in combination with low duty cycle DIMMs may result in low hold time margins on read transactions. The default values for the DLL master and slave registers do not center the internal DQS with respect to the eye of the incoming data. Using the default values may result in a reduced hold time due to DQS being late in the data eye, which could lead to ECC errors. Errors have only been observed when using DIMMs that have a low DQS duty cycle. Note: All of the Intel validation up to this point has been with the default, worst case DLL values and all DIMMs used in validation have passed. Firmware should be updated and tested with these new DLL values, in order to add margin to the hold timing during memory reads. DDR-II 400 settings SLVLMIX0 - Address FFFF_F554h; Recommended value - 3333_3333h SLVLMIX1 - Address FFFF_F558h; Recommended value - 0000_0003h SLVHMIX0 - Address FFFF_F55Ch; Recommended value - 3333_3333h SLVHMIX1 - Address FFFF_F560h; Recommended value - 0000_0003h SLVLEN - Address FFFF_F564h; Recommended value - 0000_0003h MASTMIX - Address FFFF_F568h; Recommended value - 0000_000Ah MASTLEN - Address FFFF_F56Ch; Recommended value - 0000_0002h DDR-I 333 settings SLVLMIX0 - Address FFFF_F554h; Recommended value - 6666_6666h SLVLMIX1 - Address FFFF_F558h; Recommended value - 0000_0006h SLVHMIX0 - Address FFFF_F55Ch; Recommended value - 6666_6666h SLVHMIX1 - Address FFFF_F560h; Recommended value - 0000_0006h SLVLEN - Address FFFF_F564h; Recommended value - 0000_0003h MASTMIX - Address FFFF_F568h; Recommended value - 0000_0000h MASTLEN - Address FFFF_F56Ch; Recommended value - 0000_0002h 20. DDR-II JEDEC initialization sequence includes writes to EMRS2 and EMRS3 Issue: The JEDEC DDR-II specification includes a write to EMRS2 and EMRS3 (Extended Mode Register Set) during the initialization sequence. Step 5 is ‘Issue EMRS2 command’ and step 6 is Specification Update 49 Intel® 80331 I/O Processor Specification Changes ‘Issue EMRS3 command’. In order to be JEDEC compliant, these steps should be added to the memory controller initialization sequence. Note: Before implementing, check with your DIMM/memory manufacturer to determine if these steps are necessary. Software should always follow the initialization sequence provided by the DIMM/memory manufacturer guidelines. The following pseudo code shows the EMRS initialization steps that are required to be compliant with the JEDEC DDR-II initialization sequence. // Step 5 and 6 - EMRS(2) and EMRS(3) programming if MemoryType is DDR-II Write 0x2 to DCALADDR (Setting BA[1:0] for EMRS(2)) Write 0x81000003 to DCALCSR (issue EMRS command to CS0) Wait for DCALCSR[31] to report ‘Operation Completed’ Write 0x81100003 to DCALCSR (issue EMRS command to CS1) Wait for DCALCSR[31] to report ‘Operation Completed’ Write 0x3 to DCALADDR (Setting BA[1:0] for EMRS(3)) Write 0x81000003 to DCALCSR (issue EMRS command to CS0) Wait for DCALCSR[31] to report ‘Operation Completed’ Write 0x81100003 to DCALCSR (issue EMRS command to CS1) Wait for DCALCSR[31] to report ‘Operation Completed’ endif 21. Case temperature (Tcase) change Issue: To be consistent with the production test environment, the case temperature (Tcase) for the 80331 I/O processor has been changed from 105ο c to 95ο c. 22. Internal Clock Misalignment Issue: Due to non-core Erratum 62, Internal Clock Misalignment Can Cause Processor Hang, on page 41, Intel is screening parts to eliminate the probability of occurrence. Until this is fixed in a future stepping, a screen has been implemented which will screen out parts exhibiting this issue with a VCC15 greater than 1.46v. With the screen at 1.46v, the on-board 1.5v power rail should not be allowed to go below 1.46v, as this would increase the risk of failure. The 1.5v rail minimum is currently specified in the datasheet as 1.425v, therefore for screened parts, the minimum is changed to 1.46v. Status: 50 Fixed. This issue was fixed in the D-1 stepping of the product. Specification Update Intel® 80331 I/O Processor Specification Clarifications Specification Clarifications 1. 64 MB and 2 GB DDR333 capacities not to be tested in post-silicon validation Issue: Intel is not able to test 64 MB and 2 GB DDR333 DIMMs due to availability. Intel cannot guarantee proper functionality since validation cannot be completed. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 2. DDR-II 400 Unbuffered DIMMs are not supported Issue: The Intel® 80331 I/O processor (80331) supports DDR333 buffered (registered) and unbuffered DIMMs, but only supports DDR-II 400 buffered (registered) DIMMs. DDR-II 400 unbuffered DIMMs are not supported. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 3. Interrupt behavior in the 80331 no bridge mode Issue: When in the 80331 No Bridge Mode (BRG_EN = 0), the external interrupts behave just like when the bridge is enabled in the 80331 (BRG_EN = 1), in that the S_INT[D:A]# interrupt inputs can be forwarded to the P_INT[D:A]# interrupt outputs. The only difference between the two modes is how the internal Messaging Unit interrupt is forwarded. In the 80331 Mode, it is forwarded to P_INTC#, and in the 80331 No Bridge Mode it is forwarded on P_INTA#. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 4. Memory map for 2 GByte of DDR memory Issue: The 80331 can support up to 2Gbytes of DDR SDRAM, but it cannot cross a 2GB boundary, therefore it must be mapped to either 0x00000000 - 0x7fffffff or 0x80000000 - 0xffffffff. Either range conflicts with one or more of the statically assigned regions. The recommendation is to disable the direct outbound ATU window, in order to use the larger 2GB memory, by clearing ATUCR.8 (default setting is ‘0’ - disabled). Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 5. Back to back MCU MMR reads Issue: The memory controller unit (MCU) returns the wrong memory mapped register (MMR) read data, when two MMR read transactions are enqueued into the transaction queues at the same time. This cannot happen from the BIU port as mapping the MMRs to this space is illegal. The only way this can occur is for two internal bus devices to request info from the MCU MMRs at the same time (with different addresses). For example, the BIU (via the Intel XScale® core) and the ATU (via the host), which is a very unlikely usage model. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. Specification Update 51 Intel® 80331 I/O Processor Specification Clarifications 6. Write requirements for the Peripheral Bus Interface Issue: PBI write requirements are: • must set up the Flash or memory to accept writes. • must ensure the write has occurred before another one starts. • it is illegal to burst writes to the PBI. The data presented should not be larger than the PBI width. Any PBI device should be mapped in the MMU the same. Making the device address space cachable can result in buffered/coalesced writes, which are burst to the PBI. XCB=000 and XCB=001 are the only cache policies that should be used for PBI. All other cache policies result in multi-byte transactions. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 7. PCI-X Status Register during PCI mode Issue: The PCI-X Status Register (PX_SR, offset E4h-E5h) in the ATU has meaning only in PCI-X mode. The device number and bus number fields are always updated when a configuration write is detected. The ATU always grabs AD[15:11] for configuration writes, whether it is in PCI or PCI-X mode. When a PCI configuration transaction occurs, the Device Number bits (7:3) are updated to a value of “00000” from the default value of “11111”. The bus number bits (15:8) are only grabbed during the attribute phase (which does not exist for PCI). Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 8. M_RST# driven to DDR-II or DDR-I voltage levels Issue: The de-asserted voltage level on M_RST# with DDR-II is 1.8 Volts and with DDR-I is 2.5 Volts. When M_RST# is needed for other devices (i.e,. - Flash), make sure these voltage levels are appropriate for the target device. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 9. BIU master abort causes two interrupts on reads. Issue: The B-0 stepping added a Bus Interface Unit (BIU) interrupt when the BIU gets master aborted on an internal bus write (see erratum #8). The functionality is different between a read and write case. For a write, the BIU master abort asserts IINTSRC.29 (when enabled) and does not assert an error to the core. For a read, the BIU master abort asserts both IINTSRC[29] (when enabled) and an error to the core. Therefore, on a read case two interrupts is generated. When the interrupt source is masked, then only the master abort on reads is detected, and this is from the direct core error. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 52 Specification Update Intel® 80331 I/O Processor Specification Clarifications 10. Reset Internal Bus (PCSR.5) usage Issue: PCI bus data corruption can occur when the reset internal bus bit is not used correctly. PCSR.5 can be used to reset the internal bus. This resets all memory mapped registers and the ATU configuration header space. This bit is read/write capable from both the internal bus and PCI bus. For both PCI and PCI-X modes, make sure the following steps occur when setting PCSR.5: 1. Clear Bus Master (ATUCMD.2) Enable and Memory Enable (ATUCMD.1). 2. Wait for both the outbound (PCSR.15) and inbound (PCSR.14) read transaction queue busy bits to clear. 3. Make sure no PCI configuration read/write cycles targeting the ATU are in progress, except the reset configuration write, when applicable. 4. Set the Reset Internal Bus bit. 5. Wait for 40 PCI clocks. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 11. No Bridge Mode (BRG_EN) validation Issue: The BRG_EN signal (0 = no bridge, muxed on AD[0]) is used to disable the internal bridge, in order to operate as an I/O processor with a single PCI-X interface. This feature is not to be validated until after PTQ (prototype qualification). Note: When central resource functionality is required, then the 80331 needs to be used with the bridge enabled. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 12. Potential race condition with Interrupt Controller Unit status bits Issue: There is a slight lag in the time it takes between clearing a status bit inside the unit and the corresponding bit in the Interrupt Controller Unit Status Register getting cleared. This has the potential of generating a false interrupt, meaning that the Intel XScale® core is interrupted but the handler is not able to find any source reported in the ICU registers. This condition can be avoided by adding a read from any ICU register after the bit is cleared in the local unit before returning from the interrupt handler. The data from this read can be ignored, but the read itself creates enough latency to allow the updated status to propagate to the ICU Status: No Fix. See the Table , “Summary Table of Changes” on page 9. Specification Update 53 Intel® 80331 I/O Processor Specification Clarifications 13. Bus Interface Unit follows PCI ordering rules Issue: The Core Bus Interface Unit orders transactions based on PCI rules. This allows outgoing writes to pass incoming reads. For most devices on the internal bus, this does not cause problems since the devices function asynchronously with respect to each other. For transactions between the Intel XScale® core and memory via the internal bus, this can result in unexpected data. For example: 0: ldr r0, =0x40000 1: ldr r1, =0xaaaaaaaa 2: ldr r2, =0x55555555 3: str r1, [r0] 4: … <time-delay to allow the previous transactions to complete> 5: ldr r3, [r0] 6: str r2, [r0] This code could potentially load the register r3 with the value 0x55555555 since the store in line 6 may pass the load in line 5. This only happens with transactions on the internal bus. The MCU core port enforces strict ordering and does not exhibit this behavior. If the MCU core port is used, then this issue will not occur. When caching is enabled, then the initial read will initiate a cache-line fill. The subsequent write is pended in the Intel XScale® core until the line fill and the ldr instruction complete. In this case, this issue does not occur. When caching is disabled, and the caching policy is stall-until-complete (X=0, C=0, B=0), this issue does not occur. For other MMU settings with caching disabled, the issue can occur. Specifically regions with data cache and write buffer policies of bufferable (X=0, C=0, B=1) or coalescing-disabled-bufferable (X=1, C=0, B=1) are vulnerable to this issue. In addition, regions configured as write through (X=0, C=1, B=0) are also vulnerable to this issue. In addition, if caching is enabled in the MMU page tables, but the DCache is disabled in the CP15 ARM Control Register, then the effective caching policy is bufferable and this reordering must be accounted for. It is important to realize that any code which accesses memory spaces on the internal bus need to account for this possibility. Code which dynamically disables cache (i.e. - flash programming routines) needs to ensure that the caching policy for the appropriate memory region is set to “stall until complete” until the cache is re-enabled. The simplest scenario to reproduce this is two back-to-back function calls, for example: main: bl bl fun1 fun2 … … … fun1: stmfd ldmfd sp!, {r4, r5, r6, r7, r8, r9, r10, lr} sp!, {r4, r5, r6, r7, r8, r9, r10, pc} stmfd ldmfd sp!, {r4, fp, ip, lr} sp!, {r4, fp, ip, pc} fun2: 54 Specification Update Intel® 80331 I/O Processor Specification Clarifications Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 14. UART, I2C and GPIO memory mapped registers should be addressed with 32-bit accesses Issue: The UART, I2C and GPIO units sit on a dedicated low speed internal bus that does not support byte enables. Due to this functionality, accessing any of these unit memory mapped registers (MMR) with any accesses less than 32-bits can result in corruption of the other bits in the 32-bit MMR. For example, beginning with C-0 stepping, the GPOD register (located at FFFF_F788h) added new bit functions to bits 10 and 11. When software does a byte access to GPOD, this could cause bits 10 and 11 to be written with incorrect data. While most of these registers only implement the lower 8-bits (the upper three bytes are ‘reserved’), the recommendation is that all UART, I2C and GPIO MMRs should only be accessed as 32-bit registers. While it is desired that 32-bit accesses be performed, it is acceptable to access with less than 32-bits, as long as all non-reserved bits are accessed. For purposes of future expansion, 32-bit accesses are preferred. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 15. Flash Wait States Issue: The Address-to-Data wait state and Recovery Cycle wait state fields in Table 60 (PBBAR0) and 62 (PBBAR1) are incorrect in the Intel® Lindsay I/O Processor Component Specification, Rev. 2.0, Vol. 2. The Address-to-Data wait state is actually one more than listed, and the Recovery Cycle wait state is actually two more than listed. See Documentation Change # 8 for more specific information. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 16. UART Interrupt Identification Register Issue: The UART Interrupt Identification Register (UxIIR) is read by software to determine the type and source of UART interrupts. This register gathers and priority encodes the various sources of UART interrupts. The register is read after an interrupt occurs. Enabling and disabling of interrupts (via the Interrupt Enable Register - UxIER or Modem Control Register - UxMCR) effects whether or not the interrupt to the processor occurs. This does not effect the logging of the status of what is happening in the UART. The UART operates in interrupt or polling mode. In polling mode, all interrupts to the processor would be disabled. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 17. Reads on 16-bit PBI bus operate as 32-bit Issue: 2-byte and 4-byte read transactions on the Peripheral Bus Interface (PBI) bus operate as burst reads (in other words, two 16-bit read cycles). All the read transactions from the Intel XScale® core to PBI devices (in other words, SRAM, Flash, etc.) are translated to burst reads with burst size of 2, even though there is no necessity to generate a burst transaction. Therefore, devices on the 16-bit PBI bus should be configured as pre-fetchable. Note: Status: 1-byte transactions on 16-bit PBI bus is not a supported case. Also, a PBI bus configured as 8-bit does not operate this way. No Fix. See the Table , “Summary Table of Changes” on page 9. Specification Update 55 Intel® 80331 I/O Processor Specification Clarifications 18. Embedded Design Usage Model - Secondary PCI bus only Issue: The 80331, with bridge enabled, can be used in embedded designs that require central resource functionality. The secondary PCI bus provides clockouts, arbitration and interrupt inputs for up to four devices. The ATU can generate configuration cycles to all devices on the secondary PCI bus. In contrast, the primary PCI bus cannot be used in embedded designs, therefore no PCI devices can be placed on this bus. The primary PCI bus was designed to be driven by a central resource only. Clockouts, arbitration and interrupt inputs are not provided on the primary PCI bus. When the ATU generates configuration cycles they are not forwarded from the secondary PCI bus to the primary PCI bus. Also, the Intel XScale® core cannot write to the bridge configuration registers. When using the 80331 in embedded designs, keep the bridge enabled (BRG_EN=1) and connect the primary PCI bus as follows: 1. P_CLK is still required. Clock frequency should be 66 MHz, since external pull-ups need to be on P_M66EN, P_DEVSEL#, P_STOP# and P_TRDY#. With these signals pulled high, the 80331 is put into conventional PCI mode expecting a 66 MHz input clock. If providing a 33MHz clock is easier/cheaper, then tie P_M66EN low. 2. P_RST# still required from an external reset source. 3. P_RCOMP needs 100 Ω to ground 4. With P_REQ64# tied high, P_AD[63:32], P_PAR64, and P_C/BE[7:4]# have internal pull-ups 5. Put pull-ups (8.2 K to 3.3V) on all other primary PCI signals. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 19. 3.3 V to 1.5 V leakage Issue: There is a leakage path from 3.3 V rail to the 1.5 V rail. When the 3.3 V is powered on and the 1.5 V is not, then ~500 mV is seen on the 1.5 V rail. This leakage is expected and does not cause any long-term reliability issues. For related issues, see Documentation Change 10 (“Power sequence timing” on page 66) and Non-Core Errata 50 (“Secondary bus PCI RST# pulse prior to the rising edge of P_RST#” on page 36). Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 20. Accessing “reserved” registers in “no bridge” mode Issue: In general, accessing “reserved” registers or bit fields must never be done, as these “reserved” fields might be used for test information or might be implemented in future product revisions. Specifically, accessing peripheral memory mapped registers at FFFF_F5D0h to FFFF_F5DFh when in “no bridge” mode, causes the 80331 to hang. Do not access these registers. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 21. Power plane isolation for Battery Back-Up (BBU) mode Issue: During battery back-up (BBU) mode, when the battery powers the DIMM and the VCC25/18 signals (1.8 V or 2.5 V, depending on the memory type being used) on a single power plane, the battery life is probably reduced, due to leakage. To attain longer battery life, the DIMM and VCC25/18 power planes must be isolated. The power-plane isolation can be accomplished by using a FET. Status: 56 No Fix. See the Table , “Summary Table of Changes” on page 9. Specification Update Intel® 80331 I/O Processor Specification Clarifications 22. AAU result can be written directly to PCI host memory Issue: The Application Accelerator Unit (AAU) can write results not only to local memory but also to the PCI bus host memory via the ATU. This feature can be applied to degraded RAID-5 reads, where the AAU result is the reconstructed data for the host I/O read. The AAU can write its result to PCI; therefore, the degraded read XOR result can be written directly to host memory. This eliminates the need for a DMA operation to transfer the result from local memory to host memory via PCI. Savings for the RAID application include the following: • • • • Note: No DMA descriptor needs to be generated. No DMA interrupt needs to be serviced. Memory and internal bus bandwidth is saved (result write by AAU and read by DMA). Read I/O is serviced faster (eliminates latency of DMA operation). AAU source reads from PCI are not supported; only local memory can be used for this. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 23. PWRDELAY functionality during power sequencing Issue: When the 3.3 V rail is powered on and the 1.5 V rail is powered off, the PWRDELAY input signal drives out until the 1.5 V rail powers up. This is important to understand if still using the legacy power-fail circuit, because it might cause other circuitry to function incorrectly. The proper usage of PWRDELAY is described in specification change 11 (“PWRDELAY needs only a pull-up for battery back-up mode”), which recommends that PWRDELAY be isolated from all circuitry and tied to a 1.5 K pull-up resistor. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 24. PBI lockout condition Issue: When the core is in a tight loop writing to the PBI bus, while the DMA is doing a large block transfer (for example, from SRAM, located on the PBI, to DDR memory), the DMA can be locked out of accessing the PBI and the transaction will never complete. If this condition occurs, use one of these workarounds: 1. Change the MTTR1 from 98h (default) to a lower value (such as 01h). A lower value allows the DMA (or ATU which can also master a transaction to the PBI) to gain access to the PBI, because the BIU is given shorter access for back-to-back BIU internal bus transactions. 2. Add a core read along with the core write, causing it to stall and preventing it from starving the DMA. 3. Add NOPs or dummy instructions to ensure the loop spans greater than two cache lines. 4. Modify the loop such that the write is not done on every iteration. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 25. Interleaving descriptors with D-0 AAU Issue: The P+Q capability is enabled in the AAU globally (ACR.3), not on a descriptor by descriptor basis. Specification Update 57 Intel® 80331 I/O Processor Specification Clarifications Therefore if enabled, all descriptors are processed as P+Q descriptor formats. If disabled, all descriptors are processed as prior AAU definitions (ie - straight XOR). In order to mix RAID-5 with P+Q RAID-6, enable P+Q RAID-6 GF Multiply for the AAU, and build all RAID-5 XOR descriptors as P+Q RAID-6 descriptors, where the GF Multiplier Byte values are all 0x01. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 26. RCVDLY setting for DDR-I memory Issue: The Receive Enable Delay Register (RCVDLY at FFFF_F550h) is used for DQS receive enable calibration. In other words, RCVDLY adjusts the memory controllers relationship of DQS to an internal M_CLK. The RCVDLY value is highly dependant on the board layout and DIMM characteristics. Also, the memory controller only supports a non integer CAS latency (tCAS = 2.5, SDCR0.9:8) for DDR-I, which means that RCVDLY may need to be adjusted because DQS is no longer synchronized with M_CLK. Therefore, when using DDR-I memory, the RCVDLY default setting of 5 may need to be changed to 6 or 7 to operate correctly with a specific DIMM based on the board layout. For example, the Redboot reference code provided by Intel uses a value to 7 to allow for a wider compatibility with various DIMMs. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 27. ATUBAR3 Functionality Issue: The private memory window of the secondary PCI segment defines an address range that the 80331 uses to map private devices to, and to locate local memory for private device access. This range is intended to be mapped to the ATUs private BAR window (ATUBAR3) and the private device BARs. Note that even when the private addressing is enabled, the normal 80331 behavior defined for BME, MSE, IOSE bits in the ATUCMD register are still true. Therefore, when the ATU Memory Space Enable bit is cleared, all ATU BARs including ATUBAR3 will be unable to claim any memory transactions. For example, this bit is typically cleared during a PCI bus scan / enumeration. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 28. VREF isolation for Battery Back-up (BBU) mode Issue: During battery back-up (BBU) mode, the DIMM power can be isolated from the 80331 IOP power. This isolation should also include the VREF signal for the DIMM interface. Due to leakage, the VREF signal for the DIMM should be isolated from the VREF signal for the IOP. This is to ensure that VREF for the DIMM is not disturbed as the IOP powers down when entering battery back-up (BBU) mode. The isolation can be provided by using separate voltage dividers or a FET. For related issues, refer to Specification Clarification 21, “Power plane isolation for Battery Back-Up (BBU) mode” on page 56. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 29. I2C Unit Enabling Issue: Software must guarantee that the I2C bus is idle before enabling the I2C unit. Failure to do so could result in unstable behavior. The IBMR register can be used to monitor the state of the SCL and SDA pins in order to determine bus activity. The I2C Bus Busy bit in the I2C Status Register (ISR.3) can not be used for this purpose, as it is only valid when the I2C unit is enabled. Status: No Fix. See the Table , “Summary Table of Changes” on page 9 58 Specification Update Intel® 80331 I/O Processor Specification Clarifications 30. DMA transactions from local memory to a conventional PCI target can complete out of order Issue: It is possible for the Outbound ATU to get backed up and retry the DMA unit. When this occurs, the possibility exists for DMA transactions to complete out of order as each DMA has 3 separate data queues and there is no guarantee as to which one of the queues will drain on the retry. Status: No Fix. See the Table , “Summary Table of Changes” on page 9 31. SBR1 Programming with Bank 1 Unpopulated Issue: When using single-banked DDR-II DIMMs and the SDRAM Boundary Register 1 (SBR1; FFFF_E514h) is not programmed to match the SDRAM Boundary Register 0 (SBR0; FFFF_E510h), the wrong ODT signal will become activated. The memory controller provides two ODT (On Die Termination) signals (ODT[1:0]) which are used with DDR-II DIMMs to turn on termination during writes. Section 8.7.6 in the Intel® 80331 I/O Processor Developer’s Manual (273942) states, “If bank 1 is unpopulated, SBR1[6:0] is programmed either with all zeroes or a value equal to SBR0[6:0].” To clarify this statement for single-banked DDR-II DIMMs, if bank 1 is unpopulated, then the entire SBR1 must be programmed the same as SBR0. This includes lower bits 06:00 and upper bits 31:30. Bits 30:07 are reserved and should not be written. The memory controller compares the entire range of the SBR0 and SBR1 to determine which ODT signal to enable. If the upper bits 31:30 in SBR0 and SBR1 do not match, then ODT1 will become active instead of ODT0. In addition, when bank 1 is unpopulated, SBR1[6:0] should never be zero if SBR0[6:0] is non-zero. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. 32. 32-bit Writes to Unaligned 64-bit Addresses are Promoted to 64-bit Aligned Writes Issue: In applications that run the PCI bus segment in 32-bit PCI Mode or 64-bit PCI Mode with 32-bit targets, write transactions that are on unaligned 64-bit addresses are promoted to 64-bit aligned writes. The first half of the 64-bit write is on a 64-bit aligned address and has the BE# signals disabled. Therefore, the write is invalid. The second half on the 64-bit write is a valid write with the BE# enabled and the write is to the intended 32-bit address. Per the PCI Local Bus Specification, Revision 2.2, PCI compliant devices should ignore the first half of the 64-bit write due to the BE# signals being disabled. For devices that support using the I/O window, the 64-bit write does not occur when using the ATU I/O Window and only the expected 32-bit write occurs. For memory mapped devices, the only option is to run in PCI-X mode, where the byte count and starting address are consistent with the actual number of bytes to be written (i.e., 4). When a 64-bit PCI-X request gets downshifted, the requester can use the starting address/byte count to recognize that the write request does not cross a DWORD address boundary and only perform a single 32-bit wide data cycle. Status: No Fix. See the Table , “Summary Table of Changes” on page 9. Specification Update 59 Intel® 80331 I/O Processor Specification Clarifications 33. Case Temperature Clarification Issue: Internal models indicate that certain elevated case temperatures (Tcase) of the 80331 may cause elevated field failures in later years of operation. This clarification is precautionary, as Intel has not seen any failures of the 80331 products in the field. Internal modeling data indicates that the degree of failure risk decreases with lower operating frequency (i.e. – 500, 667, or 800MHz) and temperature (i.e. – case temperature). If a failure should occur, it would manifest itself as a hard failure of the I/O processor which can cause a system failure. A detailed analysis of the system operating conditions, specifically case temperature of the 80331 I/O processor, is required. The 80331 should be run with Tcase temperatures that, over the lifetime of the part, average less than the 95oC maximum Tcase that is currently specified in the Intel® 80331 I/O Processor Datasheet (273943). Tcase recommendations for the 80331: Frequency 5 year operating life 6 year operating life 7 year operating life 500MHz o 95 C o 93 C 91o C 667MHz 85o C 83o C 81o C 800MHz 79o C 76o C 74o C Note: Tcase temperatures in the table reflect an average Tcase temperature over the lifetime of the product. Status: 60 Fixed. This issue was fixed in the D-1 stepping of the product. See the Table , “Summary Table of Changes” on page 9. Specification Update Intel® 80331 I/O Processor Documentation Changes Documentation Changes 1. Table 236 shows incorrect description for tWDL field Problem: tWDL field (bits 13:12) shows ‘00’ equals DDR-II Type only. Workaround: Should state ‘DDR-I Type only’ Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 2. Processor Device ID should be removed Problem: Page 739, top of the table shows Processor Device ID Register. Workaround: This register is no longer valid and should be removed, see specification clarification #7. Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 3. Core Performance Monitoring Unit (CPMON) section is incorrect Problem: Incorrect and incomplete information regarding the Core Performance Monitoring Unit. Workaround: Changes include additional control registers (Interrupt, Overflow, Event) and two more counter (PMN2 and PMN3). See the Intel XScale® Core Developer’s Manual (273473), referred to in the manual as ‘XSC2’ core. Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 4. UART FIFO Occupancy Register is read only Problem: Table 312 shows UART FIFO Occupancy register (UxFOR) as ‘read/write’. Workaround: Needs to be changed to ‘read-only’. Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 5. Refresh Frequency Register table is incorrect Problem: The values listed in Table 230 are incorrect. Workaround: Should be as follows: 333 MHz: 500h (7.8 µs value); A00h (15.6 µs value) 400 MHz: 600h (7.8 µs value); C00h (15.6 µs value) Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 6. PBI interrupt should be removed Problem: PBI interrupt should not be included in the 80331 documentation. Workaround: All references to the Peripheral Bus Unit Error Interrupt should be removed. This can be found in Figure 116, INTCTL1.21, INTSTR1.21, IINTSRC1.21, FINTSRC1.21 and IPR3. Affected Docs: Intel® 80331 I/O Processor Developer’s Manual Specification Update 61 Intel® 80331 I/O Processor Documentation Changes 7. ARB_EN has been de-featured Problem: The ARB_EN signal should not be included in the 80331 documentation. Workaround: Remove all references to the ARB_EN signal. Affected Docs: Intel® 80331 I/O Processor Developer’s Manual Intel® 80331 I/O Processor Datasheet Intel® 80331 I/O Processor Design Guide 8. Flash wait state information is incorrect Problem: The Address-to-Data wait state and Recovery Cycle wait state fields in Table 275 (PBBAR0) and Table 276 (PBBAR1) are incorrect. Workaround: The Address-to-Data wait states are defined in bits 4:2. The wait states are actually one more than listed. Therefore the following change applies: 000 - 5 Address-to-Data wait states 001 - 9 Address-to-Data wait states 010 - 13 Address-to-Data wait states 011 - 17 Address-to-Data wait states Others (default) - 21 Address-to-Data wait states The Recovery Cycle wait states are defined in bits 8:6. The wait states are actually two more than listed. Therefore the following change applies: 000 - 3 Recovery wait states 001 - 6 Recovery wait states 010 - 10 Recovery wait states 011 - 14 Recovery wait states 100 - 18 Recovery wait states Others (default) - 22 Recovery wait states This change also affects Table 271, Flash Wait State Profile Programming. Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 62 Specification Update Intel® 80331 I/O Processor Documentation Changes 9. SDCR0 and SDCR1 register updates Problem: The SDCR0 (Table 236) and SDCR1 (Table 237) register description needs to be updated. Workaround: Table 236. DDR SDRAM Control Register 0 - SDCR0 (Sheet 1 of 2) 31 28 24 20 16 12 8 4 0 IOP Attributes rw rw rw rw rv rw rw rw rv rw rw rw rv rv rw rw rv rv rw rw rv rv rw rw rv rv rw rw rv ro rw rw PCI Attributes na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na Intel XScale® core Local Bus Address Attribute Legend: RV = Reserved PR = Preserved RS = Read/Set FFFF E504H Bit Default 31:28 0H 27 02 26:24 0002 23 02 22:20 0002 19:18 002 17:16 012 15:14 002 RW = Read/Write RC = Read Clear RO = Read Only NA = Not Accessible Description RAS: Active to Precharge duration in MCLK periods Equation 7: RAS = tRAS - 1 where tRAS is from SPD Reserved RP: Precharge Command Period in MCLK periods Equation 8: RP = tRP - 1 where tRP is from SPD Reserved RCD: Active to Read, Active to Write Period in MCLK periods Equation 9: RCD = tRCD - 1 where tRCD is from SPD Reserved EDP: Data Path Latency in MCLK periods This field should be programmed to 102. Reserved WDL: Write Data Latency in MCLK periods used by the Memory Controller state machine. See Equation 11. • 00 = 0 MCLK periods (tCAS = 2.5) - (DDR-I Type only) 13:12 002 • 01 = 1 MCLK period (tCAS = 3) - (DDR-II Type only) - not supported • 10 = 2 MCLK periods (tCAS = 4) - (DDR-II Type only) 11 = reserved where tCAS is from SPD 11:10 002 Reserved CAS: CAS Latency: Indicates the CAS Latency used by the Memory Controller state machine. Encoded value based on tCAS from SPD 09:08 002 • 00 = reserved • 01 = 2.5 MCLK periods (DDR-I Type only) • 10 = 3 MCLK periods (DDR-II Type only) - not supported • 11 = 4 MCLK periods (DDR-II Type only) Specification Update 63 Intel® 80331 I/O Processor Documentation Changes Table 236. DDR SDRAM Control Register 0 - SDCR0 (Sheet 2 of 2) 31 28 24 20 16 12 8 4 0 IOP Attributes rw rw rw rw rv rw rw rw rv rw rw rw rv rv rw rw rv rv rw rw rv rv rw rw rv rv rw rw rv ro rw rw PCI Attributes na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na Intel XScale® core Local Bus Address FFFF E504H Bit Default 07:06 002 Attribute Legend: RV = Reserved PR = Preserved RS = Read/Set RW = Read/Write RC = Read Clear RO = Read Only NA = Not Accessible Description Reserved. ODT Termination Value: Determines the termination value of the On Die Termination for both Banks (controlled by ODT[1:0]). Applies to DDR-II SDRAM memory type only. • 00 Disabled 05:04 002 • 01 75 ohm • 10 150 ohm • 11 reserved 03 02 01 02 Varies with external state of MEM_TYPE at PCI bus reset 02 Reserved DDR Type: Identifies the selected DDR generation of SDRAM based on the MEM_TYPE reset strap. 0 = DDR-II (supported speed of 400 MHz) - MEM_TYPE Deasserted. 1 = DDR (supported speed of 333 MHz) - MEM_TYPE Asserted. Data Bus Width: Indicates the width of the data bus. See Section 8.3.3.4, “32-bit Data Bus Width” on page 458. 0 = 64 bits 1 = 32 bits DIMM Type: Selects unbuffered or registered DIMM operating modes for the MCU. 00 64 02 0 = Unbuffered* 1 = Registered NOTE: Unbuffered DDR SDRAM memory subsystems will use the Unbuffered mode. Specification Update Intel® 80331 I/O Processor Documentation Changes Table 237. DDR SDRAM Control Register 1 - SDCR1 31 28 24 20 16 12 8 4 0 IOP Attributes rw rw rw rw rw rw rw rw rv rw rw rw rv rv rv rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw PCI Attributes na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na na Intel XScale® core Local Bus Address Attribute Legend: RV = Reserved PR = Preserved RS = Read/Set FFFF E508H Bit Default 31 02 RW = Read/Write RC = Read Clear RO = Read Only NA = Not Accessible Description DQS# Disable: Controls the behavior of the strobes as well as the configuration of the DIMM. 0 = DQS# Enabled for Differential operation, EMRS bit 10 will be programmed as zero. 1 = DQS# Disabled for Singled-ended operation, EMRS bit 10 will be programmed as one. RTCMD: Read-to-Command (non-Read) turnaround period in MCLK periods. 30:28 0002 • 010 = 2 MCLK periods (DDR-I Type only) • 011 = 3 MCLK periods (DDR-II Type only) all other values reserved WTCMD: Write-to-Command (non-Read) turnaround period in MCLK periods. 27:24 0H Equation 10: WTCMD = tCAS + tWR + tREG where tREG = 1 for registered DIMM and 0 for unbuffered DIMM, tCAS and tWR are from SPD. 23 02 Reserved RTW: Read-to-Write turnaround period in MCLK periods. 22:20 0002 19:17 0002 16:12 0 00002 Equation 11: RTW = tCAS + (BL/2) + tREG + (tEDP-1) = tCAS + tREG + 3 where tREG = 1 for registered DIMM and 0 for unbuffered DIMM, BL=4, tCAS is from SPD, and EDP=2. NOTE: a programmed value of 0002 represents a decimal value of eight (8). Reserved RFC: Refresh-to-Active and Refresh-to-Refresh period in MCLK periods Equation 12: RFC = tRFC - 1 where tRFC is from SPD WR: Write Recovery time in MCLK periods. 11:09 0002 • 000 = 0 - for DDR333 • 010 = 3 - for DDR-II 400 (encoding per JEDEC spec) all other values reserved RC: Active-to-Active and Active-to-Refresh period in MCLK periods. 08:04 0 00002 Equation 13: RC = tRC - 1 where tRC is from SPD WTRD: Write-to-Read turnaround period in MCLK periods. 03:00 0H Equation 14: WTRD = tCAS + tWTR + tREG where tREG = 1 for registered DIMM and 0 for unbuffered DIMM, tCAS and tWTR are from SPD. Affected Docs: Intel® Specification Update 80331 I/O Processor Developer’s Manual 65 Intel® 80331 I/O Processor Documentation Changes 10. Power sequence timing Problem: Section 9.1 of the Intel® 80331 I/O Processor Design Guide describes the power sequence requirement between VCC33 and VCC15, but does not mention any timing parameters. Workaround: The following are the power sequencing requirements that must be followed: 1. The 80331 requires that the VCC33 voltage rail be no less than 0.5 V below VCC15 (absolute voltage value) at all times during operations, including during system power-up and power-down. In other words, the following must always be true: — VCC33 >= (VCC15 - 0.5 V). This can be accomplished by placing a diode (with a voltage drop < 0.5 V) between VCC15 and VCC33. The Anode is connected to VCC15 and the Cathode is connected to VCC33. 2. When a voltage regulator solution is used, which shunts VCC15 to ground while VCC33 is powered, the maximum allowable time that VCC15 can be shunted to ground while VCC33 is fully powered is 20 ms. 3. The maximum allowed time between VCC33 and VCC15 ramping is 525 ms. There is no minimum sequencing time requirement. Affected Docs: Intel® 80331 I/O Processor Design Guide 11. Updated Peripheral Bus Interface (PBI) timings Problem: Table 27 in the 80331 datasheet must be updated. Workaround: Table 27 must have the following values: • • • • • • • • • Tah1 – ALE high time = 15 ns minimum Tav1 – ALE high to address valid = 0 ns maximum Tah2 – ALE low to address invalid = 15 ns maximum Tas1 – Address valid to ALE low = 15 ns minimum Tao1 – ALE low to POE# low = 0 ns minimum Taw1 – ALE low to PWE# low = 15 ns minimum Tah3 – PWE# high to data invalid = 15 ns minimum Tas2 – Data valid to PWE# high = 6 0ns minimum Tac1 – ALE low to PCE[1:0]# low = 15 ns minimum Affected Docs: Intel® 80331 I/O Processor Datasheet 12. ATU PM_CAP[5] text must be updated Problem: Table 140, bit[5] reads as follows: DSI – This field is set to 02 meaning that this function requires a device specific initialization sequence following the transition to the D0 uninitialized state. Workaround: It must be changed to the following: DSI – This field is set to 02 meaning that this function does not require a device specific initialization sequence following the transition to the D0 uninitialized state. Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 66 Specification Update Intel® 80331 I/O Processor Documentation Changes 13. WDTCR also affected by TMR1[3] Problem: The developer’s manual specifies in Section 14.4.2.4 that TMRx, bit[3], (where x = 0 or 1) enables or disables user-mode writes to the timer registers (TMRx, TCRx, TRRx). However, when TMR1[3] is set, the Watchdog timer register (WDTCR) is also disabled from user-mode writes. Workaround: TMR1[3] also controls the Watchdog timer. Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 14. Split Completion Message clarification Issue: Clarification is required for bridge functionality with split completion message. Workaround: Add this to section 2.2.13.3.3 between the second and third paragraph: “If the split completion message indicates the occurrence of a write-data parity error (i.e. - PCI-X bridge class and write data parity error index), the bridge asserts PERR# and sets the appropriate bits in the status register when the transaction completes on the conventional interface. The 80331 bridge exhibits this behavior for both the PCI-X bridge class and completer class transactions. For all other cases in which a non-posted write transaction completes with a split completion message, the bridge terminates the transaction on the conventional interface with target abort.” Affected Docs: Intel® 80331 I/O Processor Developer’s Manual 15. Figure 49 in Design Guide shows incorrect trace length Issue: Figure 49 in the 80331 Design Guide shows incorrect trace length Workaround: Figure 49 incorrectly shows the trace length for DQ/DQS/DM as 2.0”-5.0”. The correct trace length is 2.0”-8.0”, as stated in Tables 58, 59, and 60. Affected Docs: Intel® 80331 I/O Processor Design Guide 16. Wrong Voltage Values in Table 21 Issue: Table 21 shows wrong voltage values. Workaround: Replaced two rows in Table 21. The two rows now appear as follows: VOL1 Output Low Voltage (DDR SDRAM) VOH1 Output High Voltage (DDR SDRAM) 0.35 1.95 V IOL = 12.5 mA (1, 2) V IOH = -12.5 mA (1, 2) Affected Docs: Intel® 80331 I/O Processor Datasheet (273943-003). 17. SBR1 Programming When Bank 1 is Unpopulated Issue: Section 8.7.6 incorrectly states: “If bank 1 is unpopulated, SBR1[6:0] is programmed either with all zeroes or a value equal to SBR0[6:0].” Workaround: The sentence should be changed to “If bank 1 is unpopulated, SBR1[6:0] and SBR1[31:30] should be programmed with a value equal to SBR0[6:0] and SBR0[31:30].” Affected Docs: Intel® 80331 I/O Processor Developer’s Manual Specification Update 67