Geode™ CS4210 IEEE 1394 OHCI Controller General Description The National Semiconductor® Geode™ CS4210 is a PCIbased IEEE 1394 OHCI (Open Host Controller Interface) controller. The CS4210 provides an implementation of the IEEE 1394 Link Layer functionality according to the programming model defined by 1394 OHCI Specification Version 1.0. It supports high speed serial communication up to 400 Mbits per second. The CS4210 is an implementation of the link layer protocol of the IEEE 1394 high speed serial bus, with additional features to support the transaction and bus management layers. The CS4210 also includes DMA engines for high speed performance data transfer and a host PCI bus interface. Perfect for use in PC, set-top box, thin client, and WebPAD™ system applications. The CS4210 supports two types of data transfers: asynchronous and isochronous. The CS4210 provides an external IEEE 1394 physical layer device interface. The CS4210’s physical layer interface (PHY-Link) is compatible with the Geode™ CS4103 and other IEEE 1394 physical layer devices. Features Supports 100, 200, and 400 Mbit/sec data transfer rates Compliant with 1394 OHCI Specification Version 1.0 Compatible interface with the Geode CS4103 IEEE P1394a Physical Layer (PHY) device and other IEEE 1394-1995 version and P1394a Draft 2.0 Physical Layer devices Eight isochronous transmit contexts Eight isochronous receive contexts Capable of reading a 128-byte descriptor in one burst 128 byte, zero wait state bursting Dynamically re-prioritize services 2 KB of isochronous transmit FIFO 2 KB of asynchronous transmit FIFO 4 KB of receiver FIFO Per-packet FIFO thresholding Four concurrent posted writes Eight pending physical responses National specific configuration registers I2C interface support for an optional serial EEPROM Accepts and generates external 8 kHz reference clock 5V tolerant PCI rev 2.1 I/O interface 0.25µ CMOS 100-pin LQFP (Low-profile Quad Flat Pack) package NAND tree for test purposes System Block Diagram PCI Bus I2C Interface EEPROM PCI Interface Geode™ CS4210 IEEE 1394 OHCI Controller PHY-Link Interface Geode™ CS4103 P1394a Physical Layer IEEE 1394 Cable Connectors National Semiconductor is a registered trademark of National Semiconductor Corporation. Geode and WebPAD are trademarks of National Semiconductor Corporation. For a complete listing of National Semiconductor trademarks, please visit www.national.com/trademarks. © 2000 National Semiconductor Corporation www.national.com Geode™ CS4210 IEEE 1394 OHCI Controller July 2000 Geode™ CS4210 Table of Contents 1.0 Architectural Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 2.0 Signal Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1 2.2 3.0 PCI INTERFACE MODULE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 DMA ENGINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.1 Transfer Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.2 Host Memory Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.3 ATDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.4 ITDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.5 RDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 TRANSMIT DRAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 RECEIVE FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 LINK LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 PHYSICAL LAYER INTERFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 REGISTER SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 RELATED DOCUMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 PIN ASSIGNMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 SIGNAL DESCRIPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.1 PCI Bus Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.2 PHY-Link Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.3 Miscellaneous Interface Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.4 Power Supplies and Ground Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Operational Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1 3.2 OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.1 Asynchronous Data Transfer Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.2 Isochronous Data Transfer Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.3 Miscellaneous Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 SOFTWARE INTERFACE OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.1 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.2 DMA Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.2.1 3.2.2.2 3.2.3 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.3.1 3.2.3.2 3.2.3.3 3.3 www.national.com Asynchronous Transmit Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Asynchronous Receive Interrupts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Isoch Tx and Rx Context Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 COMMON DMA CONTROLLER FEATURES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.1 Context Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.2 ContextControl.event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3.2.1 3.3.2.2 3.3.2.3 3.3.2.4 3.3.2.5 3.4 DMA Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Physical Response DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 ContextControl.run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ContextControl.wake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ContextControl.active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ContextControl.dead. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 CommandPtr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 LIST MANAGEMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.1 Context Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.2 Appending to Running List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.3 Stopping a Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.4 Hardware Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2 Revision 1.0 3.5 3.6 3.7 ASYNCHRONOUS RECEIVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5.1 Unrecoverable Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.2 Ack Codes for Write Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.3 Posted Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.5.4 Retries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5.5 DMA Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 PHYSICAL REQUESTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.6.1 Filtering Physical Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.6.2 Posted Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6.3 Physical Responses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6.4 Physical Response Retries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6.5 Interrupt Considerations for Physical Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6.6 Bus Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 HOST BUS ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7.1 Causes of Host Bus Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7.2 CS4210 Actions When Host Bus Error Occurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7.2.1 3.7.2.2 3.7.2.3 3.8 3.9 4.0 Descriptor Read Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 xferStatus Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Transmit Data Read Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.7.3 Isochronous Transmit Data Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.4 Asynchronous Receive DMA Data Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.5 Isochronous Receive Data Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.6 Physical Read Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.7 Posted Write Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 BUS RESETS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.8.1 Asynchronous Transmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.8.2 Asynchronous Receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.8.3 Isochronous Transmit and Receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 SERIAL EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.9.1 Serial EEPROM Cyclic Redundancy Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Register Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1 4.2 4.3 4.4 PCI CONFIGURATION SPACE ACCESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 REGISTER SUMMARY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 PCI CONFIGURATION REGISTERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 OHCI CONFIGURATION REGISTERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.4.1 Version Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.2 GUIDROM Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.3 ATRetries Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.4 Autonomous CSR Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.4.5 Configuration ROM Header Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.4.6 Bus Identification Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.4.7 Bus Options Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.4.8 Global Unique ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.4.9 Configuration ROM Mapping Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.4.10 PostedWriteAddress Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4.11 Vendor ID Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4.12 HCControl Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.4.12.1 noByteSwapData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.4.12.2 programPhyEnable and aPhyEnhanceEnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.4.12.3 LPS and linkEnable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Revision 1.0 3 www.national.com Geode™ CS4210 Table of Contents (Continued) Geode™ CS4210 Table of Contents (Continued) 4.4.13 4.4.14 4.4.15 4.4.16 Self-ID Buffer Pointer Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Self-ID Count Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 IRMultiChanMask Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.4.16.1 4.4.16.2 4.4.16.3 4.4.16.4 4.4.16.5 4.4.16.6 4.4.16.7 4.4.17 4.4.18 4.4.19 4.4.20 4.4.21 4.4.22 4.4.23 4.4.24 Fairness Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 LinkControl Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Node ID and Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 PHYControl Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 IsochCycleTimer Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Asynchronous Request Filter Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Physical Request Filter Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Asynchronous Request/Response Transmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.4.24.1 4.4.24.2 4.4.24.3 4.4.24.4 4.4.25 Async Request Transmit Context Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Async Request Transmit Command Pointer Register. . . . . . . . . . . . . . . . . . . . . . . . . 80 Async Response Transmit Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . 81 Async Response Transmit Command Pointer Register . . . . . . . . . . . . . . . . . . . . . . . 81 Asynchronous Request/Response Receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.4.25.1 4.4.25.2 4.4.25.3 4.4.25.4 4.4.26 IntEvent Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Bus Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 IntMask Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 IsochTxIntEvent Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 IsochTxIntMask Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 IsochRxIntEvent Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 IsochRxIntMask Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Async Request Receive Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Async Request Receive Command Pointer Register . . . . . . . . . . . . . . . . . . . . . . . . . 82 Async Response Receive Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . 83 Async Response Receive Command Pointer Register. . . . . . . . . . . . . . . . . . . . . . . . 83 Isochronous Transmit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.4.26.1 Isoch Transmit Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.4.26.2 Isoch Transmit Command Pointer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.4.27 Isochronous Receive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.4.27.1 Isoch Receive Context Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.4.27.2 Isoch Receive Command Pointer Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.4.27.3 Isoch Receive Context Match Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.5 www.national.com NATIONAL (NSC) SPECIFIC CONFIGURATION REGISTERS . . . . . . . . . . . . . . . . . . . . . . . 89 4.5.1 nscControl Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.5.2 nscEventSet/Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.5.3 nscMaskSet/Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.5.4 nscRAMBist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.5.5 nscCmcControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.5.6 nscTxThreshold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.5.7 nscSubSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.5.8 nscPhysReadCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.5.9 nscPhysWriteCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.5.10 nscPhysLockCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.5.11 nscBusmgrID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.5.12 nscBandwAvail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.5.13 nscChanAvailHi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.5.14 nscChanAvailLo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4 Revision 1.0 5.0 Electrical Specifications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.1 5.2 5.3 5.4 5.5 6.0 NAND TREE TEST MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 ABSOLUTE MAXIMUM RATINGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 OPERATING CONDITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 DC CHARACTERISTICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 AC SPECIFICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Physical Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Revision 1.0 5 www.national.com Geode™ CS4210 Table of Contents (Continued) Geode™ CS4210 1.0 Architectural Description The CS4210 device implements an IEEE 1394 serial bus host controller as specified by the OHCI Specification Version 1.0. It is organized as a collection of reusable modules as illustrated in Figure 1-1. • TE: Transfer Engine — Provides generic data movement services to the rest of the DMA engine logic. • The interface to the 1394 bus is organized into three clock domains: PCI, SCLK, and SCLK/2. The PCI clock domain can operate at up to 33 MHz. The PCI clock can also be stopped. The SCLK clock domain operates at 49.152 MHz. The SCLK/2 clock domain operates at 24.576 MHz. 1.1 • ITDMA: Isochronous Transmit DMA — Controls the transmission of all isochronous packets. • RDMA: Receive DMA — Processes all received packets (asynchronous, isochronous and physical) and transmit status. PCI INTERFACE MODULE The PCI interface module provides a full function bus mastering interface to the PCI bus. 1.2 ATDMA: Asynchronous Transmit DMA — Controls the transmission of all asynchronous packets. A single port SRAM is shared by the DMA logic for caching control information and descriptor blocks fetched from the host memory. This RAM is used for capturing entire descriptor blocks in a single PCI bus tenure. DMA ENGINE The DMA engine is decomposed into four functional modules: PCI Interface FM_Bus (Master) FM_Bus (Slave) I2C Bus Arbiter DMA Engine Register Set RDMA ITDMA ATDMA Tx FIFO (SRAM) Tx FIFO (SRAM) AR IR Phys Scratchpad (SRAM) Tx Drain Clock Generator and Power Management TE Rx FIFO (SRAM) Rx Fill Link Layer Physical Layer Interface (49.152 MHz) SCLK LNKON LPS LREQ DATA[0:7] CTRL[0:1] DIRECT Figure 1-1. Functional Block Diagram www.national.com 6 Revision 1.0 1.3 1.2.1 Transfer Engine The transfer engine performs data movement between different sources/sinks: 1) Host memory (TxFIFOs/RxFIFO, Scratchpad SRAM) 2) DMA modules (ATDMA, ITDMA, or RDMA) TRANSMIT DRAIN The transmit drain module accepts packets from the TxFIFOs (asynchronous and isochronous) and interfaces with the link layer module to transmit these packets. It also places transmit completion status in the TxFIFO. 1.4 All byte alignment and byte swapping tasks are also performed by the transfer engine. RECEIVE FILL The receive fill module accepts packets from the link layer and places them into the RxFIFO. It performs packet filtering and routing. It also determines which handshake, if any, to return for each received packet. 1.2.2 Host Memory Organization The 1394 OHCI specification allows for many different data FIFO implementations. This CS4210 implements two transmit FIFOs (asynchronous and isochronous) and a single receive FIFO. The transmit FIFOs share a single embedded dual-port SRAM (36x1024). The receive FIFO uses a single embedded dual-port SRAM (36x1024). A small transmit FIFO is also implemented using latches and some decoding logic. 1.5 LINK LAYER The link layer module implements a 1394 link layer function developed for this host controller application. It includes support for the CRC32 generation/checking, link state machine, transmit/receive data paths and the generation/ reception of cycle start packets. This module includes support for features defined in the P1394a supplement. All FIFOs may be tested using an embedded RAM BIST controller. See Section 4.5.4 "nscRAMBist" on page 94 for more details. 1.6 PHYSICAL LAYER INTERFACE The physical layer interface module implements the external interface to connect to the Geode CS4103 P1394a physical layer device. It includes support for features defined in revision 2.0 of the P1394a specification. 1.2.3 ATDMA The ATDMA module controls the transmission of all asynchronous packets. This includes AT (Asynchronous Transmit) Request context packets, AT Response context packets and all physical DMA transmit request and response packets. The ATDMA module also controls retransmission of packets as required by the OHCI specification. 1.7 REGISTER SET The register set module coordinates slave accesses to the host controller registers. It fields read/write requests from the PCI interface module. It can also read configuration data from a serial EEPROM device via an I2C interface. 1.2.4 ITDMA The ITDMA module controls the transmission of all isochronous packets. Annex E of the OHCI specification describes the operation of the ITDMA module. This annex was contributed by National Semiconductor. 1.8 RELATED DOCUMENTS The following documents may be useful in understanding the terms and concepts used in this publication. 1.2.5 RDMA The RDMA module processes all received packets and transmit status. This includes packets destined for the AR (Asynchronous Receive) Request context, AR Response context, all IR (Isochronous Receive) contexts, the Self-ID buffer, and all physical DMA requests (including CSR accesses). It also examines the transmit status to manage the collection of currently active physical DMA requests. • 1394 Open Host Controller Interface Specification Release 1.0 • IEEE 1394-1995 High Performance Serial Bus, 1995 • ISO/IEC 13213:1994 Control and Status Register Architecture for Microcomputer Buses International Standards Organization, 1994 • IEEE P1394a Standard for a High Performance Serial bus (Supplement) Revision 1.0 7 www.national.com Geode™ CS4210 Architectural Description (Continued) Geode™ CS4210 2.0 Signal Definitions Table 2-1. Pin Type Definitions This section defines the signals and external interface of the CS4210. Figure 2-1 shows the pins organized by their functional groupings (internal test and electrical pins are not shown). 2.1 Mnemonic I PIN ASSIGNMENT The tables in this section use several common abbreviations. Table 2-1 lists the mnemonics and their meanings. Input Pin I/O Bidirectional Pin O Output t/s TRI-STATE Signal VDD Figure 2-2 on page 9 shows the pin assignment for the CS4210 with Tables 2-2 and 2-3, on pages 10 and 11, listing the pin assignments sorted by pin number and alphabetically by signal name. Definition VDDIO VSS 2.5V Core Power Supply 3.3V I/O Power Supply Ground Connection Section 2.2 "Signal Descriptions" starting on page 12 provides a description for each signal within its associated functional group. PCI Bus Interface AD[31:0] C/BE[3:0]# FRAME# IRDY# TRDY# STOP# DEVSEL# IDSEL PERR# SERR# PAR PREQ# PGNT# INTA# RST# PCLK PME# Geode™ CS4210 DATA[0:7] CTRL[0:1] LREQ SCLK LPS LNKON DIRECT PHY-Link Interface EECLK EEDATA I2C Interface CCLKO CCLKI 8 kHz Reference Clock Interface CMC CMCL Contender Master Control Interface Figure 2-1. Signal Groups www.national.com 8 Revision 1.0 Geode™ CS4210 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Geode™ CS4210 Top View 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 VSS AD0 AD1 AD2 AD3 VDD AD4 AD5 AD6 AD7 C/BE0# AD8 VDDIO AD9 AD10 VSS AD11 AD12 AD13 AD14 VDD AD15 C/BE1# PAR SERR# AD25 AD24 C/BE3# IDSEL VSS AD23 AD22 AD21 AD20 VDD AD19 AD18 AD17 VDDIO AD16 C/BE2# VSS FRAME# IRDY# TRDY# VDD DEVSEL# STOP# PERR# VSS 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 VSS CMC CMCL EECLK EEDATA VDDIO TESTO INTA# VDD RST# VSS PCLK VDD PGNT# PREQ# VDDIO PME# AD31 AD30 VDD AD29 AD28 AD27 VSS AD26 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 VSS LPS LNKON LREQ VDD SCLK VSS CTRL0 CTRL1 VDD DATA0 DATA1 DATA2 VDDIO DATA3 DATA4 DATA5 VSS DATA6 DATA7 VDD DIRECT CCLKI CCLKO TESTEN# Signal Definitions (Continued) Figure 2-2. Pin Assignment Diagram Order Number: CS4210VJG Revision 1.0 9 www.national.com Geode™ CS4210 Signal Definitions (Continued) Table 2-2. Pin Assignment - Sorted by Pin Number Pin No. Signal Type Pin No. Signal Type Pin No. Signal Type 1 VSS GND 35 VDD PWR 69 AD4 I/O 2 CMC O 36 AD19 I/O 70 VDD PWR 3 CMCL O 37 AD18 I/O 71 AD3 I/O 4 EECLK O 38 AD17 I/O 72 AD2 I/O 5 EEDATA I 39 VDDIO PWR 73 AD1 I/O 6 VDDIO PWR 40 AD16 I/O 74 AD0 I/O 7 TESTO O 41 C/BE2# I/O 75 VSS GND 8 INTA# O 42 VSS GND 76 TESTEN# I 9 VDD PWR 43 FRAME# I/O 77 CCLKO O 10 RST# O 44 IRDY# I/O 78 CCLKI I 11 VSS GND 45 TRDY# I/O 79 DIRECT I 12 PCLK I 46 VDD PWR 80 VDD 13 VDD PWR 47 DEVSEL# I/O 81 DATA7 I/O 14 PGNT# I 48 STOP# I/O 82 DATA6 I/O 15 PREQ# O 49 PERR# I/O 83 VSS 16 VDDIO PWR 50 VSS GND 84 DATA5 I/O 17 PME# O 51 SERR# I/O 85 DATA4 I/O 18 AD31 I/O 52 PAR I/O 86 DATA3 I/O 19 AD30 I/O 53 C/BE1# I/O 87 VDDIO PWR 20 VDD PWR 54 AD15 I/O 88 DATA2 I/O 21 AD29 I/O 55 VDD PWR 89 DATA1 I/O 22 AD28 I/O 56 AD14 I/O 90 DATA0 I/O 23 AD27 I/O 57 AD13 I/O 91 VDD 24 VSS GND 58 AD12 I/O 92 CTRL1 I/O 25 AD26 I/O 59 AD11 I/O 93 CTRL0 I/O 26 AD25 I/O 60 VSS GND 94 VSS 27 AD24 I/O 61 AD10 I/O 95 SCLK I 28 C/BE3# I/O 62 AD9 I/O 96 VDD PWR 29 IDSEL I 63 VDDIO PWR 97 LREQ O 30 VSS GND 64 AD8 I/O 98 LNKON I 31 AD23 I/O 65 C/BE0# I/O 99 LPS O 32 AD22 I/O 66 AD7 I/O 100 VSS GND 33 AD21 I/O 67 AD6 I/O 34 AD20 I/O 68 AD5 I/O www.national.com 10 PWR GND PWR GND Revision 1.0 Table 2-3. Pin Assignment - Sorted Alphabetically Type Pin No. C/BE2# I/O 41 SCLK 73 C/BE3# I/O 28 I/O 61 CCLKI I AD11 I/O 59 CCLKO AD12 I/O 58 AD13 I/O AD14 Type Pin No. I 95 SERR# I/O 51 78 STOP# I/O 48 O 77 TESTEN# I 76 CMC O 2 TESTO O 7 57 CMCL O 3 TRDY# I/O 45 I/O 56 CTRL0 I/O 93 VDD PWR 9 AD15 I/O 54 CTRL1 I/O 92 VDD PWR 13 AD16 I/O 40 DATA0 I/O 90 VDD PWR 20 AD17 I/O 38 DATA1 I/O 89 VDD PWR 35 AD18 I/O 37 DATA2 I/O 88 VDD PWR 46 AD19 I/O 36 DATA3 I/O 86 VDD PWR 55 AD2 I/O 72 DATA4 I/O 85 VDD PWR 70 AD20 I/O 34 DATA5 I/O 84 VDD PWR 80 AD21 I/O 33 DATA6 I/O 82 VDD PWR 91 AD22 I/O 32 DATA7 I/O 81 VDD PWR 96 AD23 I/O 31 DEVSEL# I/O 47 VDDIO PWR 6 AD24 I/O 27 DIRECT I 79 VDDIO PWR 16 AD25 I/O 26 EECLK O 4 VDDIO PWR 39 AD26 I/O 25 EEDATA I 5 VDDIO PWR 63 AD27 I/O 23 FRAME# I/O 43 VDDIO PWR 87 AD28 I/O 22 IDSEL I 29 VSS GND 1 AD29 I/O 21 INTA# O 8 VSS GND 11 AD3 I/O 71 IRDY# I/O 44 VSS GND 24 AD30 I/O 19 LNKON I 98 VSS GND 30 AD31 I/O 18 LPS O 99 VSS GND 42 AD4 I/O 69 LREQ O 97 VSS GND 50 AD5 I/O 68 PAR I/O 52 VSS GND 60 AD6 I/O 67 PCLK I 12 VSS GND 75 AD7 I/O 66 PERR# I/O 49 VSS GND 83 AD8 I/O 64 PGNT# I 14 VSS GND 94 AD9 I/O 62 PME# O 17 VSS GND 100 C/BE0# I/O 65 PREQ# O 15 C/BE1# I/O 53 RST# O 10 Type Pin No. AD0 I/O 74 AD1 I/O AD10 Signal Revision 1.0 Signal 11 Signal www.national.com Geode™ CS4210 Signal Definitions (Continued) Geode™ CS4210 Signal Definitions (Continued) 2.2 SIGNAL DESCRIPTIONS 2.2.1 PCI Bus Interface Signals Signal Name AD[31:0] Pin No. Type Refer to Table 2-3 I/O Description Multiplexed Address and Data AD[31:0] is a physical address during the first clock of a PCI transaction; it is the data during subsequent clocks. When the CS4210 is a PCI master, AD[31:0] are outputs during the address and write data phases, and are inputs during the read data phase of a transaction. When the CS4210 is a PCI slave, AD[31:0] are inputs during the address and write data phases, and are outputs during the read data phase of a transaction. C/BE[3:0]# FRAME# 65, 53, 41, 28 I/O 43 I/O Bus Command and Byte Enables Multiplexed bus command and byte enables. Cycle Frame Driven by the initiator to indicate the beginning and duration of an access. IRDY# 44 I/O Initiator Ready Indicates that the initiator is ready to complete the current data phase of the transaction. TRDY# 45 I/O Target Ready Indicates that the current data phase of the transaction is ready to be completed. STOP# 48 I/O Stop Indicates that the current target is requesting the initiator to stop the current transaction. DEVSEL# 47 I/O Device Select When actively driven, DEVSEL# indicates the driving device has decoded its address as the target of the current access. IDSEL 29 I Initialization Device Select Used as a chip select during configuration read and write transactions. PERR# 49 I/O Parity Error Used for reporting data parity errors during all PCI transactions except a Special Cycle. SERR# 51 I/O System Error Used for reporting address parity errors, data parity errors on the Special Cycle command, or any other system error where the result will be catastrophic. PAR 52 I/O Parity PAR is even parity across AD[31:0] and C/BE[3:0]. PAR is an input when AD[31:0] are inputs and is an output when AD[31:0] are outputs. PREQ# 15 O PCI Bus Request PCI bus request to PCI bus arbiter. PGNT# 14 I PCI Bus Grant PCI bus grant from PCI bus arbiter. INTA# 8 O Interrupt A 1394 OpenHCI PCI interrupt. www.national.com 12 Revision 1.0 Geode™ CS4210 Signal Definitions (Continued) 2.2.1 PCI Bus Interface Signals (Continued) Signal Name RST# Pin No. Type 10 I Description PCI Reset RST# is driven low to reset the device. PCLK 12 I Clock 0-33 MHz PCI clock. PME# 17 O Power Management Event PCI power management pin as defined in the PCI Bus Power Management Specification Revision 1.1. 2.2.2 PHY-Link Interface Signals Signal Name DATA[0:7] Pin No. I/O Description 81, 82, 84, 85, 86, 88, 89, 90 I/O PHY Data Bidirectional data lines driven by both the Link and PHY layer modules. The width of the data bus depends on the speed of data transfer rate. Packet rate for 100 Mbit/sec transfers use DATA[0:1], 200 Mbit/sec transfers use DATA[0:3], 400 Mbit/sec transfers use DATA[0:7]. Note: CTRL[0:1] 93, 92 I/O DATA0 is considered the MSB (most significant bit) based upon the IEEE 1394-1995 specification. Control bits 1 and 0 Bidirectional handshaking signals driven by both the Link and PHY layer modules. The CS4210 and CS4103 use these signals to arbitrate the control of the PHY-Link interface. The control bits also indicate the type of transfer communicating between the two layers namely idle, status, receive, and transmit. LREQ 97 O Link Request Used by the CS4210 to request access of the 1394 bus and to read/write the internal registers of the CS4103. SCLK 95 I Sync Clock The 49.152 MHz clock input driven by the CS4103’s PLL block synchronized to the 1394 bus clock. This clock is also used to synchronize the LREQ, CTRL[0:1], and DATA[0:7] communication protocol between the CS4210 and CS4103. LPS 99 O Link Power Status Indicates the power status of the CS4210. If LPS is low indicating the CS4210 is not powered, the signals CTRL[0:1], DATA[0:7], and SCLK connected to the CS4210 are disabled. LNKON 98 I Link On Indicates to the CS4210 that the CS4103 has received a Link-On packet addressed to this node. DIRECT 79 I Direct High indicates direct connection. Low indicates isolation barrier. Set high when using the single capacitor bus hold isolation. Revision 1.0 13 www.national.com Geode™ CS4210 Signal Definitions (Continued) 2.2.3 Miscellaneous Interface Signals Signal Name EECLK Pin No. Type 4 O Description Serial EEPROM Clock The I2C bus clock signal. EEDATA 5 I Serial EEPROM Data The I2C data signal. CCLKO 77 O Cycle Clock Output The 8 kHz reference clock output. CCLKI 78 I Cycle Clock Input The 8 kHz reference clock input. CMC 2 O Contender Master Control This output is set via the nscCMCControl.CMC bit (BAR1+Offset 18h[0]). The value placed on the bit is directly reflected on this pin. CMCL 3 O Contender Master Control Link Enabled This output is set via the nscCMCControl.CMCL bit (BAR1+Offset 18h[1]). The value of the bit is reflected on the output when HCControl.linkEnable (BAR0+Offset 50h[17]) is set. Otherwise it is 0. TESTO 7 O Test Out National internal test pin, user must float. TESTEN# 76 I Test Enable National internal test pin, user must tie high. 2.2.4 Power Supplies and Ground Connections Signal Name VDD VDDIO VSS www.national.com Pin No. Type Description 9, 13, 20, 35, 46, 55, 70, 80, 91, 96 PWR 2.5V Core Power Supply Connections (Total of 10) 6, 16, 39, 63, 87 PWR 3.3V I/O Power Supply Connections (Total of 5) 1, 11, 24, 30, 42, 50, 60, 75, 83, 94, 100 GND Ground Connections (Total of 11) 14 Revision 1.0 3.1 Operational Description OVERVIEW The CS4210 is an implementation of the link layer protocol of the 1394 serial bus, with additional features to support the transaction and bus management layers. The CS4210 also includes DMA engines for high-performance data transfer and a PCI host bus interface. IEEE 1394 serial bus (and 1394 OpenHCI) protocols support two types of data transfer: asynchronous and isochronous. nous receive. The CS4210 provides eight isochronous transmit contexts. The isochronous transmit DMA controller can transmit from each context during each cycle. Each context can transmit data for a single isochronous channel. The CS4210 provides eight isochronous receive contexts. The isochronous receive DMA controller can receive data for each context during each cycle. Each context can be configured to receive data from a single isochronous channel. Additionally, one context can be configured to receive data from multiple isochronous channels (see bit 28, multiChanMode, in Table 4-53 on page 87 for programming details). • Asynchronous data transfer puts the emphasis on guaranteed delivery of data, with less emphasis on guaranteed timing. • Isochronous data transfer is the opposite, with the emphasis on the guaranteed timing of the data, and less emphasis on delivery. 3.1.3 Miscellaneous Functions Upon detecting a bus reset, the CS4210 automatically flushes all packets queued for asynchronous transmission. Asynchronous packet reception continues without interruption, and a token appears in the received request packet stream to indicate the occurrence of the bus reset. When the CS4103 provides the new local node ID, the CS4210 loads this value into its Node ID register, see Table 3-1. Asynchronous packet transmit will not resume until directed to by software. Because target node ID values may have changed during the bus reset, software will not generally be able to re-issue old asynchronous requests until software has determined the new target node IDs. Isochronous transmit and receive functions are not halted by a bus reset, instead they restart as soon as the bus initialization process is complete. A number of management functions are also implemented by the CS4210. A global unique ID register, shown in Table 3-2, can only be written once. For full compliance with higher level standards, this register must be written before the boot block is read. To make this implementation simpler, the CS4210 has an interface to an external serial I2C EEPROM such as the Fairchild Semiconductor NM24C02. The CS4210 also supports four registers that implement the compare-swap operation needed for isochronous resource management. 3.1.1 Asynchronous Data Transfer Functions The CS4210 can transmit and receive all of the defined 1394 packet formats. Packets to be transmitted are read out of host memory and received packets are written into host memory, both using DMA. The CS4210 can also be programmed to act as a bus bridge between the host bus and 1394 devices by directly executing 1394 read and write requests as reads and writes to the host bus memory space. 3.1.2 Isochronous Data Transfer Functions The CS4210 is capable of performing the cycle master function as defined by the IEEE 1394 OHCI specification. This means it contains a cycle timer and counter, and can queue the transmission of a special packet called a “cycle start” after every rising edge of the 8 kHz cycle clock. The CS4210 can generate the cycle clock internally or use an external reference connected to the CCLKI input (pin 78). When not the cycle master, the CS4210 keeps its internal cycle timer synchronized with the cycle master node by correcting its own cycle timer with the reload value from the cycle start packet. Conceptually, the CS4210 supports one DMA controller each for isochronous transmit and isochro- Table 3-1. BAR0+Offset E8h: Note ID and Status Register Map RSVD CPS root iDValid 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 RSVD 9 8 7 6 5 busNumber 4 3 2 1 0 nodeNumber Table 3-2. GUID Register Map 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 BAR0+Offset 24h-27h BAR0+Offset 28h-2Bh 9 8 7 6 5 4 3 2 1 0 GUIDHi Register GUIDLo Register node_vendor_ID chip_ID_Hi chip_ID_Lo Revision 1.0 15 www.national.com Geode™ CS4210 3.0 3.2 SOFTWARE INTERFACE OVERVIEW sources which correspond to each DMA context completion, there is also a set of interrupts which correspond to other CS4210 functions/units. For example, one of these interrupts could be sent when a Self-ID packet stream has been received. The processor interrupt line is controlled by the IntEvent and IntMask registers. The IntEvent register indicates which interrupt events have occurred, and the IntMask register is used to enable selected interrupts. Software writes to the IntEventClear register to clear interrupt conditions in IntEvent. In addition, there are registers used by the isochronous transmit and isochronous receive controllers to indicate interrupt conditions for each context. There are three basic means by which software communicates with the CS4210: registers, DMA, and interrupts. 3.2.1 Registers The host architecture (PCI, for example) is responsible for mapping the CS4210’s registers into a portion of the host’s address space. 3.2.2 DMA Operation DMA transfers in the CS4210 are accomplished through one of two methods: DMA memory and physical response DMA. Table 3-3 shows a map of the IntEvent and IntMask Set/ Clear registers. Refer to Section 4.4.16.1 "IntEvent Register" on page 70 and Section 4.4.16.3 "IntMask Register" on page 72 for further information details. 3.2.2.1 DMA Memory DMA memory resident data structures are used to describe lists of data buffers. The CS4210 automatically sequences through this buffer descriptor list. This data structure also contains status information regarding the transfers. Upon completion of each data transfer, the DMA controller conditionally updates the corresponding DMA context command and conditionally interrupts the processor so it can observe the status of the transaction. A set of registers within the CS4210 is used to initialize each DMA context and to perform control actions such as starting the transfer. 3.2.3.1 Asynchronous Transmit Interrupts Each asynchronous DMA context has one interrupt indication bit in the IntEvent register. For requests, it is the reqTxComplete bit and for responses it is the respTxComplete bit. This interrupt indication bit is set to one if a completed OUTPUT_LAST command has the “i” field set to 11b, or if the “i” field is set to 01b and transmission of the packet did not yield an ack_complete or an ack_pending. 3.2.2.2 Physical Response DMA The CS4210 can be programmed to accept 1394 read and write transactions as reads and writes to host memory space. In this mode, the CS4210 acts as a bus bridge from the 1394 bus into host memory. The formats for the data sent and received in all these modes are specified in the 1394 Open Host Controller Interface Specification Release 1.00. 3.2.3.2 Asynchronous Receive Interrupts There are two interrupts for each context (request and response) that software can use to gauge the usage of the receive buffers. If software needs to be informed of the arrival of each packet being sent to the context buffers, it can use the RQPkt or RSPkt interrupts in the IntEvent register. If software needs to be informed of the completion of a buffer, it can set the descriptor i field to 11b, which triggers either the ARRQ or ARRS interrupt in the IntEvent register. 3.2.3 Interrupts When any DMA transfer completes (or aborts), an interrupt may be sent to the host system. In addition to the interrupt Table 3-3. IntEvent and IntMask Register Map 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 8 7 6 5 4 3 2 1 0 lockRespErr postedWriteErr isochRx isochTx RSPkt RQPkt ARRS ARRQ respTxComplete reqTxComplete lockRespErr postedWriteErr isochRx isochTx RSPkt RQPkt ARRS ARRQ respTxComplete reqTxComplete selfIDcomplete busReset RSVD selfIDcomplete busReset RSVD phy cycleSynch cycle64Seconds cycleLost phyRegRcvd cycleTooLong RSVD cycleInconsistent IntMask Set Register IntMask Clear Register unrecoverableError BAR0+Offset 88h BAR0+Offset 8Ch RSVD phy cycleSynch cycle64Seconds cycleLost cycleInconsistent phyRegRcvd cycleTooLong RSVD www.national.com 9 IntEvent Set Register IntEvent Clear Register unrecoverableError BAR0+Offset 80h BAR0+Offset 84h masterIntEnable Geode™ CS4210 Operational Description (Continued) 16 RSVD Revision 1.0 3.2.3.3 Isoch Tx and Rx Context Interrupts Each of the eight implemented isochronous transmit and each of the eight implemented isochronous receive contexts can generate an interrupt. Software can enable interrupts on a per-context basis by setting the corresponding IsochTxnContextIntMask or IsochRxnContextIntMask bit to one. To efficiently handle interrupts which could conceivably be generated from eight different contexts in close proximity to one another, there is a single bit for all IT DMA contexts and another for all IR DMA contexts in the CS4210 IntEvent register. These bits signify that at least one but potentially several IT or IR DMA contexts attempted to generate an interrupt. Software can read the isochTxIntEvent register to find out which isochronous transmit context(s) are involved. Software can read the Iso- chRxIntEvent register to find out which isochronous receive context(s) are involved. Table 3-4 shows a map of the IsochTx/Rx Context Interrupt Event and Mask Set/Clear registers. Refer to Section 4.4.16.4 on page 73 through Section 4.4.16.7 on page 74 for further register information. The number of supported isochronous DMA contexts varies for 1394 OHCI implementations from a minimum of four to a maximum of 32. Software can determine the number of supported IT or IR DMA contexts by writing FFFF_FFFFh to IsochTxIntMask register for IT and IsochRxIntMask register for IR, and then reading it back. Bits returned as 1’s indicate supported contexts, and bits returned as 0’s indicate unsupported/unimplemented contexts. Table 3-4. IsochTx and IsochRx Context Interrupt Related Registers 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 4 3 2 1 0 isochTxInt0 isochTxInt1 isochTxInt2 isochTxInt3 isochTxInt4 isochTxInt5 isochTxInt6 isochTxInt7 isochTxIntMask0 isochTxIntMask1 isochTxIntMask2 isochTxIntMask3 isochTxIntMask4 isochTxIntMask5 isochTxIntMask6 isochTxIntMask7 isochRxInt7 isochRxInt6 isochRxInt5 isochRxInt4 isochRxInt3 isochRxInt2 isochRxInt1 isochRxInt0 isochRxIntMask6 isochRxIntMask5 isochRxIntMask4 isochRxIntMask3 isochRxIntMask2 isochRxIntMask1 isochRxIntMask0 IsochRxIntMaskSet Register IsochRxIntMaskClear Register RSVD Revision 1.0 5 IsochRxIntEvent Set Register IsochRxIntEvent Clear Register RSVD BAR0+Offset A8h BAR0+Offset ACh 6 IsochTxIntMask Set Register IsochTxIntMask Clear Register RSVD BAR0+Offset A0h BAR0+Offset A4h 7 IsochTxIntEvent Set Register IsochTxIntEvent Clear Register RSVD BAR0+Offset 98h BAR0+Offset 9Ch 8 isochRxIntMask7 BAR0+Offset 90h BAR0+Offset 94h 9 17 www.national.com Geode™ CS4210 Operational Description (Continued) When the IntEvent.cycleInconsistent condition occurs, the IT and IR DMA controllers continue processing running contexts normally, except that contexts with the ContextControl.cycleMatchEnable bit set remain inactive and cycleMatch processing is, in effect, disabled. To re-enable cycleMatch processing, software must first stop the IT and/ or IR contexts for which cycleMatch is enabled (by clearing ContextControl.run and waiting for ContextControl.active to clear, then clearing the IntEvent.cycleInconsistent interrupt (read BAR0+Offset 84h[23]). The stopped IR contexts may then be started. The stopped IT contexts may also be started, but software should not schedule any transmits to occur for these contexts for at least two cycles immediately following the clearing of the interrupt condition. Table 3-5 is a register format for the eight Isochronous Transmit Context Control Set/Clear registers. Refer to Section 4.4.26.1 "Isoch Transmit Context Control Register" on page 84 for further register information. Table 3-5. IsochTx[7:0]ContextControl Set/Clear Register Formats 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 IsochTxnContextControl Set Register IsochTxnContextControl Clear Register www.national.com 18 dead RSVD event code active RSVD wake cycleMatch run cycleMatchEnable Geode™ CS4210 Operational Description (Continued) Revision 1.0 3.3 COMMON DMA CONTROLLER FEATURES page 80 through Section 4.4.27 for further register information. The CS4210 provides several types of DMA functionality: • General-purpose DMA handling asynchronous transmit and receive packets and isochronous transmit and receive packets. 3.3.2 ContextControl.event The packet event codes shown in Table 3-7 on page 20 are possible values for the five-bit ContextControl.event field. This field may contain either a 1394 defined ack code or an OpenHCI generated event code. Bits [15:0] of the ContextControl register may be written into host memory to indicate packet and/or DMA descriptor status. However, all possible event codes which may appear in a particular context’s ContextControl register may not necessarily ever be written into host memory for a packet or DMA descriptor status, depending on circumstances and the functionality of the context. The list of ack codes provided in Table 3-7 is informative not normative (i.e., for asynchronous packets the event code may be set to any ack code specified in current and future 1394 standards). OpenHCI generated event codes have an “evt_” prefix and are denoted by a code with the high (fifth) bit equal to 0. In some cases for isochronous I/O OpenHCI may generate a 1394 style ack code for ContextControl.event. • An inbound bus bridge function that allows 1394 devices to directly access system memory called “physical DMA.” • A separate write buffer for the received Self-ID packets. • A mapping between a 1 KB block in system memory and the first 1K of configuration ROM. 3.3.1 Context Registers A context provides the basic information to the CS4210 to allow it to fetch and process descriptors for one of the several DMA controllers. All contexts (except for Self-ID) have a ContextControl register and a CommandPtr register. The format of the ContextControl Registers is DMA controller specific. Table 3-6 is a register format of the Contex.Control and CommandPtr registers. Refer to Section 4.4.24 starting on Table 3-6. ContextControl and CommandPtr Registers Formats 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 dead RSVD active run RSVD wake AsyncReqTxContextControl Set/Clear Registers AsyncRespTxContextControl Set/Clear Registers RSVD event code dead RSVD active run RSVD wake AsyncReqRxContextControl Set/Clear Registers AsyncRespRxContextControl Set/Clear Registers RSVD spd event code dead RSVD event code active RSVD run cycleMatch wake cycleMatchEnable IsochTxnContextControl Set/Clear Registers dead RSVD spd event code active RSVD wake RSVD run multiChanMode CycleMatchEnable bufferFill isochheader IsochRxnContextControl Set/Clear Registers CommandPtr Register descriptorAddress Revision 1.0 19 Z www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) Table 3-7. Packet Event Codes Code Name DMA AT, AR, IT, IR Description 00h evt_no_status 001h Reserved -- Reserved 02h evt_long_packet IR The received data length was greater than the buffer’s data_length. 03h evt_missing_ack AT A subaction gap was detected before an ack arrived or the received ack had a parity error. 04h evt_underrun 05h evt_overrun 06h evt_descriptor_read 07h evt_data_read AT, IT 08h evt_data_write AR, IR, IT 09h evt_bus_reset AR Identifies a CS4103 packet in the receive buffer as being the synthesized bus reset packet. (See Section 3.8 "Bus Resets" on page 30.) 0Ah evt_timeout AT Indicates that the asynchronous transmit response packet expired and was not transmitted. 0Bh 0Ch-0Dh evt_tcode_err Reserved 0Eh evt_unknown 0Fh evt_flushed AT, IT No event status. IR AT, AR, IT, IR AT, IT -- Underrun on the corresponding FIFO. The packet was truncated. A receive FIFO overflowed during the reception of an isochronous packet. An unrecoverable error occurred while the CS4210 was reading a descriptor block. An error occurred while the CS4210 was attempting to read from host memory in the data stage of descriptor processing. An error occurred while the CS4210 was attempting to write to host memory either in the data stage of descriptor processing (AR, IR), or when processing a single 16-bit host memory write (IT). A bad tCode is associated with this packet. The packet was flushed. Reserved AT, AR, IT, IR An error condition has occurred that cannot be represented by any other event codes defined herein. AT Sent by the link side of the output FIFO when asynchronous packets are being flushed due to a bus reset. 10h Reserved 11h ack_complete AT, AR, IT, IR --- For asynchronous request and response packets, this event indicates the destination node has successfully accepted the packet. If the packet was a request subaction, the destination node has successfully completed the transaction and no response subaction follows. The event code for transmitted CS4103, isochronous, asynchronous stream and broadcast packets, none of which yields a 1394 ack code, are set by hardware to ack_complete unless an event occurs. Reserved for definition by future 1394 standards. 12h ack_pending AT, AR The destination node has successfully accepted the packet. If the packet was a request subaction, a response subaction follows at a later time. This code is not returned for a response subaction. 13h Reserved --- Reserved for definition by future 1394 standards. 14h ack_busy_X AT The packet could not be accepted after max ATRetries (see Section 4.4.3 "ATRetries Register" on page 59) attempts, and the last ack received was ack_busy_X. 15h ack_busy_A AT The packet could not be accepted after max ATRetries (see Section 4.4.3 "ATRetries Register" on page 59) attempts, and the last ack received was ack_busy_A. 16h ack_busy_B AT The packet could not be accepted after max AT Retries (see Section 4.4.3 "ATRetries Register" on page 59) attempts, and the last ack received was ack_busy_B. 17h-1Ah Reserved 1Bh ack_tardy AT The destination node could not accept the packet because the link and higher layers are in a suspended state. 1Ch Reserved --- Reserved for definition by future 1394 standards. 1Dh ack_data_error AT, IR The destination node could not accept the block packet because the data field failed the CRC check, or because the length of the data block payload did not match the length contained in the data_length field. This code is not returned for any packet that does not have a data block payload. 1Eh ack_type_error AT, AR A field in the request packet header was set to an unsupported or incorrect value, or an invalid transaction was attempted (e.g., a write to a read-only address). 1Fh Reserved www.national.com Reserved for definition by future 1394 standards. --- Reserved for definition by future 1394 standards. 20 Revision 1.0 3.3.2.1 ContextControl.run The ContextControl.run bit is set by software when the CS4210 is to begin processing descriptors for the context. Before software sets ContextControl.run, ContextControl.active must not be set, and the CommandPtr register for the context must contain a valid descriptor block address and a Z value that is appropriate for the descriptor block address. Software may stop the CS4210 from further processing of a context by clearing ContextControl.run. When a ContextControl.run is cleared, the CS4210 will stop processing of the context in a manner that will not impact the operation of any other context or DMA controller. The CS4210 may require a significant amount of time to safely stop processing for a context but when the CS4210 does stop, it clears ContextControl.active. If software clears a ContextControl.run for an isochronous context while the CS4210 is processing a packet for the context, the CS4210 continues to receive or transmit the packet and update descriptor status. The CS4210 does, however, stop at the conclusion of that packet. If ContextControl.run is cleared for a non-isochronous context, the CS4210 may stop processing at any convenient point as long as the context and descriptors end up in a consistent state (e.g., status updated if a packet was sent and acknowledged). Clearing ContextControl.run may have other side effects that are DMA controller dependent. These effects are described in the subsections of Section 4.4 "OHCI Configuration Registers" starting on page 48 that cover each of the DMA controllers. When software clears ContextControl.run and the CS4210 has stopped, the CS4210 is not necessarily in a state that can be restarted simply by setting ContextControl.run. Software should always ensure that CommandPtr.descriptorAddress and CommandPtr.Z are set to valid values before setting ContextControl.run. For asynchronous contexts, the CS4210 returns the appropriate ack_busy* code. In addition, the CS4210 “backs out” the packet by not updating the buffer’s byte count (resCount), and flushes the packet from the FIFO. The CS4210 does not go inactive, as there is still buffer space available and software is attempting to provide more buffer space. For both transmit and receive contexts, if the Z value is now non-zero, the CS4210 continues processing. In order to ensure that a wake condition is not missed, the CS4210 clears ContextControl.wake before it reads or rereads a descriptor. ContextControl.wake is ignored when ContextControl.run is zero. 3.3.2.3 ContextControl.active ContextControl.active is set and cleared only by the CS4210. It is set when the CS4210 receives an indication from software that a valid descriptor is available for processing. This indication occurs as a result of software setting the ContextControl.run or by software setting ContextControl.wake while ContextControl.run is set. There are four cases in which the CS4210 clears ContextControl.active: When a branch is indicated by a descriptor but the Z value of the branch address is 0. 2) When software clears ContextControl.run and the CS4210 has reached a safe stopping point. 3) While ContextControl.dead is set. 4) After a hardware or software reset of the CS4210. Additionally, for the asynchronous transmit contexts (request and response), the CS4210 clears ContextControl.active when a bus reset occurs. When ContextControl.active is cleared and ContextControl.run is already clear, the CS4210 sets the IntEvent bit for the context. This interrupt is the same interrupt that would have been generated by the context if a completed descriptor had indicated that an interrupt should be generated. 3.3.2.2 ContextControl.wake When software adds to a list of descriptors for a context, the CS4210 may have already read the descriptor that was at the end of the list before it was updated. The value that the CS4210 read may contain a Z value of zero indicating the end of the descriptor list. The ContextControl.wake bit provides a simple semaphore to the hardware to indicate that the list may have changed since the last time the CS4210 read a descriptor. Therefore, if the CS4210 had fetched a descriptor and the indicated branch address had a Z value of zero, then the CS4210 rereads the pointer value. 3.3.2.4 ContextControl.dead ContextControl.dead is used to indicate a fatal error in processing a descriptor. When ContextControl.dead is set by the CS4210, ContextControl.active is immediately cleared but ContextControl.run remains set. In addition, setting ContextControl.dead causes an unrecoverableError interrupt event and blocks a normal context event interrupt from being set. ContextControl.dead is immediately cleared when software clears ContextControl.run or by either a hardware or software reset of the CS4210. Software can determine the cause of a context going dead by checking the ContextControl.event code. The defined reasons for the CS4210 to set ContextControl.dead are described in Section 3.7 "Host Bus Errors" on page 28. For transmit contexts and receive contexts in buffer-fill mode (a mode in which a context can receive multiple packets into one data buffer), if the Z value is still zero, then the end of the list was reached and the CS4210 clears ContextControl.active. For receive contexts in buffer-fill mode, if the Z value is still zero on the reread, then the packet cannot be accepted. Revision 1.0 1) 21 www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) 3.3.2.5 CommandPtr Software initializes CommandPtr.descriptorAddress to contain the address of the first descriptor block that the CS4210 accesses when software enables the context by setting ContextControl.run. Software also initializes CommandPtr.Z to indicate the number of descriptors in the first descriptor block. Software only writes to this register when both ContextControl.run and ContextControl.active are zero. The CS4210’s behavior when this rule is violated is undefined. Since the CS4210 utilizes the CommandPtr register while processing a context, there is a set of guidelines by which software may safely and deterministically read CommandPtr. These guidelines are based on the ContextControl bits as listed in Table 3-8 (X = don’t care). clear. In this instance, CommandPtr.descriptorAddress contains the address of a descriptor within the last descriptor block that was executed. If ContextControl.run and ContextControl.dead are both set, then descriptorAddress points to a descriptor within the descriptor block in which an unrecoverable error occurred. Except for the case where software initializes CommandPtr, the value of CommandPtr.Z is undefined and Z may contain a value that is implementation dependent. The value of CommandPtr is undefined after a hardware or software reset of the CS4210. When software sets ContextControl.run to 1 and CommandPtr.Z contains an invalid value for the controller and context, or if a Z value is invalid for a fetched descriptor block in a running context, the CS4210: sets ContextControl.dead to 1 and sets ContextControl.event to evt_unknown and will not process any descriptors in that context. If ContextControl.run is set and ContextControl.dead is not set, then the contents of CommandPtr are only specified if both ContextControl.active and ContextControl.wake are Table 3-8. CommandPtr Read Values ContextControl Bits CommandPtr.descriptor Address Value run dead active wake 0 0 0 X A descriptor block address. Either last written or last executed. 0 0 1 X Contents unspecified. 1 0 0 0 Refers to the descriptor block that contains the Z = 0 that caused the CS4210 to set active to 0. 1 0 0 1 Contents unspecified. 1 0 1 0 Contents unspecified. 1 0 1 1 Contents unspecified. 1 1 0 X Points to the descriptor block in which a fatal error occurred. www.national.com 22 Revision 1.0 3.4 LIST MANAGEMENT 3.5 All contexts use an identical method for controlling the processing of descriptors associated with the context. This presents a uniform interface to controlling software and allows reuse of hardware on the CS4210. Physical Requests - Physical requests, including physical read, physical write, and lock requests to some CSR registers (see Section 4.4.4 "Autonomous CSR Resources" on page 60) are handled directly by the CS4210 and are not made visible to system software. The CS4210 uses a dedicated physical response unit to handle these requests. This unit will not block processing of other transaction types while dealing with physical requests. Section 3.6 "Physical Requests" on page 26 provides details on which requests can be processed as physical. 3.4.1 Context Initialization Software initializes the context by first checking to see that ContextControl.run, ContextControl.active, and ContextControl.dead are all 0. Then, CommandPtr.descriptorAddress is written to point to a valid descriptor block and CommandPtr.Z is set to a value that is consistent with the descriptor block. Then ContextControl.run can be set. 3.4.2 Appending to Running List Software may append to a list of descriptors at any time. Software may append either a single descriptor or a linked list of descriptors. When the to-be-appended list is properly formatted, software updates the branch address and Z value of the descriptor that was at the end of the list being processed by the CS4210. When software completes the linking process it must set ContextControl.wake for the context. This ensures that the CS4210 resumes operation if it had previously reached the end of the list and gone inactive. Self-ID Packets - CS4103 packets with the Self-ID format can be received at any time. However, only those packets that are received during the Self-ID phase of bus initialization which immediately follows a bus reset are considered to be Self-ID packets. Others are considered simply to be PHY packets which are handled like asynchronous requests. The CS4210 can be programmed to accept or ignore Self-ID packets. When Self-ID packets are accepted, they are stored in a special memory buffer which has a dedicated controller and context. Because of this special memory buffer, Self-ID packets can never get ‘stuck’ in a FIFO. 3.4.3 Stopping a Context Software can stop a running context by clearing ContextControl.run. The context might not stop immediately. To ensure that the context has stopped, software must wait for ContextControl.active to be cleared by the CS4210. This indicates that the CS4210 has completed all processing associated with the context. Asynchronous Responses - When the host system initiates a request through the asynchronous transmit request context, the response is handled by the asynchronous receive response context. The fact that host system software initiates the process and the fact that the CS4210 has a separate context for responses, allows system software to budget for all responses which ensures that the CS4210 always has a place in system memory to store a response when it arrives. In the unlikely event that the CS4210 does not have a place for the response it is allowed to drop the response when it arrives. This causes a split-transaction time-out which is an error condition with which the software is already able to deal. 3.4.4 Hardware Behavior The CS4210 has several DMA controllers each of which has one or more contexts. Each DMA controller is expected to examine each of its contexts on a periodic basis and make operational decisions based on the context state as contained in ContextControl. The DMA controller examines the state of the active, run, wake, and dead bits to govern descriptor processing. This process is executed once each time a context is ‘scheduled’. Scheduling of a context is dependent on the DMA controller. For example, an isochronous transmit context is scheduled once per cycle while an asynchronous request transmit context is only scheduled once per fairness interval. Revision 1.0 ASYNCHRONOUS RECEIVE The CS4210 accepts 1394 transactions and groups them as follows: Asynchronous Requests - A request may arrive at the CS4210 at any time. Additionally, a request can be of any size up to the limits imposed by the max_rec field in the Bus_Info_Block (see Section 4.4.7 "Bus Options Register" on page 62). Due to the unpredictable nature of this transaction type, it is impractical for the system software to ensure that there is always sufficient buffer space defined in the asynchronous request receive buffers. If the FIFO which is receiving requests becomes full, all subsequent requests are busied until there is room to receive them. 23 www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) 3.5.1 Unrecoverable Error If an unrecoverable error occurs when the CS4210 is writing to the AR DMA request buffer, a fail indication is sent to the link side of the FIFO. This indicates that the link side should set its count to zero which will busy further read requests and write requests that are destined for the AR DMA request buffer. If the AR DMA request context has an unrecoverable error, the system side of the FIFO continues to unload the FIFO even though the AR DMA request context is dead. All asynchronous requests that would have been sent to the AR DMA request queue are dropped and no responses for them are sent to the initiating node. Dropping requests destined for the AR DMA request queue is acceptable because: 1) AR DMA read requests are always split transactions (ack_pended), 2) write requests within the physical range have been ack_pended and 3) write requests above the physical range which have been posted (ack_completed) are by definition permitted to fail. successfully written to the addressed location in physical memory. If posting of physical writes is enabled, then the CS4210 is allowed to return ack_complete to a physical write request with certain restrictions. This CS4210 supports four posted writes. However, for error reporting purposes a posted write is considered pending until the write is actually completed to the offset address. For each pending posted write, there is an error reporting register to hold the request’s source node ID and 48-bit offset address should that posted write fail. If the maximum allowed posted writes are pending, the CS4210 must return either ack_pending or ack_busy* for subsequent posted write request candidates and only return resp_complete when those writes have actually been performed. Read and write requests within the Asynchronous Request FIFO do not pass any posted writes, whether posted in the Physical or Asynchronous Request FIFOs. Within the Physical Request FIFO, read requests may coherently pass posted writes, but write requests and posted writes do not pass other writes posted in the Physical Request FIFO. Physical read and write requests may pass writes posted to the Asynchronous Request FIFO. In conjunction with the ordering rules, the following protocol restrictions are adhered to so that proper ordering and therefore data integrity is maintained. The term “visible side-effect” is used to mean an indirect action caused by a request or response which results in the alteration of the contents or usage of host memory outside the address scope of the request or response. 3.5.2 Ack Codes for Write Requests For write requests that are handled by the physical request controller, the CS4210 may send an ack_complete before the data is actually written to system memory. For a full description of which requests are candidates for physical requests, refer to Section 3.6 "Physical Requests" on page 26. The ack_code sent for write requests to offsets in the range of 0000_FFFF_FFFFh to FFFE_FFFF_FFFFh when not busied is always ack_complete. The ack_code sent for requests to offsets in the range FFFF_0000_0000h to FFFF_FFFF_FFFFh and for block requests with a non-zero extended tcode is always ack_pending. 3.5.3 Posted Writes As described above, a write request that is handled by the physical request controller or which is in the address range 0000_FFFF_FFFFh to FFFE_FFFF_FFFFh to be handled by the asynchronous request unit, may generate an ack_complete before the data is actually written to the designated system memory location. These writes are referred to as posted writes. Write requests to the physical memory range of the host may be posted if software has enabled posted writes (see Section 4.4.10 "PostedWriteAddress Register" on page 64). If posting is not enabled, the CS4210 will not return a complete indication (ack_complete or resp_complete) until the data has been www.national.com 24 1) Write requests within the range 0000_FFFF_FFFFh to FFFE_FFFF_FFFFh do not have 1394 visible side effects. 2) Read or write requests within the range 0h to 0_FFFF_FFFEh, whether handled by the Physical Request controller or not, do not have 1394 visible side-effects. 3) Read requests to CSR addresses which are processed autonomously by the CS4210 (Section 4.4.4 "Autonomous CSR Resources" on page 60) do not have 1394 visible side-effects. 4) If an error occurs in writing the posted data packet, the CS4210 sets an interrupt event to notify software and provides information about the failed write in an error reporting register. For more information about error handling of posted writes, refer to Section 3.7.7 "Posted Write Error" on page 29. Revision 1.0 3.5.4 Retries For asynchronous receive, the CS4210 supports dualphase retry for packets that must be busied. For asynchronous transmit, CS4210 supports the single-phase retry protocol. The retry mechanism is managed by hardware and invisible to software. 3.5.5 DMA Summary Table 3-9 is a summary of DMA information for reference purposes. Table 3-9. DMA Summary DMA Contexts Per Context Registers Asynchronous Transmit 1 Request ContextControl CommandPtr reqTxComplete 1 Response ContextControl CommandPtr respTxComplete 1 Request ContextControl CommandPtr ARRQ RQPkt 1 Response ContextControl CommandPtr ARRS RSPkt Isochronous Transmit 8 ContextControl CommandPtr IsochTx IsochTxIntEventn IsochTxIntMaskn Isochronous Receive 8 ContextControl CommandPtr ContextMatch IsochRx IsochRxIntEventn IsochRxIntMaskn Self-ID 1 SelfIDBuffer SelfIDCount SelfIDComplete Buffer-fill Asynchronous Receive Revision 1.0 Per Context Interrupts Receive Mode DMA Commands OUTPUT_MORE OUTPUT_MORE-Immediate OUTPUT_LAST OUTPUT_LAST-Immediate Z tcodes 2-8 0, 1, 4, 5, 9, A, E 2, 6, 7, B Buffer-fill INPUT_MORE 1 0, 1, 4, 5, 9, E* 2, 6, 7, B 25 OUTPUT_MORE OUTPUT_MORE-Immediate OUTPUT_LAST OUTPUT_LAST-Immediate STORE_VALUE 1-8 A Packet-perbuffer INPUT_MORE INPUT_LAST 1-8 A Buffer-fill INPUT_MORE 1 N/A www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) 3.6 PHYSICAL REQUESTS When a block or quadlet read or write request is received, the CS4210 handles the operation automatically without involving software if the offset address in the request packet header meets a specific set of criteria listed below. Requests that do not meet these criteria are directed to the AR DMA Request context unless otherwise specified. CS4210 registers which are written via physical access to the CS4210 yield unspecified results. The CS4210 checks to see if the offset address in the request packet header is one of the following. If the offset address is one of the following addresses, the Physical Request controller directly handles quadlet reads. Other requests shall be sent an ack_type_error. If the offset falls within the physical range, then the offset address is used as the memory address for the block or quadlet transaction. Physical range is defined by offsets inclusively between a lower bound of 0h and an upper bound of 0000_FFFF_FFFFh. If the high order 16-bits of the offset address is 0000h, then the lower 32 bits of the offset address are used as the memory address for the block or quadlet transaction. Lock transactions and block transactions with a non-zero extended tcode are not supported in this address space, instead they are diverted to the AR DMA Request context. For read requests, the information needed to formulate the response packet is passed to the Physical Response Unit. Requests are only accepted if the source node ID of the request has a corresponding bit in the Asynchronous Request Filter registers and Physical Request Filter registers (see Section 4.4.23 "Physical Request Filter Registers" on page 79). BUS_MANAGER_ID (FFFFF000021Ch): Local register is nscBusmgrID (BAR1+Offset 60h). 2) BANDWIDTH_AVAILABLE (FFFFF0000220h): Local register is nscBandwAvai (BAR1+Offset 64h). 3) CHANNELS_AVAILABLE_HI (FFFFF0000224h): Local register is nscChanAvailHi (BAR1+Offset 68h). 4) CHANNELS_AVAILABLE_LO (FFFFF0000228h): Local register is nscChanAvailLo (BAR1+Offset 6Ch). www.national.com Config ROM header (1st quadlet of the Config ROM) (FFFFF0000400h): Local register is ConfigROMheader (see Section 4.4.5 "Configuration ROM Header Register" on page 61). 2) Bus ID (1st quadlet of the Bus_Info_Block) (FFFFF0000404h): Local register is BusID (see Section 4.4.6 "Bus Identification Register" on page 61). 3) Bus options (2nd quadlet of the Bus_Info_Block) (FFFFF0000408h): Local register is BusOptions (see Section 4.4.7 "Bus Options Register" on page 62). 4) Global unique ID (3rd and 4th quadlets of the Bus_Info_Block) (FFFFF000040Ch and FFFFF0000410h): Local registers are GlobalIDHi and GlobalIDLo (see Section 4.4.8 "Global Unique ID Register" on page 63). 5) Configuration ROM (FFFFF0000414h to FFFFF00007FFh). Mapped by the ConfigROMmapping register to a 1 KB block of system memory (see Section 4.4.9 "Configuration ROM Mapping Register" on page 63) For information about ack codes for write requests, see Section 3.5.2 "Ack Codes for Write Requests" on page 24. 3.6.1 Filtering Physical Requests Software can control which nodes it receives packets from by utilizing the asynchronous filter registers. There are two registers, one for filtering out all requests from a specified set of nodes (AsynchronousRequestFilter register) and one for filtering out physical requests from a specified set of nodes (PhysicalRequestFilter register). The settings in both registers have a direct impact on how the AR DMA Request context is used (e.g., disabling only physical receives from a node causes all request packets from that node to be routed to the AR DMA Request context). The usage and interrelationship between these registers is described in Section 4.4.22 "Asynchronous Request Filter Registers" on page 78.” If the offset address selects one of the following addresses, the physical request unit directly handles quadlet compareswaps and quadlet reads. Other requests are sent an ack_type_error (see Table 3-7 on page 20.) 1) 1) 26 Revision 1.0 3.6.2 Posted Writes For write requests handled by the Physical Request controller, the CS4210 may send an ack_complete before the data is actually written to system memory. These writes are referred to as posted writes since posted writes impact the Physical Request controller and the Asynchronous Receive Request DMA context. Further information about posted writes is located in Section 3.5.3 "Posted Writes" on page 24. Information on host bus error handling of posted writes is provided in Section 3.7.7 "Posted Write Error" on page 29.” 3.6.5 Interrupt Considerations for Physical Requests Physical read request handling does not cause an interrupt to be generated under any circumstances. Physical write requests generate an interrupt when posted write processing yields an error. Lock requests to the serial bus registers generate an interrupt when the CS4210 is unable to deliver a lock response packet. 3.6.6 Bus Reset On a bus reset, all pending physical requests (those for which ack_pending was sent) are discarded. Following a bus reset, only physical requests to the autonomous CSR resources (see Section 4.4.4 "Autonomous CSR Resources" on page 60) can be handled immediately. Other physical requests are processed after software initializes the filter registers (see Section 4.4.22 "Asynchronous Request Filter Registers" on page 78 and Section 4.4.23 "Physical Request Filter Registers" on page 79). 3.6.3 Physical Responses The response packet generated for a physical read, nonposted write, and lock request contains the transaction label as it appeared in the request, the destination_ID as provided in the request’s source_ID, and are transmitted at the speed at which the request was received. The source bus ID in the response packet is equal to the destination bus ID from the original request. Note that this is not necessarily the same as the contents of the busNumber field in the Node ID register (BAR0+Offset E8h[15:6]). Unlike AR Response packets, physical responses do not track a SPLIT_TIMEOUT expiration time. 3.6.4 Physical Response Retries There is a separate nibble-wide MaxPhysRespRetries field in the ATRetries Register (BAR0+Offset 08h[15:11]) that tells the Physical Response Unit how many times to attempt to retry the transmit operation for the response packet when an ack_busy* or ack_data_error is received from the target node. If the retry count expires, the packet is dropped and software is not notified. Refer to Section 4.4.3 "ATRetries Register" on page 59 for register details. Revision 1.0 27 www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) 3.7 HOST BUS ERRORS 3.7.2.2 xferStatus Write Error For any type of context, when the CS4210 encounters an error writing the status to a descriptor, it sets ContextControl.dead. The values that would have been written to xferStatus of a descriptor are retained in ContextControl for inspection by system software. The unrecoverable error IntEvent is generated and the context’s IntEvent is not set regardless of the setting of the interrupt (i) field in the descriptor. Additionally, CommandPtr is set to point to a descriptor within the descriptor block in which the error occurred. The CS4210 has three primary goals when dealing with host bus error conditions: 1) Continue transmission and/or reception on all contexts not involved in the error. 2) Provide information to software which is sufficient to allow recovery from the error when possible. 3) Provide a means of error recovery on a context other than a general chip reset. 3.7.1 Causes of Host Bus Errors Host bus errors can generally be classified as one of the following: 3.7.2.3 Transmit Data Read Error For asynchronous request transmit, asynchronous response transmit, and isochronous transmit, the CS4210 handles system data read errors in a similar manner. The CS4210 does not stop processing for the context. Instead, the event code in the status of the OUTPUT_LAST* descriptor is set to indicate that there was an error and the nature of the error. The indicated errors are evt_data_read or evt_underrun. If the error occurs before a packet’s header is placed in the output FIFO, the CS4210 can immediately abort the packet transfer, optionally set the descriptor status to evt_data_read or evt_underrun, and move on to the next descriptor block. If the error occurs after the header has been placed in the output FIFO, the CS4210 stops placing data in the output FIFO. This causes the CS4210 to send a packet with a length that does not agree with the data_length field of the header. If the CS4210 receives an ack_data_error from the addressed node, then the CS4210 substitutes evt_data_read or evt_underrun as appropriate. If the device returns anything other than ack_data_error, then the CS4210 stores that value in the status for the packet. This means that if the addressed node returns an ack_pending on a block write, the error indication is lost. • Addressing error (e.g., non-existent memory location) • Operation error (e.g., attempt to write to read-only memory) • Data transfer error (e.g., parity or unrecoverable ECC) • Time-out error (e.g., reply on split transaction bus was not received in time) Each of these errors can occur at three identifiable stages in the processing of a descriptor: • Descriptor fetch • Data transfer (read or write) • Optional descriptor status update. In general, the nature of the bus error is not as significant as the stage of descriptor processing in which it occurs. For example, the difference between an addressing error and a data parity error is not significant to the error processing. 3.7.2 CS4210 Actions When Host Bus Error Occurs When a host bus error occurs, the CS4210 performs a defined set of actions for all context types. Additionally, there is a set of actions that is performed depending on the context type. The following subsections outline these actions. If the packet was a broadcast write, an isochronous packet, or an asynchronous stream packet, no ack code is received from any node. In this case, the CS4210 assumes that ack_data_error was received and proceeds as outlined above. 3.7.2.1 Descriptor Read Error When an error occurs during the reading of a descriptor or descriptor block, the behavior of the CS4210 is the same regardless of the context type. The CS4210 sets ContextControl.dead and sets ContextControl.event to evt_descriptor_read to indicate that the descriptor fetch failed. The unrecoverable error IntEvent is generated and the context’s IntEvent is not set. Additionally, CommandPtr is set to point to a descriptor within the descriptor block in which the error occurred. Since the descriptor could not be read, its xferStatus and resCount are not written with current values, and software must refer to ContextControl.event for the status. www.national.com Note: 28 Underruns which occur due to host bus latency are not construed to be host bus data errors, and as a result such asynchronous request and response packets are retried as described in Section 4.4.3 "ATRetries Register" on page 59. Revision 1.0 3.7.3 Isochronous Transmit Data Write Error A data write error can occur when the CS4210 attempts to write to the address indicated in a STORE_VALUE descriptor. This error is handled like a data read error with the exception that the event code is set to evt_data_write. The CS4210 does not begin placing the packet associated with a STORE_VALUE into the output FIFO until the STORE_VALUE operation is complete. This is to prevent the possibility of having multiple errors that cannot be properly reported to system software. 3.7.6 Physical Read Error When an external node does a physical access and the CS4210’s read of system memory fails, the CS4210 returns an error indication to the requester by forming a response containing a response code of resp_data_error. If the device replies with ack_busy or ack_data_error the host retries the packet. If the error was caused by a FIFO underrun, the CS4210 retries with the same response. If the error was a host bus error, the response packet is changed to resp_data_error. 3.7.4 Asynchronous Receive DMA Data Write Error When a host bus error occurs while the CS4210 is attempting to write to either the request or response buffer, the CS4210 sets the corresponding ContextControl.dead and set ContextControl.event to evt_data_write. The unrecoverable error IntEvent is generated and the context’s IntEvent is not set regardless of the setting of the interrupt (i) field in the descriptor. CommandPtr.descriptorAddress points to the descriptor that contained the buffer descriptor for the memory address at which the error occurred. Any data in the input FIFO for the context is discarded. 3.7.7 Posted Write Error Whether to be handled by the Physical Request controller or by the Asynchronous Receive Request context, write requests to certain address ranges (see Section 3.6 "Physical Requests" on page 26) may be acked with ack_complete before the data is actually written to system memory. Since the sending node has been notified that the action is complete, when the CS4210 cannot complete a posted write operation due to a host bus error the system must be notified so that software can recover. If an error occurs in writing the posted data packet, then the CS4210 sets the IntEvent.PostedWriteErr bit (BAR0+Offset 80h[8]) to indicate that an error has occurred and the write remains pending. Software can then read the source node ID and offset address from the PostedWriteAddress register and then clear IntEvent.PostedWriteErr. When software clears IntEvent.PostedWriteErr, that write is no longer pending. 3.7.5 Isochronous Receive Data Write Error If a data write error occurs for a context that is in packetper-buffer mode, the CS4210 sets ContextControl.event to evt_data_write or evt_overrun and conditionally updates xferStatus of the descriptor in which the error occurred. Any remaining data in the input FIFO for the packet is discarded. The resCount value in a descriptor that has an error will not necessarily reflect the correct number of data bytes successfully written to memory. If a FIFO overrun occurs for a context that is in buffer-fill mode, the packet is treated as if a data length error had occurred and is ‘backed out’ of the receive buffer (xferStatus and resCount not updated) and the remainder of the packet is discarded from the input FIFO. If a host bus error occurs for a context in buffer-fill mode, the CS4210 sets ContextControl.dead and sets ContextControl.event to evt_data_write. The unrecoverable error IntEvent is generated and the context’s IntEvent is not set regardless of the setting of the interrupt (i) field in the descriptor. CommandPtr.descriptorAddress points to the descriptor that contained the buffer descriptor for the memory address at which the error occurred. Any data in the input FIFO for the context is discarded. Although the CS4210 allows four pending writes, error reporting is through a single pair of software visible registers. If multiple posted write failures have occurred, software accesses them one at a time through the PostedWriteAddress register. When software clears IntEvent.PostedWriteErr, this is a signal to the CS4210 that software has completed reading of the current contents of PostedWriteAddress and that the CS4210 can report another error by again setting IntEvent.PostedWriteErr and presenting a new set of values when software reads PostedWriteAddress. Table 3-10 provides a map of the PostedWriteAddress register. Refer to Section 4.4.10 "PostedWriteAddress Register" on page 64 for further register information. If the CS4210 has four pending physical writes, additional physical writes may not be posted. Instead the CS4210 returns ack_pending and only returns a complete indication when the write is actually done. Table 3-10. BAR0+Offset 38h: PostedWriteAddress Register Map 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 sourceID 9 8 7 6 5 4 3 2 1 0 offsetHi offsetLo Revision 1.0 29 www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) 3.8 BUS RESETS When a 1394 bus reset occurs, certain actions must be taken by software for proper operation of the DMA contexts. These actions and the behavior of the CS4210 are described in the following subsections. 3.8.2 Asynchronous Receive To assist software in determining which asynchronous request packets arrived before and after a bus reset, this is necessary since node numbers may have changed, the CS4210 inserts a synthesized CS4103 packet into the AR DMA Request Context buffer (if active) as soon as a bus reset condition is detected. The format of the packet can be found in the 1394 OHCI specification. 3.8.1 Asynchronous Transmit Upon detection of a bus reset, the CS4210 ceases transmission of asynchronous transmit packets. When this occurs there are two possibilities for AT packets that are left in the FIFO. Software can distinguish the bus-reset packet from authentic CS4103 packets by the value of eventCode which is set to evt_bus_reset. Software can further interpret and coordinate received asynchronous packets across multiple bus resets by using the selfIDGeneration number provided in the bus-reset packet. Since the bus-reset packet is fabricated when a bus reset is initially detected, the selfIDGeneration number is for the new (not previous) generation and is the same as the selfIDGeneration number in the SelfIDCount register as well as in the selfID buffer. If more than one bus reset has occurred without any intervening packets, then only the “last” one is required to result in a synthesized bus-reset packet. If the input FIFO is full when a bus reset occurs, the link side of the FIFO inserts the bus-reset packet when space becomes available. If the AR DMA request context does not have enough buffer space for the bus-reset packet, the packet is synthesized once buffer space becomes available. The bus reset interrupt (IntEvent.busReset) is independent on the time when this packet goes from the FIFO into a host buffer. This interrupt shall occur as soon as possible after a bus reset has been detected. The bus-reset packet is no different from any other packet going into the AR Request buffer in that IntEvent.RQPkt is generated like it is for other packets. • Case 1 is when a bus reset occurs after the packet was transmitted but before an ack was received. For this category, the link side of the CS4210 returns evt_missing_ack. • Case 2 is when a bus reset occurs after the packet is placed in the FIFO but before it is transmitted. For this category, the link side of the CS4210 returns evt_flushed. When each context becomes stable (all data transfers have been halted and status writes have been completed), the CS4210 clears the corresponding ContextControl.active bit. When a bus reset occurs, the link side flushes the asynchronous transmit FIFO(s) until the IntEvent.busReset condition is cleared. Software must make sure that IntEvent.busReset is not cleared until: 1) software has cleared the ContextControl.run bits for both Asynchronous Transmit contexts, and 2) both Asynchronous Transmit contexts have acquiesced and both ContextControl.active fields are zero. This is to ensure that all queued asynchronous packets (with potentially stale node numbers) are flushed. 3.8.3 Isochronous Transmit and Receive Bus reset does not affect isochronous contexts. Once the contexts are no longer active, software may clear the busReset interrupt condition, and hardware stops flushing the asynchronous transmit FIFO(s). Before setting ContextControl.run for either context following a bus reset, software must ensure that NodeID.iDValid is set and that NodeID.nodeNumber (Section 4.4.19 "Node ID and Status Register" on page 76) does not equal 63. www.national.com 30 Revision 1.0 3.9 SERIAL EEPROM Table 3-11. Serial EEPROM Map A serial EEPROM may be used to configure the CS4210. If a serial EEPROM device is connected, the CS4210 detects the pull-up resistor on the EEDATA pin (pin 5) and considers the EEPROM present. Immediately after RST# is deasserted, the serial EEPROM is scanned via EEDATA and EECLK (pin 4). The CS4210 reads configuration information from the first 34 bytes of the EEPROM. Offset If the presence of the serial EEPROM was not detected, the CS4210 will not attempt to load configuration data via the EEDATA/EECLK pins. It will instead allow software to write to the guidHi and guidLo bit fields of the GUID register once after each hardware reset (RST#). 3.9.1 Serial EEPROM Cyclic Redundancy Check The serial EEPROM uses a Cyclical Redundancy Check (CRC) to insure the data in the EEPROM is valid. If the CRC check fails, the data from the EEPROM is not loaded into the mapped registers listed in Table 3-11. The CRC1 and CRC2 values may be computed using the sample code in Figure 3-1 "CRC1 and CRC2 Sample Code" on page 32. This code accepts hexadecimal data from STDIN and writes data plus CRC to STDOUT. As a check, this code should produce the results as shown in Figure 3-1. Revision 1.0 31 Description 00h subsystem[7:0] 01h subsystem[15:8] 02h subsystem[23:16] 03h subsystem[31:24] 04h configROMheader[7:0] 05h configROMheader[15:8] 06h configROMheader[23:16] 07h configROMheader[31:24] 08h busOptions[7:0] 09h busOptions[15:8] 0Ah busOptions[23:16] 0Bh busOptions[31:24] 0Ch guidHi[7:0] 0Dh guidHi[15:8] 0Eh guidHi[23:16] 0Fh guidHi[31:24] 10h guidLo[7:0] 11h guidLo[15:8] 12h guidLo[23:16] 13h guidLo[31:24] 14h nscControl[7:0] 15h nscControl[15:8] 16h nscControl[23:16] 17h nscControl[31:24] 18h nscTxThrsh[7:0] 19h nscTxThrsh[15:8] 1Ah nscTxThrsh[23:16] 1Bh nscTxThrsh[31:24] 1Ch cmcControl[7:0] 1Dh cmcControl[15:8] 1Eh cmcControl[23:16] 1fh cmcControl[31:24] 20h CRC1 21h CRC2 www.national.com Geode™ CS4210 Operational Description (Continued) Geode™ CS4210 Operational Description (Continued) ff ff ff ff ff ff ff ff -> CRC1 = feh, CRC2 = 70h 01 23 45 67 89 ab cd ef -> CRC1 = 19h, CRC2 = 07h 00 00 00 00 00 00 00 00 -> CRC1 = bfh, CRC2 = f4h #include <stdio.h> typedef unsigned char uchar_t; typedef unsigned short ushort_t; typedef unsigned long long_t; ushort_t calc_crc(ushort_t r, uchar_t d); ushort_t rev16(ushort_t src); /* main routine */ int main(int argc, char *argv[]) { ushort_t residual = 0xffff; int din; uchar_t byte; uchar_t crc1, crc2; while(scanf("%2x", &din ) != EOF ) { byte = din; printf("%2.2x ", byte); residual = calc_crc(residual, byte); }; printf("\n"); residual = rev16(residual); crc1 = ~(residual & 0x00ff); crc2 = ~(residual>>8); printf("CRC1 = %2.2hxh\n", crc1); printf("CRC2 = %2.2hxh\n", crc2); return(0); /* calc_crc - apply a byte of data to the 16-bit CRC */ } ushort_t calc_crc(ushort_t r, uchar_t d) { ushort_t bit_in; int i; for(i=0;i<8;i++) { bit_in = (d>>i) & 0x0001; if((r>>15) ^ bit_in) r = (((r<<1) & 0x7ffb) | ((r>>15 ^ ((r>>14)&0x0001) ^ bit_in) << 15) | ((r>>15 ^ ((r>>1)&0x0001) ^ bit_in) << 2) | 0x0001 ); else r <<= 1; } return(r); } ushort_t rev16(ushort_t src) { return( ((src&0x0001)<<15) | ((src&0x0002)<<13) | ((src&0x0004)<<11) | ((src&0x0008)<<9) | ((src&0x0010)<<7) | ((src&0x0020)<<5) | ((src&0x0040)<<3) | ((src&0x0080)<<1) | ((src&0x0100)>>1) | ((src&0x0200)>>3) | ((src&0x0400)>>5) | ((src&0x0800)>>7) | ((src&0x1000)>>9) | ((src&0x2000)>>11) | ((src&0x4000)>>13) | ((src&0x8000)>>15); } Figure 3-1. CRC1 and CRC2 Sample Code www.national.com 32 Revision 1.0 Register Descriptions The registers of the CS4210 can broadly be divided into two categories: 1) OHCI Configuration Registers 2) National (Vendor) Specific Configuration Registers 4.1 PCI CONFIGURATION SPACE ACCESS A PCI configuration read or write cycle is accomplished by writing the bus, function, device, and register number into the 32-bit index register at 0CF8h, then performing a corresponding PCI configuration read or write of the 32-bit data register at 0CFCh. The format of the value written to 0CF8h (PCI_INDEX) is shown in Table 4-1. Both are memory mapped offsets accessed via Base Address Registers (BARs) specified in the PCI Configuration Space Header. The CS4210 provides a configuration space, whose first 40h bytes adhere to the format outlined in Revision 2.1 of the document entitled, “PCI Local Bus Specification”. This is a Type 0 header. This configuration space header contains two 32-bit BARs that specify memory space usage. The first BAR contains the memory address of the OHCI defined registers. The second BAR contains the memory address of the National Semiconductor defined registers. The remaining sub-sections of this chapter are as follows: • A brief discussion on how to access the registers located in the PCI Configuration Space • Register Summary • Detailed bit formats of all registers Table 4-1. PCI Index Register (0CF8h) 31 30 24 23 16 15 11 10 8 7 2 1 0 Configuration Space Mapping RSVD Bus Number Device Number Function Number Register Number 00 1 (Enable) 000 000 0000 0000 xxxx x xxx xxxx xx 00 (Always) Revision 1.0 33 www.national.com Geode™ CS4210 4.0 Geode™ CS4210 Register Descriptions (Continued) 4.2 REGISTER SUMMARY The tables in this subsection summarize all the registers of the CS4210. Included in the tables are the register’s reset values and page references where the bit formats are found. Table 4-2. PCI Configuration Registers Summary Index Width (Bits) Access Name Reset Value Reference (Page) Page 42 00h-01h 16 R Vendor Identification Register 1000h 02h-03h 16 R Device Identification Register 000Fh Page 42 04h-05h 16 RW PCI Command Register 0000h Page 42 06h-07h 16 RW PCI Status Register 0200h Page 43 08h 8 R Device Revision ID Register 09h-0Bh 24 R PCI Class Code Register 0Ch 8 R 0Dh 8 RW 0Eh 8 R 0Fh 8 R 10h-13h 32 RW 14h-17h 32 RW 18h-2B -- -- Reserved 2Ch-2Dh 16 R 2Eh-2Fh 16 R 30h-33h -- -- Reserved 34h 8 R Capabilities Pointer Register 35h-3Bh -- -- 3Ch 8 RW Interrupt Line Register 3Dh 8 R Interrupt Pin Register 01h Page 45 3Eh 8 R Min Grant Register 00h Page 45 Max Latency Register 00h Page 45 PCI HCI Control Register 00h Page 45 3Fh 8 R 40h-43h 32 RW 03h Page 43 0C0010h Page 43 PCI Cache Line Size Register 00h Page 43 PCI Latency Timer Register 50h Page 43 PCI Header Type Register 00h Page 43 PCI BIST Register 00h Page 43 Base Address Register 0 (BAR0): Sets base address for memory mapped OHCI Configuration Registers 00000000h Page 44 Base Address Register 1 (BAR1): Sets base address for memory mapped National Semiconductor device specific operational registers. 00000000h Page 44 --- Page 44 Subsystem Vendor Identification Register 1 Page 44 Subsystem Identification Register 2 Page 44 Reserved --- Page 44 3 Page 45 --- Page 45 FFh Page 45 44h 8 R Capability ID Register 01h Page 45 45h 8 R Next Item Pointer Register 00h Page 45 46h-47h 16 R Power Management Capabilities Register 4 Page 46 48h-49h 16 R/W Power Management and Control Status Register 5 Page 46 4Ah 8 R Power Management CSR Bridge Support Extension Register 00h Page 47 4Bh 8 R Power Management Data Register 00h Page 47 1. 2. 3. 4. 5. The reset value must be set in the serial EEPROM to the vendor identification number assigned by the PCI SIG. The reset value must be set in serial EEPROM to a unique number chosen by the user to represent this PCI device implementation. The reset value is dependent upon the PCICapabilities bit in the nscControl register (BAR1+Offset 00h[20]) which can be configured by the serial EEPROM. If enabled in the EEPROM, the reset value of the register is 44h. If not enabled in the EEPROM or if no EEPROM is present, then the reset value is 00h. The reset value is dependent upon the PCICapabilities bit in the nscControl register (BAR1+Offset 00h[20]) which can be configured by serial EEPROM. If enabled in the EEPROM the reset value of this register is 4000h. If not or if no EEPROM is present, then the reset value is 000h. The reset value is dependent upon the PCICapabilities bit in the nscControl register (BAR1+Offset 00h[20]) which can be configured by serial EEPROM. If enabled in the EEPROM the reset value of this register is 8000h. If not or if no EEPROM is present then the reset value is 000h. www.national.com 34 Revision 1.0 Table 4-3. OHCI Configuration Registers Summary BAR0+Offset Width (Bits) Access Name Reset Value Reference (Page) Page 58 00h-03h 32 R Version Register xxh 04h-07h 32 RSU/RU GUIDROM Register xxh Page 58 08h-0Bh 32 RW ATRetries Register xxh Page 59 0Ch-0Fh 32 RWU CSRReadData Register xxh Page 60 10h-13h 32 RW CSRCompareData Register 14h-17h 32 RW CSRControl Register 18h-1Bh 32 RWU 1Ch-1Fh 32 R 20h-23h 32 RW Bus Options Register xxh Page 62 24h-27h 32 RW GUIDHi Register xxh Page 63 28h-2Bh 32 R/W 2Ch-33h -- -- 34h-37h 32 38h-3Bh 32 3Ch-3Fh 40h-43h Configuration ROM Header Register Bus Identification Register xxh 800xh 00h Page 61 31333934h Page 61 GUIDLo Register xxh Reserved 00h -- RW Configuration ROM Map Register xxh Page 63 RU PostedWriteAddressLo Register xxh Page 64 32 RU PostedWriteAddressHi Register xxh 32 R Vendor ID Register 80017h Page 64 Page 65 50h-53h 32 RSC HCControl Set Register xxh 54h-57h 32 RSC HCControl Clear Register xxh 58h-63h -- -- Reserved 00h -- 64h-67h 32 RW Self-ID Buffer Pointer Register xxh Page 68 68h-6Bh 32 RU Self-ID Count Register xxh Page 68 70h-73h 32 RSC IRMultiChanMaskHi Set Register xxh Page 69 74h-77h 32 RSC IRMultiChanMaskHi Clear Register xxh 78h-7Bh 32 RSC IRMultiChanMaskLo Set Register xxh 7Ch-7Fh 32 RSC IRMultiChanMaskLo Clear Register xxh 80h-83h 32 RSCU IntEvent Set Register xxh 84h-87h 32 RSCU IntEvent Clear Register xxh 88h-8Bh 32 RSCU IntMask Set Register xxh 8Ch-8Fh 32 RSCU IntMask Clear Register xxh 90h-93h 32 RSC IsochTxIntEvent Set Register xxh 94h-97h 32 RSC IsochTxIntEvent Clear Register xxh 98h-9Bh 32 RSC IsochTxIntMask Set Register xxh 9Ch-9Fh 32 RSC IsochTxIntMask Clear Register xxh A0h-A3h 32 RSC IsochRxIntEvent Set Register xxh A4h-A7h 32 RSC IsochRxIntEvent Clear Register xxh A8h-ABh 32 RSC IsochRxIntMask Set Register xxh ACh-AFh 32 RSC B0h-DBh -- -- DCh-DFh 32 E0h-E3h Page 70 Page 72 Page 73 Page 73 Page 74 Page 74 IsochRxIntMask Clear Register xxh Reserved 00h -- RW Fairness Control Register xxh Page 75 32 RSC LinkControl Set Register xxh Page 75 E4h-E7h 32 RSC E8h-EBh 32 RU ECh-EFh 32 F0h-F3h 32 LinkControl Clear Register xxh Node ID and Status Register xxh Page 76 RWU PHYControl Register xxh Page 77 RWU IsochCycleTimer Register xxh Page 77 F4h-FFh -- -- Reserved 00h -- 100h-103h 32 RSCU AsyncRequestFilterHi Set Register 00h Page 78 104h-107h 32 RSCU AsyncRequestFilterHi Clear Register 00h Revision 1.0 35 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) Table 4-3. OHCI Configuration Registers Summary (Continued) BAR0+Offset Width (Bits) Access Name Reset Value Reference (Page) Page 78 108h-10Bh 32 RSCU AsyncRequestFilterLo Set Register 00h 10Ch-10Fh 32 RSCU AsyncRequestFilterLo Clear Register 00h 110h-113h 32 RSCU PhysicalRequestHi Set Register 00h 114h-117h 32 RSCU PhysicalRequestHi Clear Register 00h 118h-1Bh 32 RSCU PhysicalRequestLo Set Register 00h 11Ch-11Fh 32 RSCU PhysicalRequestLo Clear Register 00h 180h-183h 32 RSU AsyncReqTxContextControl Set Register xxh 184h-187h 32 RSU AsyncReqTxContextControl Clear Register xxh 188h-18Bh -- -- 18Ch-18Fh 32 Page 79 Page 79 Page 80 Reserved 00h -- AsyncReqTxCommandPtr Register xxh Page 80 190h-19Fh -- -- Reserved 00h -- 1A0h-1A3h 32 RSCU/RU AsyncRespTxContextControl Set Register xxh Page 81 1A4h-1A7h 32 RSCU/RU AsyncRespTxContextControl Clear Register xxh 1ACh-1AFh 32 RWU 1B0h-1BFh -- -- 1C0h-1C3h 32 RSCU/RSU 1C4h-1C7h 32 1C8h-1CBh -- 1CCh-1CFh 32 1D0h-1DFh -- --- AsyncRespTxCommandPtr Register xxh Reserved 00h Page 81 -- AsyncReqRxContextControl Set Register xxh Page 82 AsyncReqRxContextControl Clear Register xxh Reserved 00h -- AsyncReqRxCommandPtr Register xxh Page 82 Reserved 00h -Page 83 1E0h-1E3h 32 RSCU/RU AsyncRespRxContextControl Set Register xxh 1E4h-1E7h 32 RSCU/RU AsyncRespRxContextControl Clear Register xxh 1E8h-1EBh -- -- Reserved 00h -- 1ECh-1EFh 32 RWU AsyncRespRxCommandPtr Register xxh Page 83 200h-203h 32 RSCU/RSU IsochTx0ContextControl Set Register xxh Page 85 204h-207h 32 RSCU/RSU IsochTx0ContextControl Clear Register xxh Reserved 00h -- IsochTx0CommandPtr Register xxh Page 85 Page 85 208h-20Bh -- -- 20Ch-20Fh 32 RWU 210h-213h 32 RSCU/RSU IsochTx1ContextControl Set Register xxh RSCU/RSU IsochTx1ContextControl Clear Register xxh Reserved 00h -- IsochTx1CommandPtr Register xxh Page 85 Page 85 214h-217h 218h-21Bh -- -- 21Ch-21Fh 32 RWU 220h-223h 32 RSCU/RSU IsochTx2ContextControl Set Register xxh 224h-227h 32 RSCU/RSU IsochTx2ContextControl Clear Register xxh Reserved 00h -- IsochTx2CommandPtr Register xxh Page 85 Page 85 228h-22Bh -- -- 22Ch-22Fh 32 RWU 230h-233h 32 RSCU/RSU IsochTx3ContextControl Set Register xxh 234h-237h 32 RSCU/RSU IsochTx3ContextControl Clear Register xxh Reserved 00h -- IsochTx3CommandPtr Register xxh Page 85 Page 85 238h-23Bh -- -- 23Ch-23Fh 32 RWU 240h-243h 32 RSCU/RSU IsochTx4ContextControl Set Register xxh 244h-247h 32 RSCU/RSU IsochTx4ContextControl Clear Register xxh Reserved 00h -- IsochTx4CommandPtr Register xxh Page 85 Page 85 248h-24Bh -- -- 24Ch-24Fh 32 RWU 250h-253h 32 RSCU/RSU IsochTx5ContextControl Set Register xxh 254h-257h 32 RSCU/RSU IsochTx5ContextControl Clear Register xxh Reserved 00h -- IsochTx5CommandPtr Register xxh Page 85 258h-25Bh -- -- 25Ch-25Fh 32 RWU www.national.com 36 Revision 1.0 Table 4-3. OHCI Configuration Registers Summary (Continued) Width (Bits) Access 260h-263h 32 RSCU/RSU 264h-267h 32 RSCU/RSU BAR0+Offset Reset Value Reference (Page) IsochTx6ContextControl Set Register xxh Page 85 IsochTx6ContextControl Clear Register xxh Reserved 00h -- IsochTx6CommandPtr Register xxh Page 85 Page 85 Name 268h-26Bh -- -- 26Ch-26Fh 32 RWU 270h-273h 32 RSCU/RSU IsochTx7ContextControl Set Register xxh 274h-277h 32 RSCU/RSU IsochTx7ContextControl Clear Register xxh 278h-27Bh -- -- 27Ch-27Fh 32 RWU Reserved 00h -- IsochTx7CommandPtr Register xxh Page 85 280h-3FFh -- -- Reserved 00h -- 400h-403h 32 RSCU/RSU IsochRx0ContextControl Set Register xxh Page 87 404h-407h 32 RSCU/RSU IsochRx0ContextControl Clear Register xxh 408h-40Bh -- -- Reserved 00h -- 40Ch-40Fh 32 RWU IsochRx0CommandPtr Register xxh Page 88 410h-413h 32 RW IsochRx0ContextMatch xxh Page 88 414h-41Fh -- -- Reserved 00h -- 420h-423h 32 RSCU/RSU IsochRx1ContextControl Set Register xxh Page 87 424h-427h 32 RSCU/RSU IsochRx1ContextControl Clear Register xxh 428h-42Bh -- -- Reserved 00h -- 42Ch-42Fh 32 RWU IsochRx1CommandPtr Register xxh Page 88 430h-433h 32 RW IsochRx1ContextMatch Register xxh Page 88 434h-43Fh -- -- Reserved 00h -- 440h-443h 32 RSCU/RSU IsochRx2ContextControl Set Register xxh Page 87 444h-447h 32 RSCU/RSU IsochRx2ContextControl Clear Register xxh 448h-44Bh -- -- Reserved 00h -- 44Ch-44Fh 32 RWU IsochRx2CommandPtr Register xxh Page 88 450h-453h 32 RW IsochRx2ContextMatch Register xxh Page 88 454h-45Fh -- -- Reserved 00h -- 460h-463h 32 RSCU/RSU IsochRx3ContextControl Set Register xxh Page 87 464h-467h 32 RSCU/RSU IsochRx3ContextControl Clear Register xxh 468h-46Bh -- -- Reserved 00h -- 46Ch-46Fh 32 RWU IsochRx3CommandPtr Register xxh Page 88 470h-473h 32 RW IsochRx3ContextMatch Register xxh Page 88 474h-47Fh -- -- Reserved 00h -- 480h-483h 32 RSCU/RSU IsochRx4ContextControl Set Register xxh Page 87 484h-487h 32 RSCU/RSU IsochRx4ContextControl Clear Register xxh 488h-48Bh -- -- Reserved 00h -- 48Ch-48Fh 32 RWU IsochRx4CommandPtr Register xxh Page 88 490h-493h 32 RW IsochRx4ContextMatch Register xxh Page 88 494h-49Fh -- -- Reserved 00h -- 4A0h-403h 32 RSCU/RSU IsochRx5ContextControl Set Register xxh Page 87 4A4h-407h 32 RSCU/RSU IsochRx5ContextControl Clear Register xxh 4A8h-40Bh -- -- Reserved 00h -- 4ACh-40Fh 32 RWU IsochRx5CommandPtr Register xxh Page 88 4B0h-413h 32 RW IsochRx5ContextMatch Register xxh Page 88 4B4h-41Fh -- -- Reserved 00h -- 4C0h-4C3h 32 RSCU/RSU IsochRx6ContextControl Set Register xxh Page 87 4C4h-4C7h 32 RSCU/RSU IsochRx6ContextControl Clear Register xxh 4C8h-4CBh -- -- Reserved 00h Revision 1.0 37 -- www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) Table 4-3. OHCI Configuration Registers Summary (Continued) Width (Bits) Access 4CCh-4CFh 32 RWU 4D0h-4D3h 32 RW 4D4h-4DFh -- -- Reserved 00h -- 4E0h-4E3h 32 RSCU/RSU IsochRx7ContextControl Set Register xxh Page 87 4E4h-4E7h 32 RSCU/RSU IsochRx7ContextControl Clear Register xxh 4E8h-4EBh -- -- Reserved 00h -- 4ECh-4EFh 32 RWU IsochRx7CommandPtr Register xxh Page 88 4F0h-4F3h 32 RW IsochRx7ContextMatch Register xxh Page 88 4F4h-4FFh -- -- Reserved 00h -- BAR0+Offset www.national.com Reset Value Reference (Page) IsochRx6CommandPtr Register xxh Page 88 IsochRx6ContextMatch Register xxh Page 88 Name 38 Revision 1.0 Table 4-4. National Specific Configuration Registers Summary Width (Bits) Access 00h-03h 32 RW 04h-07h 32 RSCU 08h-0Bh 32 RSCU BAR1+Offset Reset Value Reference (Page) 00h Page 91 nscEvent Set Register xxh Page 93 nscEvent Clear Register xxh Name nscControl Register 0Ch-0Fh 32 RSC nscEventMask Set Register xxh 10h-13h 32 RSC nscEventMask Clear Register xxh 14h-17h 32 RU/RW nscRAMBist Register xxh Page 94 18h-1Bh 32 RW nscCmcControl Register 00h Page 94 20h-23h 32 RW/RU nscTxThreshold Register 01FE01FEh Page 94 24h-27h 32 RW nscSubSystem Register 00h Page 94 40h-43h 32 RW nscPhysReadCount Register 00h Page 95 44h-47h 32 RW nscPhysWriteCount Register 00h Page 95 48h-4Bh 32 RW nscPhysLockCount Register 00h Page 95 4Ch-5Fh -- -- Reserved 00h -- 60h-63h 32 R nscBusmgrID Register xxh Page 96 64h-67h 32 R nscBandwAvail Register xxh Page 96 68h-6Bh 32 R nscChanAvailHi Register xxh Page 96 6Ch-6Fh 32 R nscChanAvailLo Register xxh Page 96 Revision 1.0 39 Page 93 www.national.com Geode™ CS4210 Register Descriptions (Continued) 4.3 PCI CONFIGURATION REGISTERS The PCI configuration space for the CS4210 is header type 0. Header type 0 is the format for the device’s configuration header region which is the first 16 DWORDs of PCI configuration space. The configuration and operational registers are memory mapped into PCI memory address space and pointed to by Base Address Registers (BARs) in the PCI configuration space. PCI configuration space is not directly memory or I/O mapped - its access is system dependent. A software reset issued through the HCControl register does not affect the contents of the PCI configuration space. Table 4-5 is a map for the PCI Configuration Registers. Table 4-6 gives detailed bit information. Table 4-5. PCI Configuration Register Map: Index xxh 6 5 PCI Device Class Code memWrInvalid VGAPalSnoop fastBBEn RSVD parityErrResp RSVD dataParityRep 1 0 Revision ID Sub Class Programming Interface revisionID PCI BIST Register PCI Header Type PCI Latency Timer Register PCI Cache Line Size Register BIST Header Type latencyTimer cacheLineSize Base Address Register 0 - OHCI Configuration Registers 14h17h Base Address Register 1 - National Specific Configuration Registers 18h2Bh Reserved Base Address 0 Base Address 0 2Ch2Fh Subsystem Vendor ID Subsystem ID Subsys Vend ID TP Reserved Capabilities RSVD Capabilities Pointer 38h3Bh www.national.com TP Reserved 34h37h 40h43h RSVD Subsystem ID 30h33h 3Ch3Fh RSVD IND 10h13h Prefetchable Base Class Prefetchable 0Ch0Fh 2 IND 08h0Bh devsel Timing waitCycEn Command Register 3 Vendor Identification Register systemErrEn Status Register signalTargetAbort Vendor ID 04h07h recvTargeAbort Device ID recvMasterAbort Device Identification Register signalSysErr 00h03h 4 ioAccess 7 memoryAccess 8 masterEn Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 specCycRec Bits detectedParErr Geode™ CS4210 Register Descriptions (Continued) Reserved Max Latency Min Grant Interrupt Pin Interrupt Line Max Latency Min Grant Interrupt Pin Interrupt Line Reserved 40 Revision 1.0 Table 4-5. PCI Configuration Register Map: Index xxh (Continued) Bits Index 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 Revision 1.0 pmVersion pmData pmcrBSE 41 6 5 4 3 2 Next Item Pointer Capability ID NextItemPointer CapabilityID 1 0 Power Management Control and Status dynData RSVD RSVD pmeState Power Management CSR Bride Support Extensions 7 dynDataEnab Power Management Data 8 pmeEnab pmeCLK auxPower DSI RSVD dynData daSupport pmeSupport pmeStatus 48h4Bh Power Management Capabilities d2Support 44h47h www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) Table 4-6. PCI Configuration Register Definitions Bit Name Access Index 00h 15:0 Description Vendor Identification Register Vendor ID RO Index 02h 15:0 Reset 1000h Vendor Identification: This register identifies the manufacturer of the CS4210 as National Semiconductor. Device Identification Register Device ID RO 000Fh Index 04h Device Identification: This register identifies the CS4210 as the IEEE 1394 Open Host Controller. PCI Command Register This register provides coarse control over the device’s ability to generate and respond to PCI cycles. It is required that the CS4210 support both PCI bus-mastering and memory-mapping of all configuration and operational registers into the memory address space of the PC host. Consequently, the fields memoryAccess and masterEn should always be set to 1 during device configuration. Once the CS4210 starts processing DMA descriptor lists, the action of resetting either field memoryAccess or masterEn to 0 halts all PCI operations. If the field memoryAccess is reset to 0, the CS4210 can no longer respond to any software command addressed to it and interrupt generation is halted. 15:10 RSVD --- 000000 Reserved 9 fastBBEn RO 0 Fast Back-to-Back Enable: This function is not supported and is always disabled. 0 = Disable; 1 = Enable. 8 systemErrEn R/W 0 System Error Enable: Allow assertion on detection of special errors. 0 = Disable; 1 = Enable. 7 waitCycEn RO 0 Wait Cycle Control: This function is not supported and is always disabled. 0 = Disable; 1 = Enable. 6 parityErrResp R/W 0 Parity Error Response: Allow the CS4210 to drive PERR# when a parity error is detected. 0 = Disable; 1 = Enable. 5 VGAPalSnoop RO 0 VGA Palette Snoop: This function is not supported, Is is always disabled. 0 = Disable; 1 = Enable. 4 memWrInvalid RO 0 Memory Write and Invalidate: Allow the CS4210 to do memory write and invalidate cycles. 0 = Disable; 1 = Enable. 3 specCycRec RO 0 Special Cycles: This function is not supported and is always disabled. 0 = Disable; 1 = Enable. 2 masterEn R/W 0 Bus Master: Allow the CS4210 bus mastering capabilities. 0 = Disable; 1 = Enable. 1 memoryAccess R/W 0 Memory Space Access: Allow the CS4210 to respond to memory cycles from the PCI bus. 0 = Disable; 1 = Enable. If disabled, memory write commands must be used. This bit must be set to 1 to access memory offsets through BAR0 (Index 10h) and BAR1 (Index 14h). 0 www.national.com ioAccess RO 0 I/O Space Access: Allow the CS4210 to respond to I/O cycles from the PCI bus. 0 = Disable; 1 = Enable. 42 Revision 1.0 Table 4-6. PCI Configuration Register Definitions Bit Name Access Reset Index 06h 15 Description PCI Status Register detectedParErr R/W 0 Detected Parity Error: This bit is set whenever a parity error is detected. Write 1 to clear. 14 signalSysErr R/W 0 Signaled System Error: This bit is set whenever the CS4210 asserts SERR# active. Write 1 to clear. 13 recvMasterAbort R/W 0 Received Master Abort: This bit is set whenever a master abort cycle occurs while the CS4210 is the master for the PCI cycle. Write 1 to clear. 12 recvTargeAbort R/W 0 Received Target Abort: This bit is set whenever a target abort is received while the CS4210 is the master for the PCI cycle. Write 1 to clear. 11 signalTargetAbort R/W 0 Signaled Target Abort: This bit is set whenever the CS4210 signals a target abort while it is the target for the PCI cycle. Write 1 to clear. 10:9 devselTiming RO 01 DEVSEL# Timing: These bits are always 01, as the CS4210 always responds to cycles for which it is an active target with medium DEVSEL# timing: 00 = Fast; 01 = Medium; 10 = Slow; 11 = Reserved 8 dataParityRep R/W 0 Data Parity Detected: This bit is set when the CS4210 asserted PERR# or observed PERR# asserted. The parityErrResp in the Command Register (Index 04h[6]) must be enabled for this bit to function. 7:0 RSVD RO 0 Write 1 to clear. Index 08h 7:0 Revision Identification Register revisionID RO Index 09h 23:16 Reserved 03h Revision Identification: Specifies the silicon revision as 03h. This value will be incremented for subsequent revisions. PCI Class Code Register Base Class RO 0Ch Base Class: Identifies the device as being a serial bus controller. 15:8 Sub Class RO 00h Sub Class: Identifies the device as being of IEEE 1394 class. 7:0 Programming Interface RO 10h Programming Interface: Identifies the device as being a 1394 OpenHCI controller. Index 0Ch 7:0 PCI Cache Line Size Register cacheLineSize RO Index 0Dh 7:0 latencyTimer R/W 50h Revision 1.0 PCI Latency Timer Value: This register contains the maximum number of PCI clocks that the CS4210 can hold ownership of the PCI bus as the bus master. Bits [3:0] are a constant 0. PCI Header Type Register Header Type RO 00h Index 0Fh 7:0 PCI Cache Line Size: This register sets the size of the PCI cache line. A value of 00h indicates caching is disabled. PCI Latency Timer Register Index 0Eh 7:0 00h PCI Header Type Register: This register defines the format of this header. This header is of type format 0. Additionally, bit 7 defines whether this PCI device is a multi-function (bit 7 = 1) or single-function (bit 7 = 0) device. PCI BIST Register BIST RO 00h PCI Built-In Self-Test: A value of 00h indicates no PCI controlled BIST. 43 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) Table 4-6. PCI Configuration Register Definitions Bit Name Access Index 10h Reset Description Base Address Register 0 (BAR0) This register specifies the base address of a contiguous memory space in the PCI memory space of the host. This memory space is assigned to the configuration and operational registers defined by the OHCI specification. The registers designated as the CS4210 Configuration Registers (listed in Section 4.4 "OHCI Configuration Registers" on page 48) are directly mapped into the first 2 KB of this memory space. 32:11 Base Address 0 R/W 00h Base Memory Address: For accessing the configuration registers defined by the CS4210. A 2 KB address range is used. 10:4 RSVD -- 0 Reserved 3 Prefetchable RO 0 Pre-fetchable: 0 indicates the memory is not pre-fetchable. 2:1 TP RO 00 Target Pointer: 00 indicates the base register is 32 bits wide and can be placed anywhere in the 32-bit memory space. 0 IND RO 0 Index: 0 indicates the CS4210 configuration registers are mapped into memory space of the host system. Index 14h Base Address Register 1 (BAR1) This register specifies the base address of a contiguous memory space in the PCI memory space of the host. This memory space is assigned to the operational registers defined by National (listed in Section 4.5 "National (NSC) Specific Configuration Registers" on page 89). These registers are mapped into the first 2 KB of this memory space. 32:11 Base Address 0 R/W 00h Base Memory Address: For accessing the vendor defined registers in the CS4210. A 2 KB address range is used. 10:4 RSVD -- 0 Reserved 3 Prefetchable RO 0 Pre-fetchable: 0 indicates the memory is not pre-fetchable. 2:1 TP RO 00 Target Pointer: 00 indicates the base register is 32 bits wide and can be placed anywhere in the 32-bit memory space. 0 IND RO 0 Index: 0 indicates the CS4210 configuration registers are mapped into memory space of the host system. Index 18h-2Bh Reserved Index 2Ch 15:0 Note: Subsystem Vendor Identification Register Subsys Vend ID RO Subsystem Vendor Identification: This register identifies the vendor of the subsystem that contains this OpenHCI function. The ID is assigned by the PCI SIG and is loaded from the serial ROM after power-up reset. This register can be accessed through NSC register space but cannot be written from PCI. The reset value must be set in the serial EEPROM to the vendor identification number assigned by the PCI SIG. Index 2Eh 15:0 Note: See Note Subsystem Identification Register Subsys ID RO See Note Subsystem Identification: This register identifies the subsystem that contains this OpenHCI function. The ID is assigned by the vendor and is loaded from the serial ROM after power-up reset. This register can be accessed through NSC register space but cannot be written from PCI The reset value must be set in serial EEPROM to a unique number chosen by the user to represent this PCI device implementation. Index 30h-33h www.national.com Reserved 44 Revision 1.0 Table 4-6. PCI Configuration Register Definitions Bit Name Access Index 34h 7:0 Note: Reset Capabilities Pointer Register Capabilities Pointer RO See Note Reserved Index 3Ch Interrupt Line Register 7:0 Interrupt Line R/W Index 3Dh FFh Interrupt Pin RO 01h Index 3Eh Interrupt Pin: This register defines which of the four PCI interrupt request pins this device uses. The CS4210 uses INTA#. Min Grant Register 7:0 Min Grant RO Index 3Fh 00h Min Grant: This register specifies how many 250 ns periods are required by the CS4210 for burst transfers. A reset value of 00h specifies no stringent requirements on burst lengths. Max Latency Register 7:0 Max Lat RO 00h Index 40h-43h Max Latency: This register defines how quickly the CS4210 requires the PCI bus after its REQ# has been asserted. The value of zero indicates there are no stringent requirements for PCI bus latency. Reserved Index 44h 7:0 Interrupt Line: This register is used to identify which of the system interrupt lines on the interrupt controller the CS4210 interrupt pin is routed to. The reset value of FFh indicates no connection. Interrupt Pin Register 7:0 Capability ID Register CapabilityID RO Index 45h Revision 1.0 Capabilities Pointer: This register provides a pointer into the PCI configuration header where the PCI power management register block resides. The configuration header registers residing at Index 44h and 48h provide the power management registers. The presence of this register is controlled by the PCICapabilities bit in the nscControl register (BAR1+Offset 00h[20]). If enabled this register points to Index 44h otherwise it reads zero. The reset value is dependent upon the PCICapabilities bit in the nscControl register (BAR1+Offset 00h[20]) which can be configured by the serial EEPROM. If enabled in the EEPROM, the reset value of the register is 44h. If not enabled in the EEPROM or if no EEPROM is present, then the reset value is 00h. Index 35h-3Bh 7:0 Description 01h Capability ID: This register specifies that the CS4210 supports PCI power management. It reads zero if the Capabilities Pointer (Index 34h[7:0]) is disabled. When visible, the value of 01h is the unique ID assigned to PCI power management capability by the PCI SIG. Next Item Pointer Register NextItemPointer RO 00h Next Item Pointer: This register specifies the pointer to the next capability item. This field returns 0 indicating that only one additional capability is supported. 45 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) Table 4-6. PCI Configuration Register Definitions Bit Name Access Index 46h-47h Reset Description Power Management Capabilities Register This register specifies capabilities related to PCI power management. This register is available only if the PCICapabilities bit (BAR1 Offset 00h[20]) is set in the nscControl register. 15:11 pmeSupport RO 01000 Power Management Event Support: Bit 14 is one indicating PME# may be asserted from the D3HOT power state. PME# is not capable of asserting from other states. 10 d2Support RO 0 D2 Power State Support: This bit reads zero indicating that the D2 power state is not supported. 9 d1Support RO 0 D1 Power State Support: This bit reads zero indicating that the D1 power state is not supported. 8 dynData RO 0 Dynamic Power Consumption Data: This bit reads zero indicating that dynamic power consumption data is not provided. 7:6 RSVD RO 0 Reserved 5 DSI RO 0 Driver Special Initialization: This bit reads zero indicating that no special initialization is required beyond the standard PCI configuration header before a generic class driver is able to use the CS4210. 4 auxPower RO 0 Auxiliary Power: This bit reads zero indicating that PME# generation in the D3COLD state is not supported. 3 pmeCLK RO 0 Power Management Event Clock: This bit reads zero indicating that no host bus clock is required to generate PME#. 2:0 pmVerson RO 000 Note: Power Management Version: This field reads zero indicating compatibility with the PCI Bus Power Interface Management Specification previous to revision 1.0. The reset value is dependent upon the PCICapabilities bit in the nscControl register (BAR1+Offset 00h[20]) which can be configured by serial EEPROM. If enabled in the EEPROM the reset value of this register is 4000h. If not or if no EEPROM is present, then the reset value is 000h. Index 48h Power Management and Control Status Register This register implements the control and status of the PCI power management function. This register is available only if the PCICapabilities bit (BAR1 Offset 00h[20]) is set in the nscControl register. 15 pmeStatus RC 1 Power Management Event Status: This bit is set when PME# is asserted. Write 1 to clear. The PME# signal is also cleared when this is bit is written to 1. A write of zero has no effect. 14:9 dynData RO 000000 8 pmeEnab R/W 0 7:5 RSVD --- 000 4 dynDataEnab RO 3:2 RSVD --- 1:0 pwrState R/W Dynamic Power Consumption Data: This field reads 0 indicating that dynamic data is not reported. Power Management Event Enable: When set, this bit enables the assertion of PME#. Reserved Dynamic Power Consumption Data: This bit reads 0 indicating that dynamic data is not reported. 00 Reserved Power State: This field is used to determine and set the CS4210 power state. 00 = Current power state is D0 01 = Current power state is D1 10 = Current power state is D2 11 = Current power state is D3hot Since D1 and D2 are not supported, a write of either 01 or 10 is treated as the D0 state. Note: The reset value is dependent upon the PCICapabilities bit in the nscControl register (BAR1+Offset 00h[20]) which can be configured by serial EEPROM. If enabled in the EEPROM the reset value of this register is 8000h. If not or if no EEPROM is present then the reset value is 000h. www.national.com 46 Revision 1.0 Table 4-6. PCI Configuration Register Definitions Bit Name Index 4Ah 7:0 Access Revision 1.0 Description Power Management CSR Bridge Support Extension Register pmcrBSE RO Index 4Bh 7:0 Reset 00h Power Management Control and Status Register Bridge Support Extension: This field returns 0 indicating that the CS4210 does not support PCI-to-PCI bridging. Power Management Data Register pmData RO 00h Power Management Dynamic Power Data: This field returns 0 indicating that the CS4210 does not report dynamic data. 47 www.national.com Geode™ CS4210 Register Descriptions (Continued) 4.4 OHCI CONFIGURATION REGISTERS The OHCI configuration registers are at the location specified by Base Address Register 0 (BAR0) in PCI configuration space. not change other bits. The register field descriptions in Table 4-7 describe the operating modes of those registers. Table 4-8 is a map for the registers accessed through BAR0. Following this table are subsections providing detailed information for each register. The registers must be accessed as 32-bit entities with host processor quadlet reads or quadlet writes occurring on quadlet boundaries. When HCControl.LPS is 0, the only accessible registers are Version, VendorID, HCControl, GUID_ROM, GUIDHi and GUIDLo. Access to all other registers is undefined until HCControl.LPS is set to 1. Table 4-7. Operating Modes All register fields are initialized to zero or their default value upon power up. Reads of reserved fields yield undetermined results. Unless specified, a 1394 bus reset will not affect the register contents. The registers are either read/ write or set/clear registers. The read/write registers are defined at a single location. The set/clear registers have one location for setting bits in the register and a second location for clearing those bits. When a value of 1 is written to a set location, that value is taken as a bit mask to update that bit. The other bits in the register are not changed. Writing a 1 to a clear location sets that bit to zero and will Access Tag Name Description R Read Field may be read from the PCI bus. W Write Field may be written from the PCI bus. U Update S Set C Clear Field may be autonomously updated by the OHCI hardware. Field may be set from the PCI bus. Field may be cleared from the PCI bus. Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 RSVD version 8 7 6 5 4 3 2 1 0 RSVD revision RSVD RSVD GUID_ROM Register rdStart 04h-07h addrReset 9 Version Register GUID_ROM 00h-03h rdData RSVD ATRetries Register secondLimit (not implemented) 08h-0Bh cycleLimit (not implemented) 0Ch-0Fh maxPhysRespRetries RSVD maxATRespRetries maxATReqRetries CSRCompareData Register csrData 10h-13h CSRCompareData Register csrCompare 14h-17h CSRControlRegister csrDone RSVD 18h-1Bh csrSel Geode™ CS4210 Register Descriptions (Continued) ConfigROMhdr Register info_length www.national.com crc_length rom_crc_value 48 Revision 1.0 Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 1Ch-1Fh 9 8 7 6 5 4 3 2 1 0 BusID Register busID pmc bmc BusOptions Register isc cmc irms 20h-23h RSVD cyc_clk_acc 24h-27h 28h-2Bh max_rec RSVD g RSVD link_spd GUIDHi Register GUIDLo Register node_vendor_ID chip_ID_Hi chip_ID_Lo 2Ch-30h Reserved 34h-37h ConfigROMMap Register configROMaddr 38h-3Bh 3Ch-3Fh RSVD PostedWriteAddressLo Register PostedWriteAddressHi Register offsetLo sourceID offsetHi 40h-43h Vendor ID vendorUnique vendorCompanyID 58h-63h softReset RSVD linkEnable postedWriteEnable RSVD LPS RSVD aPhyEnhanceEnable HCControl Set Register HCControl Clear Register programPhyEnable 50h-53h 54h-57h RSVD Reserved noByteSwapData 44h-4Fh Reserved 64h-67h Self-ID Buffer Pointer Register selfIDBufferPtr selfIDError 68h-6Bh RSVD Self-ID Count Register RSVD selfIDGeneration RSVD 6Ch-6Fh Reserved 70h-73h 74h-77h IRMultiChanMaskHi Set Register IRMultiChanMaskHi Clear Register 2selfIDSize RSVD IsochChannel[63:32] 78h-7Bh 7Ch-7Fh Revision 1.0 IRMultiChanMaskLo Set Register IRMultiChanMaskLo Clear Register 49 www.national.com Geode™ CS4210 Register Descriptions (Continued) A8h-ABh ACh-AFh www.national.com RSVD 50 RSVD IsochRxIntMask Set Register IsochRxIntMask Clear Register RSVD B0h-DBh Reserved DCh-DFh Fairness Control Register isochRxInt3 isochRxInt2 isochRxInt1 isochRxInt0 isochRxIntMask3 isochRxIntMask2 isochRxIntMask1 isochRxIntMask0 isochTxInt0 reqTxCompleteIntEn respTxCompleteIntEn ARRQIntEn reqTxComplete respTxComplete ARRQ 1 isochTxIntMask0 isochTxInt1 isochTxInt2 ARRS RQPkt 2 isochTxIntMask1 ARRSIntEn RQPktIntEn 3 isochTxIntMask2 isochTxInt3 isochTxInt4 RSPkt isochTx 4 isochTxIntMask3 isochTxIntMask4 RSPktIntEn isochTxIntEn 5 isochRxInt4 isochTxInt5 isochTxInt6 isochRx 6 isochTxIntMask5 isochTxIntMask6 isochRxIntEn postedWriteErr postedWriteErrIntEn 7 isochRxIntMask4 isochRxInt5 RSVD lockRespErr IntMask Set Register IntMask Clear Register lockRespErrIntEn RSVD isochRxInt6 selfIDcomplete busReset RSVD phy cycleSynch cycle64Seconds cycleLost cycleInconsistent unrecoverableError RSVD isochRxIntMask5 RSVD isochTxInt7 selfIDcompleteIntEn busResetIntEn RSVD phyIntEn cycleSynchIntEn cycle64SecondsIntEn cycleLostIntEn cycleInconsistentIntEn 88h-87h 8Ch-8Fh isochTxIntMask7 RSVD unrecoverableErrorIntEn phyRegRcvd RSVD 8 isochRxIntMask6 A0h-A3h A4h-A7h cycleTooLong 80h-83h 84h-87h 9 isochRxInt7 98h-9Bh 9Ch-9Fh cycleTooLongIntEn 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 isochRxIntMask7 90h-93h 94h-97h phyRegRcvdIntEn masterIntEnable Geode™ CS4210 Register Descriptions (Continued) Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) 0 IsochChannel[31:0] IntEvent Set Register IntEvent Clear Register IsochTxEvent Set Register IsochTxIntEvent Clear Register IsochTxIntMask Set Register IsochTxIntMask Clear Register IsochRxIntEvent Set Register IsochRxIntEvent Clear Register pri_req Revision 1.0 Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 7 6 5 4 3 2 1 0 busNumber F0h-F3h cycleSeconds asyncReqResourceAll 108h-10Bh 10Ch-10Fh nodeNumber rdAddr rdData wrReg PHYControl Register rdReg RSVD 100h-103h 104h-107h rcvSelfID Node ID and Status Register ECh-EFh F4h-FFh RSVD RSVD CPS RSVD root iDValid E8h-EBh RSVD rcvPhyPkt cycleMaster cycleSource RSVD rdDone 8 LinkControl Set Register LinkControl Clear Register cycleTimerEnable E0h-E3h E4h-E7h 9 RSVD regAddr wrData IsochCycleTimer Register cycleCount cycleOffset Reserved AsyncReqFilterHi Set Register AsyncReqFilterHi Clear Register asyncReqResource[62:32] AsyncReqFilterLo Set Register AsyncReqFilterLo Clear Register asyncReqResource[31:0] physReqResourceAll 110h-113h 114h-117h 118h-11Bh 11Ch-11Fh PhysicalReqHi Set Register PhysicalReqHi Clear Register physReqResource[62:32] PhysicalReqtLo Set Register PhysicalRequestLo Clear Register physReqResource[31:0] 120h-17Fh Revision 1.0 Reserved 51 www.national.com Geode™ CS4210 Register Descriptions (Continued) Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 188h-18Bh Reserved 18Ch-18Fh AsyncReqTxCommandPtr Register dead FSVD active run RSVD RSVD 4 3 2 1 0 1A0h-1A3h 1A4h-1A7h AsyncRespTxContextControl Set Register AsyncRespTxContextControl Clear Register run RSVD 1A8h-1ABh Reserved 1ACh-1AFh AsyncRespTxCommandPtr Register dead Reserved wake 190h-19Fh RSVD RSVD 1C0h-1C3h 1C4h-1C7h AsyncReqRxContextControl Set Register AsyncReqRxContextControl Clear Register run RSVD 1C8h-1CBh Reserved 1CCh-1CFh AsyncReqRxCommandPtr Register dead Reserved wake 1B0h-1BFh RSVD spd event code Z 1E0h-1E3h 1E4h-1E7h AsyncRespRxContextControl Set Register AsyncRespRxContextControl Clear Register run RSVD 1E8h-1EBh Reserved 1ECh-1EFh AsyncRespRxCommandPtr Register dead Reserved wake 1D0h-1DFh active descriptorAddress RSVD event code Z active descriptoraddress RSVD event code Z active descriptorAddress RSVD spd descriptorAddress event code Z 1F0h-1FFh Reserved 200h-203h 204h-207h IsochTx0ContextControl Set Register IsochTx0ContextControl Clear Register Reserved 20Ch-20Fh IsochTx0CommandPtr Register descriptorAddress 52 dead event code active RSVD wake RSVD run cyclematch 208h-20Bh www.national.com 5 AsyncReqTxContextControl Set Register AsyncReqTxContextControl Clear Register wake 180h-183h 184h-187h cycleMatchEnable Geode™ CS4210 Register Descriptions (Continued) Z Revision 1.0 Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 8 7 21Ch-21Fh IsochTx1CommandPtr Register dead RSVD Reserved descriptorAddress 3 2 1 0 event code IsochTx2ContextControl Set Register IsochTx2ContextControl Clear Register Reserved 22Ch-22Fh IsochTx2CommandPtr Register dead RSVD descriptorAddress Z IsochTx3ContextControl Set Register IsochTx3ContextControl Clear Register 238h-23Bh Reserved 23Ch-23Fh IsochTx3CommandPtr Register dead RSVD descriptorAddress Z IsochTx4ContextControl Set Register IsochTx4ContextControl Clear Register 248h-24Bh Reserved 24Ch-24Fh IsochTx4CommandPtr Register descriptorAddress 53 dead RSVD event code active RSVD run cyclematch wake 240h-243h 244h-247h event code active RSVD run cyclematch wake 230h-233h 234h-237h event code active RSVD wake cyclematch 228h-22Bh cycleMatchEnable 4 Z run cycleMatchEnable 220h-223h 224h-227h cycleMatchEnable 5 active RSVD wake cyclematch 218h-21Bh Revision 1.0 6 IsochTx1ContextControl Set Register IsochTx1ContextControl Clear Register run cycleMatchEnable 210h-213h 214h-217h 9 Z www.national.com Geode™ CS4210 Register Descriptions (Continued) Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 Reserved 25Ch-25Fh IsochTx5CommandPtr Register dead descriptorAddress 3 2 1 0 event code Z IsochTx6ContextControl Set Register IsochTx6ContextControl Clear Register 268h-26Bh Reserved 26Ch-26Fh IsochTx6CommandPtr Register dead RSVD descriptorAddress Z IsochTx7ContextControl Set Register IsochTx7ContextControl Clear Register 278h-27Bh Reserved 27Ch-27Fh IsochTx7CommandPtr Register dead RSVD descriptorAddress Z Reserved 400h-403h 404h-407h IsochRx0ContextControl Set Register IsochRx0ContextControl Clear Register 408h-40Bh Reserved 40Ch-40Fh IsochRx0CommandPtr Register descriptorAddress 54 dead RSVD spd event code active RSVD wake RSVD run multiChanmode 280h-3FFh www.national.com event code active RSVD run cyclematch wake cycleMatchEnable 270h-273h 274h-277h event code active RSVD run cyclematch wake cycleMatchEnable 260h-263h 264h-267h CycleMAtchEnable 4 active RSVD wake RSVD run cyclematch 258h-25Bh bufferFill 5 IsochTx5ContextControl Set Register IsochTx5ContextControl Clear Register cycleMatchEnable 250h-253h 254h-257h isochheader Geode™ CS4210 Register Descriptions (Continued) Z Revision 1.0 410h-413h RSVD Reserved 420h-423h 424h-427h IsochRx1ContextControl Set Register IsochRx1ContextControl Clear Register RSVD run 428h-42Bh Reserved 42Ch-42Fh IsochRx1CommandPtr Register dead RSVD wake RSVD multiChanmode CycleMAtchEnable 6 spd descriptorAddress RSVD RSVD RSVD 448h-44Bh Reserved 44Ch-44Fh IsochRx2CommandPtr Register dead run RSVD wake RSVD multiChanmode CycleMAtchEnable IsochRx2ContextControl Set Register IsochRx2ContextControl Clear Register bufferFill 440h-443h 444h-447h isochheader Reserved spd descriptorAddress 0 channelNum event code channelNum event code IsochRx2ContextMatch Register sync RSVD RSVD tag0 cyclematch tag1 1 Z tag1SyncFilter 450h-453h tag2 2 active tag0 tag1 tag2 tag3 sync 434h-43Fh tag3 3 IsochRx1ContextMatch Register cyclematch Revision 1.0 4 Z tag1SyncFilter 430h-433h 454h-45Fh 5 active tag0 tag1 tag2 tag3 7 sync 414h-41Fh bufferFill 8 IsochRx0ContextMatch Register cyclematch isochheader 9 tag1SyncFilter 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 RSVD Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) channelNum Reserved 55 www.national.com Geode™ CS4210 Register Descriptions (Continued) Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 run 46Ch-46Fh IsochRx3CommandPtr Register 470h-473h IsochRx3ContextMatch Register dead RSVD Reserved spd RSVD sync RSVD 480h-483h 484h-487h IsochRx4ContextControl Set Register IsochRx4ContextControl Clear Register RSVD run 488h-48Bh Reserved 48Ch-48Fh IsochRx4CommandPtr Register dead RSVD wake RSVD multiChanmode CycleMAtchEnable Reserved bufferFill 474h-47Fh isochheader spd descriptorAddress 0 event code channelNum event code IsochRx4ContextMatch Register sync RSVD RSVD Reserved 4A0h-4A3h 4A4h-4A7h IsochRx5ContextControl Set Register IsochRx5ContextControl Clear Register RSVD 4A8h-4ABh Reserved 4ACh-4AFh IsochRx5CommandPtr Register descriptorAddress www.national.com 56 dead RSVD wake RSVD run multiChanmode 494h-49Fh spd channelNum event code active tag0 cyclematch tag1 1 Z tag1SyncFilter 490h-493h CycleMAtchEnable 2 active tag0 tag1 tag2 tag3 cyclematch tag2 3 Z tag1SyncFilter descriptorAddress tag3 4 active RSVD wake RSVD 468h-46Bh bufferFill 5 IsochRx3ContextControl Set Register IsochRx3ContextControl Clear Register multiChanmode CycleMAtchEnable bufferFill isochheader 460h-463h 464h-467h isochheader Geode™ CS4210 Register Descriptions (Continued) Z Revision 1.0 4B0h-4B3h RSVD Reserved 4C0h-4C3h 4C4h-4C7h IsochRx6ContextControl Set Register IsochRx6ContextControl Clear Register RSVD run 4C8h-4CBh Reserved 4CCh-4CFh IsochRx6CommandPtr Register dead RSVD wake RSVD multiChanmode CycleMAtchEnable 6 spd descriptorAddress RSVD RSVD RSVD 4E8h-4EBh Reserved 4ECh-4EFh IsochRx6CommandPtr Register dead run RSVD wake RSVD multiChanmode CycleMAtchEnable IsochRx7ContextControl Set Register IsochRx7ContextControl Clear Register bufferFill 4E0h-4E3h 4E4h-4E7h isochheader Reserved spd descriptorAddress 0 channelNum event code channelNum event code IsochRx7ContextMatch Register sync RSVD RSVD tag0 cyclematch tag1 1 Z tag1SyncFilter 4F0h-4F3h tag2 2 active tag0 tag1 tag2 tag3 sync 4D4h-4DFh tag3 3 IsochRx6ContextMatch Register cyclematch Revision 1.0 4 Z tag1SyncFilter 4D0h-4D3h 4F4h-4FFh 5 active tag0 tag1 tag2 tag3 7 sync 4B4h-4BFh bufferFill 8 IsochRx5ContextMatch Register cyclematch isochheader 9 tag1SyncFilter 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 RSVD Table 4-8. OHCI Configuration Register Map/Summary: BAR0+Offset xxh (Continued) channelNum Reserved 57 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.1 Version Register The Version register (Table 4-9) contains a 32-bit value which indicates the version and capabilities of the interface. The register is expected to be used to indicate the level of functionality present in the CS4210. address, software sets GUIDROM.addrReset to one. Once software detects that GUIDROM.addrReset is zero, indicating that the reset has completed, then software may set GUIDROM.rdStart to read a byte. Upon the completion of each read, the CS4210 places the read byte into GUIDROM.rdData, advances the GUID ROM address by one byte to set up for the next read, and clears GUIDROM.rdStart to 0 to indicate to software that the requested byte has been read. 4.4.2 GUIDROM Register The Global Unique ID ROM register (Table 4-10) is used to access the GUID ROM. To initialize the GUID ROM read Table 4-9. BAR0+Offset 00h: Version Register Bit Name Access Reset Description 31:25 RSVD -- 0 24 GUID_ROM R N/A Reserved Global Unique ID ROM: The third and fourth quadlets of the Bus_Info_Block are automatically loaded on hardware reset. 23:16 version R 01h Major Version: This field contains the BCD encoded value representing the major version of the highest numbered 1394 OpenHCI specification with which the CS4210 is compliant. 15:8 RSVD -- 0 Reserved 7:0 revision R 0 Minor Version: This field contains the BCD encoded value representing the minor version of the highest numbered 1394 OpenHCI specification with which the CS4210 is compliant. Table 4-10. BAR0+Offset 04h: GUID ROM Register Bit Name Access Reset 31 addrReset RSU 0 Description Address Reset: Software sets this bit to one to reset the GUID ROM address to zero. When the CS4210 completes the reset, it clears addrReset to zero. Upon resetting the GUID ROM address, the CS4210 does not automatically fill rdData with the data from byte address 0. 30:26 RSVD -- 0 Reserved 25 rdStart RSU 0 Read Start: A read of the currently addressed GUID ROM byte is started on the transition of this bit from a zero to a one. When the CS4210 completes the read, it clears rdStart to zero and advances the GUID ROM byte address by one byte. Reserved 24 RSVD -- 0 23:16 rdData RU Undef 15:0 RSVD -- 0 www.national.com Read Data: The data read from the GUID ROM. Reserved 58 Revision 1.0 4.4.3 ATRetries Register The ATRetries register (Table 4-11) holds the number of times the CS4210 attempts to do a retry for asynchronous DMA request transmit and for asynchronous physical and DMA response transmit. A packet may only be retried when a “busy” acknowledge or ack_data_error is received from the target node, including ack_data_error’s resulting from FIFO underflows. A packet is not retried under any other circumstance, including receipt of evt_missing_ack. Table 4-11. BAR0+Offset 08h: ATRetries Register Bit Name Access Reset 31:29 secondLimit R 0 28:16 cycleLimit R 0 15:11 maxPhysRespRetries RW Undef Description Second Limit: Not implemented. Cycle Limit: Not implemented. Maximum Physical Response Retries: This field tells the response unit within the RDMA module how many times to attempt to retry the transmit operation for the response packet. Note that this value is used only for responses to physical requests. If the retry count expires for a physical response, the packet is discarded by the CS4210. Software is not notified. 10:8 RSVD -- 0 7:4 maxATRespRetries RW Undef Maximum AT Physical Response Retries: This field tells the asynchronous transmit response unit within the ATDMA module how many times to attempt to retry the transmit operation for a software transmitted (non-physical) asynchronous response packet. 3:0 maxATReqRetries RW Undef Maximum AT Request Retries: This field tells the asynchronous transmit request unit within the ATDMA how many times to attempt to retry the transmit operation for an asynchronous request packet. Revision 1.0 Reserved 59 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.4 Autonomous CSR Resources The CS4210 implements a number of autonomous CSR resources. In particular the 1394 compare-swap bus management registers are implemented in hardware, as is the config ROM header, the Bus_Info_Block and access to the first 1 KB of the configuration ROM. The DMA units handle external 1394 bus requests to these resources automatically. The serial bus registers shown in Table 4-12 manage this function for the local host. 1394 requires certain 1394 bus management resource registers be accessible only via “quadlet read” and “quadlet lock” (compare-and-swap) transactions, otherwise ack_type_error is sent. These special bus management resource registers are implemented internal to the CS4210 to allow atomic compare-and-swap access from either the host system or from the 1394 bus. for the generated lock response, IntEvent.lockRespErr (refer to Table 4-26 on page 70) is triggered. To access these bus management resource registers from the host, the registers shown in Table 4-13 are used. To access these bus management resource registers from the host bus, first load the CSRReadData register with the new data value to be loaded into the appropriate resource. Then load the CSRCompareData register with the expected value. Finally, write the CSRControl register with the selector value of the resource. A write to the CSRControl register initiates a compare-and-swap operation on the selected resource. When the compare-and-swap operation is complete, the CSRControl register csrDone bit is set, and the CSRReadData register contains the value of the selected resource prior to the host initiated compare-and-swap operation. Note that an arbitrary update of these resources cannot be done. Only compare-and-swap operations can be used to modify the contents of these internal resource registers. When these serial bus management resource registers are accessed from the 1394 bus, the atomic compare-andswap transaction is autonomous, without software intervention. If ack_complete is not received to end the transaction Table 4-12. Serial Bus Registers csrSel Bits (BAR0+Offset 14h[1:0] CSR Address Description 1394-1995 Section # Reset (Hardware or Bus Reset) 03Fh FFFF_F000_021Ch 00 BUS_MANAGER_ID 8.3.2.3.6 FFFF_F000_0220h 01 BANDWIDTH_AVAILABLE 8.3.2.3.7 1333h FFFF_F000_0224h 10 CHANNELS_AVAILABLE_HI 8.3.2.3.8 FFFF_FFFFh FFFF_F000_0228h 11 CHANNELS_AVAILABLE_LO 8.3.2.3.8 FFFF_FFFFh Table 4-13. CSR Registers Bit Name Access Reset csrData RWU Undef csrCompare RW Undef RU 1 Control/Status Register Done: This bit is set when a compare-swap operation is completed. It is reset whenever this register is written. Reserved BAR0+Offset 0Ch 31:0 CSRReadData Register BAR0+Offset 10h 31:0 Description Control/Status Register Read Data: At start of operation, the data to be stored if the compare is successful. CSRCompareData Register BAR0+Offset 14h Control/Status Register Compare: The data to be compared with the existing value of the CSR resource. CSRControl Register 31 csrDone 30:2 RSVD -- 0 1:0 csrSel RW Undef Control/Status Register Resource Selection: 00 = BUS_MANAGER_ID 01 = BANDWIDTH_AVAILABLE 10 = CHANNELS_AVAILABLE_HI 11 = CHANNELS_AVAILABLE_LO www.national.com 60 Revision 1.0 4.4.5 Configuration ROM Header Register The configuration ROM header register (Table 4-14) is a 32-bit number that externally maps to the 1st quadlet of the 1394 configuration ROM (1394 address at offset FFFF_F000_0400h). This register is written locally at BAR0+Offset 18h. 4.4.6 Bus Identification Register The Bus Identification register (Table 4-15) is a 32-bit number that externally maps to the first quadlet of the Bus_Info_Block. Table 4-14. BAR0+Offset 18h: ConfigROMhdr Register Bit Name Access Reset 31:24 info_length RWU 00h Description Information Length: IEEE 1394 bus management field. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. 23:!6 crc_length RWU 00h Cyclical Redundancy Check Length: IEEE 1394 bus management field. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. 15:0 rom_crc_value RWU 0000h ROM Cyclical Redundancy Check Value: IEEE 1394 bus management field. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. Table 4-15. BAR0+Offset 1Ch: Bus Identification Register Bit Name Access Reset 31:0 busID R 31333934h Revision 1.0 Description Bus Identification: This 32-bit number externally maps to the first quadlet of the Bus_Info_Block. It contains the constant 31333934h which is the ASCII value for “1394”. 61 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.7 Bus Options Register The Bus Options register (Table 4-16) is a 32-bit number that externally maps to the second quadlet of the Bus_Info_Block. This register is written locally at BAR0+Offset 20h. This register is loaded from the serial EEPROM, if present, which sets the values after a hardware reset. Table 4-16. BAR0+Offset 20h: Bus Options Register Bit Name Access Reset Description 31:27 irmc RW Undef Isochronous Resource Manager Capable: IEEE 1394 bus management field. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. 30 cmc RW Undef Cycle Manager Capable: IEEE 1394 bus management bit. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. 29 isc RW Undef Isochronous Capable: IEEE 1394 bus management bit. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. 28 bmc RW Undef Bus Manager Capable: IEEE 1394 bus management bit. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. 27 pmc RW Undef Power Manager Capable: IEEE 1394 bus management bit. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. 26:24 RSVD -- 0 23:16 cyc_clk_acc RW Undef Reserved Cycle Clock Access: IEEE 1394 bus management field. Must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. 15:12 max_rec RW ** Maximum Received: IEEE 1394 bus management field. Hardware initializes max_rec to 1024 if no serial EEPROM is used or to the value stored for this register in the EEPROM if present. Software may change max_rec, however, this field must be valid at any time the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set to 1. Note that received block write request packets with a length greater than max_rec shall generate an ack_type_error if the request is not handled by the physical response unit, and may generate an ack_type_error otherwise. ** Reset values: For a hardware reset, max_rec is set 1024 or to the value stored in the serial EEPROM, if present. For a soft reset, max_rec is not changed. 11:8 RSVD -- 0 7:6 g RW Undef Reserved Generation Counter: This field increments if any portion of configuration ROM has changed since the prior bus reset. 5:3 RSVD -- 0 Reserved 2:0 link_spd RWU RU ** Link Speed: 000 = 100 Mbits/sec; 001 = 200 Mbits/sec; 010 = 400 Mbits/ sec; all other values are reserved. **On a hardware reset, link_spd is set 010 (400 Mbits/sec) or to the value stored in the serial EEPROM, if present. If the link_spd write protect in the nscControl register (BAR1+Offset 00h[12]) is not set, software is permitted to change link_spd to a lower value, which causes the link to reject packets arriving at higher speeds. **On a software reset, the value of link_spd is undefined. www.national.com 62 Revision 1.0 4.4.8 Global Unique ID Register The Global Unique ID (GUID) (Table 4-17) is a 64-bit number that externally maps to the third and fourth quadlets of the Bus_Info_Block. The GUID is contained in the two 32bit registers, GUIDHi and GUIDLo, BAR0+Offset 24h-28h. The vendor ID is obtained from the IEEE Registration Authority Committee (RAC). A company does not need to obtain a vendor ID if it has been previously assign an IEEE 48-bit Globally Assigned Address Block or an IEEEassigned Organizationally Unique Identifier for use in network applications. to the start address of the 1394 configuration ROM for this node. Only quadlet reads to the first 1 KB of the configuration ROM map to system bus space, all other transactions to this space are rejected with a 1394 “ack_type_error”. Since the low order 10 bits of this address are reserved and assumed to be zero, the system address for the configuration ROM must start on a 1 KB boundary. Note that the first five quadlets of the 1394 configuration ROM space are mapped to the configuration ROM header and the Bus_Info_Block, and so are handled directly by the CS4210. This means that the first five quadlets addressed by the configuration ROM mapping register are not used. Software should ensure this address is valid before setting HCControl.linkEnable (BAR0+Offset 50h[17]) to one. 4.4.9 Configuration ROM Mapping Register The Configuration ROM Mapping register (Table 4-18) contains the start address within system bus space that maps Table 4-17. GUID Register Bit Name Access Reset 31:8 node_vendor_ID RW ** 7:0 chip_ID_Hi RW BAR0+Offset 24h GUIDHi Register Vendor ID Code: IEEE 1394 bus management field. Must be set by firmware or hardware before the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. Chip Identification High: The upper 8 bits of the chip ID. IEEE 1394 bus management field. Must be set by firmware or hardware before the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. BAR0+Offset 28h 31:0 Description GUIDLo Register chip_ID_Lo RW ** Chip Identification Low: The lower 32 bits of the chip ID. IEEE 1394 bus management field. Must be set by firmware or hardware before the HCControl.linkEnable bit (BAR0+Offset 50h[17]) is set. **The Global Unique ID (GUID) register is reset to 0 after a host power (hardware) reset. A value of 0 is an illegal value. This register is not affected by a software reset. The GUID register is written only once after host power reset, by either: 1) an autonomous load operation from a local, un-modifiable such as the serial EEPROM or local parallel ROM, or 2) a single host write to each field performed only by firmware that is always executed on a hardware reset which affects the CS4210. This firmware, as well as the GUID value that is loaded, may not be modifiable by any user action. After one of these load mechanisms has executed, the GUID register is read-only. Table 4-18. BAR0+Offset 34h: ConfigROMMap Register Bit Name Access Reset Description 31:10 configROMaddr RW Undef Configuration ROM Address: If a quadlet read request to 1394 offset FFFF_F000_0400h through offset FFFF_F000_07FFh is received, then the low order 10 bits of the offset are added to this register to determine the host memory address of the returned quadlet. 9:0 RSVD -- 0 Revision 1.0 Reserved 63 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.10 PostedWriteAddress Register The PostedWriteAddress register (Table 4-19) is a 64-bit number which indicates the bus and node numbers (source ID) of the node that issued the write that failed, and the address that node attempted to access. The PostedWriteAddress is contained in two 32-bit registers, PostedWriteAddressHi and PostedWriteAddressLo. The IntEvent.PostedWriteErr bit (BAR0+Offset 80h[8]) allows hardware to generate an interrupt when a write fails. algorithm when the posted write error interrupt is encountered: 1) Read the PostedWriteAddressHi.offsetHi field. 2) Read the PostedWriteAddressLo.offsetLo field. 3) Clear the IntEvent.PostedWriteError bit (BAR0+Offset 80h[8]). This guarantees that software receives all information it requires about the first posted write, allowing another interrupt to be generated for future posted writes, and simplifies the CS4210 hardware. The CS4210 does not monitor that all three events occur before it moves to the next item in the queue. It considers the information read once it sees the IntEvent.PostedWriteError bit (BAR0+Offset 80h[8]) cleared to 0. The PostedWriteAddress register points to a queue in the CS4210. This queue is accessed by software through the PostedWriteAddress register. When a posted write fails, its address and node’s source ID are placed in this queue, and the interrupt is generated. In addition, that packet is removed from the FIFO. By removing the packet from the FIFO, the CS4210 is not blocked from performing future transactions on the 1394 and host buses. When software reads from these registers, that entry is removed from the queue, the next address and source ID are placed at the head of the queue, and another interrupt is generated. When the queue is empty, the CS4210 stops generating interrupts. In order to guarantee the accuracy of the Posted Write error registers, software must perform the following 4.4.11 Vendor ID Register The Vendor ID register holds the company ID of National Semiconductor Corporation indicating that additional registers have been specified in the CS4210. Table 4-19. PostedWriteAddress Register Bit Name Access BAR0+Offset 38h 31:0 Reset Description PostedWriteAddressLo Register offsetLo RU BAR0+Offset 3Ch Undef Offset Low: The low 32-bits of the 1394 destination offset of the write request that failed. PostedWriteAddressHi Register 31:16 sourceID RU Undef Source ID: The busNumber and nodeNumber of the node that issued the write request that failed. 15:0 offsetHi RU Undef Offset High: The upper 16-bits of the 1394 destination offset of the write request that failed. Table 4-20. BAR0+Offset 40h: Vendor ID Register Bit Name Access Reset 31:24 vendorUnique R 0 23:0 vendorCompanyID R 80017h www.national.com Description Vendor Unique: 0h Vendor Company Identification: The company ID National Semiconductor Corporation of 80017h. 64 Revision 1.0 behavior: a one bit written to HCControl Set causes the corresponding bit in the HCControl register to be set, while a zero bit leaves the corresponding bit in the HCControl register unaffected. On the other hand, a one bit written to HCControl Clear causes the corresponding bit in the HCControl Set register to be cleared, while a zero bit leaves the corresponding bit in the HCControl Set register unaffected. 4.4.12 HCControl Register The HCControl register (Table 4-21) provides flags for controlling the CS4210. There are two addresses for this register: 1) BAR0+Offset 50h: HCControl Set 2) BAR0+Offset 54h: HCControl Clear On read, both addresses return the contents of the control register. For writes, the two addresses have different Table 4-21. BAR0+Offset 50h (Set) and 54h (Clear): HCControl Register Bit Name Access Reset Description 31 RSVD -- 0 30 noByteSwapData RSC Undef Reserved 29:24 RSVD -- 0 Reserved 23 programPhyEnable RC 1 Program PHY Enable: This bit informs upper-level generic software (e.g., OHCI device driver) if lower-level implementation specific software (e.g., BIOS or Open Firmware) has consistently configured P1394a enhancements in the CS4210 and CS4103. If the implementation does not support P1394a enhancements, lower-level implementation specific software must clear this bit. No Byte Swap Data: This bit is used to control whether physical accesses to locations outside the CS4210 itself as well as any other DMA data accesses should be swapped or not. When 0, data quadlets are sent/ received in little endian order. When 1, data quadlets are sent/received in big endian order. See Section 4.4.12.1 "noByteSwapData" on page 66 for further information. Software should change this bit only when linkEnable (bit 17) is 0, otherwise unspecified behavior results. When 1 and while linkEnable (bit 17) is 0, generic software is responsible for configuring the P1394a enhancements within the CS4103 and the aPhyEnhanceEnable bit within the CS4210 Link in a consistent manner. When 0, generic software may not modify the P1394a enhancement configuration in either the CS4210 or CS4103 and cannot interpret the setting of aPhyEnhanceEnable. A soft reset and a bus reset do not affect this bit. 22 aPhyEnhanceEnable RSC 0 A PHY Enhancement Enable: When the programPhyEnable bit is 1, this bit is used by generic, implementation independent software (e.g., OHCI device driver) to enable the CS4210 Link to use all of P1394a enhancements. Generic software can only modify this bit when the programPhyEnable bit is 1 and the linkEnable (bit 17) bit is 0. This bit is meaningless to software when the programPhyEnable bit is 0. When 0, none of the P1394a enhancements are enabled within the Link. When 1, the set of all P1394a enhancements is enabled within the Link. A soft reset and a bus reset do not affect this bit. See Section 4.4.12.2 "programPhyEnable and aPhyEnhanceEnable" on page 67 for more information. 21:20 RSVD -- 0 Reserved 19 LPS RS 0 Link Power Status: Software must set LPS to 1 to permit CS4210/CS4103 communication. Once set, the link can use LREQs to perform CS4103 reads and writes. An LPS value of 0 prevents CS4210/CS4103 communication. In this state, the only accessible CS4210 registers are Version, VendorID, HCControl, GUID_ROM, GUIDHi and GUIDLo. Access to other registers is not defined. Hardware and software resets clear LPS to 0. Software shall not clear LPS. See the Section 4.4.12.3 "LPS and linkEnable" on page 67 for more information. Revision 1.0 65 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) Table 4-21. BAR0+Offset 50h (Set) and 54h (Clear): HCControl Register (Continued) Bit Name Access Reset Description 18 postedWriteEnable RSC Undef Posted Write Enable: This bit is used to enable (1) or disable (0) physical posted writes. When disabled (0), physical writes are handled but are posted and instead are ack’ed with ack_pending. Software should change this bit only when linkEnable (bit 17) is 0, otherwise unspecified behavior results. See Section 3.6 "Physical Requests" on page 26 for information about posted writes. 17 linkEnable RSU 0 Link Enable: Software must set this bit to 1 when the system is ready to begin operation and then force a bus reset. This bit is necessary to keep other nodes from sending transactions before the local system is ready. When this bit is clear the CS4210 is logically and immediately disconnected from the 1394 bus. The link will not process or interpret any packets received from the CS4103, nor will it generate any bus requests. However, the link will access CS4103 registers via the CS4103 control register. This bit is cleared to 0 by a hardware reset or software reset, and must not be cleared by software. Software must not set the linkEnable bit until the Configuration ROM mapping register (Section 4.4.9 on page 63) is valid. 16 softReset RSU ** Soft Reset: When set to 1, the CS4210’s state is reset, all FIFO’s are flushed and all CS4210 OHCI registers are set to their hardware reset values unless otherwise specified. Registers outside of the OpenHCI realm (i.e., PCI and NSC defined registers) are not affected. **The read value of this bit is 1 while a soft reset or a hard reset is in progress. The read value of this bit is 0 when neither a soft reset nor hard reset are in progress. Software can use the value of this bit to determine when a reset has completed and the CS4210 is safe to operate. 15:0 RSVD -- 0 Reserved 4.4.12.1 noByteSwapData The 1394 bus is quadlet based big endian. By convention, when quadlets are sent in big endian order, the leftmost byte (bits [31:24]) of a quadlet is sent first. When sent in little endian order, the right most byte (bits [7:0]) is sent first with the leftmost bit of each byte sent first. 1) Any data quadlet covered by data CRC (tcodes 1h, 7h, 9h, Ah, and Bh). 2) The data quadlet in a quadlet write request (tcode 0h). 3) The data quadlet in a quadlet read response (tcode 6h). When the CS4210 sends/receives a packet, the header information is always sent/received in big endian order (leftmost byte first). Header information is composed of a sequence of quadlets which is invariant over big and little endian system. Since the cycle_time is self contained within the CS4210, it is never byte-swapped regardless of the setting of the noByteSwapData bit. The data in a PHY packet (identified internally with tcode Eh) is not byte swapped for send or receive. When the HCControl.noByteSwapData bit is not set, data quadlets are sent/received in little endian order and when HCControl.noByteSwapData is set, data quadlets are sent/ received in big endian order. The data quadlets as classified by the OHCI transaction codes (tcodes) that are subject to swap are: www.national.com Note: 66 Due to some confusion regarding this bit, an explanation and some examples are available on the OpenHCI FTP site. Revision 1.0 4.4.12.2 programPhyEnable and aPhyEnhanceEnable After a hardware or software reset, system software must ensure that the CS4210 and the CS4103 are set to a consistent, compatible set of P1394a enhancements. The programPhyEnable and aPhyEnhanceEnable bits are provided to enable software to accomplish this task. Since different levels of software may be responsible for ensuring this setup, the programPhyEnable bit is defined to allow communication between implementation specific lowerlevel software (e.g., BIOS or Open Firmware) and generic, implementation independent upper-level software (e.g., OHCI device driver). If generic software reads this bit as a 1, it is responsible for configuring the P1394a enhancements in both the CS4210 and CS4103 in a consistent manner (either all enhancements enabled or all enhancements disabled). A 0 value for this bit informs the upperlevel system software that no further changes to the P1394a configurations of the CS4210 and CS4103 are permitted since either: 1) Lower-level software has previously performed initialization appropriate to the CS4210 capabilities, or 2) The link has hardwired P1394a capabilities to match the CS4103. Note that this bit is only a software flag and does not control any CS4210 functionality. using any P1394a enhancements and is appropriate when software has disabled all of the enhancements within the CS4103. Note that generic software must not attempt to modify or interpret the setting of the aPhyEnhanceEnable bit if programPhyEnable contains a 0. The aPhyEnhanceEnable bit is read/set/clear and it resets to 0 for default compatibility with legacy PHYs. These bits are accessible from the nscControl register (BAR1+Offset 00h[14,13]). The aPhyEnhanceEnable bit can be initialized with the serial EEPROM. 4.4.12.3 LPS and linkEnable There are three basic tasks and ensuing requirements with respect to the Phy-Link interface: The programPhyEnable bit may be read-only, returning a zero value, if upper-level software is not involved in the configuration of P1394a enhancements for the CS4210 and CS4103. This is appropriate when the CS4210 and CS4103 are hardwired with compatible settings or when lower-level software consistently configures both the CS4210 and CS4103. To allow the possibility for upperlevel software control of P1394a enhancements, programPhyEnable should be implemented as read/clear with a hardware reset value of 1. Software should clear programPhyEnable once the CS4210 and CS4103 have been programmed consistently by either lower-level or upper-level software. When programPhyEnable is set to 1, the aPhyEnhanceEnable bit allows generic software to enable or disable all P1394a enhancements within the CS4210 Link. A value of 1 for aPhyEnhanceEnable configures the Link to use all P1394a enhancements and is appropriate when software has enabled all of the enhancements within the CS4103. Likewise, a value of 0 prevents the Link from 1) Bootstrap of Open HCI. This requires a mechanism to configure the CS4210 and CS4103 prior to receiving any packets or generating any bus requests. 2) Recovery from a hung system. This requires a mechanism which places OpenHCI in a near pre-bootstrap condition, and allows the CS4210 and CS4103 to get back into sync if required. 3) Power Management via Suspend/Resume This requires a mechanism to inform the CS4103 that Phy-Link communication is no longer required and the CS4103 can suspend itself if no active ports remain. To achieve proper behavior in satisfying these requirements, software shall always assert the signals in the following sequence: LPS, then linkEnable, then any other individual context enables or runs. The CS4210 behavior when violating this order is undefined and can produce unreliable behavior. Table 4-22 illustrates the progressive functionality as these signals are asserted. Following a hardware or software reset, LPS and linkEnable are Off as shown in Step a (in Table 4-22). Software proceeds to enable the link power status (b) and when SCLK has started, software can configure the CS4210 and CS4103 registers as listed in Step c (e.g., Self-ID receive DMA registers). Setting linkEnable in step d enables some DMA function, and asserting contextControl.run (e) for the CS4210 contexts then yields full functionality. Table 4-22. LPS and linkEnable Assertion Step LPS (BAR0+Offset 50h[19]) linkEnable (BAR0+Offset 50h[17]) contextControl.run a Off Off Off Initial State b On Off Off Allows SCLK to start Sequence Comments c On Off Off Config Phy-Link registers d On On Off Initiate Bus Reset e On On Off Physical DMA/Cycle Starts Okay f On On On Normal Operation Revision 1.0 67 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.13 Self-ID Buffer Pointer Register The Self-ID Buffer Pointer register (Table 4-23) points to the buffer the Self-ID packets are DMA’ed into during bus initialization. 4.4.14 Self-ID Count Register The Self-ID Count register (Table 4-24) keeps a count of the number of times the bus Self-ID process has occurred, flags Self-ID packet errors and keeps a count of the amount of Self-ID data in the Self-ID buffer. Table 4-23. BAR0+Offset 64h: Self-ID Buffer Pointer Register Bit Name Access Reset Description 31:11 selfIDBufferPtr RW Undef Self-ID Buffer Pointer: Contains the 2 KB aligned base address of the buffer in host memory where received Self-ID packets are stored. The contents of this field are undefined after a chip reset. 10:0 RSVD -- 0 Reserved Table 4-24. BAR0+Offset 68h: Self-ID Count Register Bit Name Access Reset Description 31 selfIDError RU Undef Self-ID Error: When this bit is one, an error was detected during the most recent Self-ID packet reception. The contents of the Self-ID buffer are undefined. This bit is cleared after a Self-ID reception in which no errors are detected. Note that an error can be a hardware error or a host bus write error. 30:24 RSVD -- 0 23:16 selfIDGeneration RU Undef 15:13 RSVD -- 0 12:2 2selfIDSize RU Undef 1:0 RSVD -- 0 www.national.com Reserved Self-ID Generation: The value in this field increments each time a bus reset is detected. This field rolls over to 0 after reaching 255. Reserved Quadlet Self-ID Size: This field indicates the number of quadlets that have been written into the Self-ID buffer for the current Self-ID Generation. This includes the header quadlet and the Self-ID data. This field is cleared to zero as soon as a bus reset is detected. Reserved 68 Revision 1.0 4.4.15 IRMultiChanMask Registers An isochronous channel mask is used to enable packet receives from up to 64 specified isochronous data channels. Software enables receives for any number of isochronous channels by writing ones to the corresponding bits in the: 1) BAR0+Offset 70h: IRMultiChanMaskHi Set 2) BAR0+Offset 78h: IRMultiChanMaskLo Set To disable receives for any isochronous channels, software writes ones to the corresponding bits in the: 1) BAR0+Offset 74h: IRMultiChanMaskHi Clear 2) BAR0+Offset 7Ch: IRMultiChanMaskLo Clear A read of each IRMultiChanMask register shows which channels are enabled; a one for enabled, a zero for disabled. The IRMultiChanMask registers are not changed by a bus reset. The state of these registers is undefined following a hard reset or soft reset. Table 4-25. IRMultChanMask Registers Bit Name Access IsochChannel[63:32] RSC BAR0+Offset 70h 31:0 IsochChannel[63:32] IsochChannel[31:0] RSC Revision 1.0 IsochChannel[31:0] Isochronous Channels [63:32]: Bits [31:0] correspond to channels [63:32]. Set to one to enable receives to the corresponding channel. Undef Isochronous Channels [63:32]: Bits [31:0] correspond to channels [63:32]. Set to one to disable receives to the corresponding channel. IRMultiChanMaskLo Set Register RSC BAR0+Offset 7Ch 31:0 Undef IRMultiChanMaskHi Clear Register BAR0+Offset 78h 31:0 Description IRMultiChanMaskHi Set Register BAR0+Offset 74h 31:0 Reset Undef Isochronous Channels [31:0]: Bits [31:0] correspond to channels [31:0]. Set to one to enable receives to the corresponding channel. IRMultiChanMaskLo Clear Register RSC Undef Isochronous Channels [31:0]: Bits [31:0] correspond to channels [31:0]. Set to one to disable receives to the corresponding channel. 69 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.16 Interrupts The CS4210 reports two classes of interrupts to the host: DMA interrupts and device interrupts. DMA interrupts are generated when DMA transfers complete (or are aborted). Device interrupts come directly from the remaining 1394 Open HCI logic. For example, one of these interrupts could be sent in response to the asserting edge of cycleStart, a signal which indicates that a new isochronous cycle has started. A processor interrupt is generated when one or more unmasked bits are set in the IntEvent register. Low-level software responds to the interrupt by reading the IntEvent register, then writing the value read to the IntEvent Clear register. At this point the interrupt request is deasserted (assuming no new interrupt bit has been set). Software can proceed to process the reported interrupts in whatever priority order it chooses, and is free to re-enable interrupts as soon as the IntEvent Clear register is written. The CS4210 contains two primary 32-bit registers to report and control interrupts: IntEvent and IntMask. Both registers have two addresses: a “Set” address and a “Clear” address. For a write to either register, a “one” bit written to the “Set” address causes the corresponding bit in the register to be set (excluding bits which are read-only), while a “one” bit written to the “Clear” address causes the corresponding bit to be cleared. For both addresses, writing a “zero” bit has no effect on the corresponding bit in the register. In addition, the CS4210 contains four secondary 32-bit registers to report and control interrupts for isochronous transmit and receive contexts. Each register has two addresses: a “Set” address and a “Clear” address. 4.4.16.1 IntEvent Register This register reflects the state of the various interrupt sources from the 1394 Open HCI. The interrupt bits are set by an asserting edge of the corresponding interrupt signal, or by software by writing a one to the corresponding bit in the IntEvent Set register. They are cleared by writing a one to the corresponding bit in the IntEvent Clear register. The IntEvent register contains the actual interrupt request bits. Each of these bits corresponds to either a DMA completion event, or a transition on a device interrupt line. The IntMask register is ANDed with the IntEvent register to enable selected bits to generate processor interrupts. Software writes to the IntEvent Clear register to clear interrupt conditions reported in the IntEvent register. Reading the IntEvent Set register (BAR0+Offset 80h) returns the current state of the IntEvent register. Reading the IntEvent Clear register (BAR0+Offset 84h) returns the masked version of the IntEvent register (IntEvent and IntMask). Table 4-26. BAR0+Offset 80h (Set) and 84h (Clear): IntEvent Register Bit Name Access Reset 31:27 RSVD -- 0 26 phyRegRcvd RSCU Undef PHY Register Received: The CS4210 has received a PHY register data byte which can be read from the PHY control register (see Section 4.4.20 "PHYControl Register" on page 77). 25 cycleTooLong RSCU Undef Cycle Too Long: If LinkControl.cycleMaster (BAR0+Offset E0h[21] is set, this indicates that an isochronous cycle lasted longer than the allotted time. For implementations with a discrete cycleTooLong timer, hardware is expected to trigger this event no less than 115 seconds and no more than 120 seconds after sending a cycle start packet unless a subaction gap or bus reset indication is first observed. LinkControl.cycleMaster is cleared by this event. 24 unrecoverableError RSCU Undef Unrecoverable Error: This event occurs when the CS4210 encounters any error that forces it to stop operations on any or all of its subunits. For example, when a DMA context sets its contextControl.dead bit. While unrecoverableError is set, all normal interrupts for the context(s) that caused this interrupt are blocked from being set. 23 cycleInconsistent RSC Undef Cycle Inconsistent: A cycle start was received that had an isochronous cycleTimer.seconds and isochronous cycleTimer.count different from the value in the IsochCycleTimer register (BAR0+Offset F0h, see Section 4.4.21 "IsochCycleTimer Register" on page 77). The CS4210 indicates a cycleInconsistent if a host initiated write changes the cycleSeconds or cycleCount fields of the cycleTimer register. For the effect of this condition on isochronous transmit and receive, refer to Section 3.8.3 "Isochronous Transmit and Receive" on page 30. 22 cycleLost RSCU Undef Cycle Lost: A lost cycle is indicated when no cycle_start packet is sent/ received between two successive cycleSynch events. 21 cycle64Seconds RSCU Undef Cycle 64 Seconds: Indicates that the 7th bit of the cycle second counter has changed. www.national.com Description Reserved 70 Revision 1.0 Table 4-26. BAR0+Offset 80h (Set) and 84h (Clear): IntEvent Register (Continued) Bit Name Access Reset Description 20 cycleSynch RSCU Undef Cycle Synchronous: Indicates that a new isochronous cycle has started. Set when the low order bit of the internal IsochCycleTimer.cycleCount (BAR0+Offset F0h[24:12]) toggles. 19 phy RSCU Undef Physical Layer: Generated when the CS4103 requests an interrupt through a status transfer. 18 RSVD -- 0 17 busReset RSCU Undef Bus Reset: Indicates that the CS4103 has entered bus reset mode. See Section 4.4.16.2 "Bus Reset" on page 72 for information on when to clear this interrupt. 16 selfIDcomplete RSCU Undef Self-ID Complete: A Self-ID packet stream has been received. Is set at the end of the bus initialization process if LinkControl.rcvSelfID (BAR0+Offset E0h[9]) is set. This bit is turned off simultaneously when IntEvent.busReset (bit 17) is turned on. 15:10 RSVD -- 0 9 lockRespErr RSCU Undef Lock Response Error: Indicates that the CS4210 attempted to return a lock response for a lock request to a serial bus register described in Section 4.4.4 "Autonomous CSR Resources" on page 60, but did not receive an ack_complete after exhausting all permissible retries. 8 postedWriteErr RSCU Undef Posted Write Error: Indicates that a host bus error occurred while the CS4210 was trying to write a 1394 write request, which had already been given an ack_complete, into system memory. The 1394 destination offset and sourceID are available in the PostedWriteAddress register described in Section 3.7.7 "Posted Write Error" on page 29. 7 isochRx RU Undef Isochronous Receive DMA interrupt: Indicates that one or more isochronous receive contexts have generated an interrupt. This is not a latched event, it is the OR’ing all bits in (IsochRxIntEvent and IsochRxIntMask). The IsochRxIntEvent register indicates which contexts have interrupted. See Section 4.4.16.6 "IsochRxIntEvent Register" on page 74. 6 isochTx RU Undef Isochronous Transmit DMA interrupt: Indicates that one or more isochronous transmit contexts have generated an interrupt. This is not a latched event, it is the OR’ing all bits in (isochTxIntEvent and isochTxIntMask). The isochTxIntEvent register indicates which contexts have interrupted. See Section 4.4.16.4 "IsochTxIntEvent Register" on page 73. 5 RSPkt RSCU Undef Receive Response Packet: Indicates that a packet was sent to an asynchronous receive response context buffer and the descriptor’s xferStatus and resCount fields have been updated. This differs from ARRS (bit 3) since RSPkt is a per-packet completion indication and ARRS is a per-command descriptor (buffer) completion indication. AR Response buffers may contain more than one packet. 4 RQPkt RSCU Undef Receive Request Packet: Indicates that a packet was sent to an asynchronous receive request context buffer and the descriptor’s xferStatus and resCount fields have been updated. This differs from ARRQ (bit 2) since RQPkt is a per-packet completion indication and ARRQ is a per-command descriptor (buffer) completion indication. AR Request buffers may contain more than one packet. 3 ARRS RSCU Undef Asynchronous Receive Response DMA Interrupt: This bit is conditionally set upon completion of an ARDMA Response context command descriptor. 2 ARRQ RSCU Undef Asynchronous Receive Request DMA Interrupt: This bit is conditionally set upon completion of an ARDMA Request context command descriptor. 1 respTxComplete RSCU Undef Asynchronous Response Transmit DMA Interrupt: This bit is conditionally set upon completion of an ATDMA response OUTPUT_LAST* command. 0 reqTxComplete RSCU Undef Asynchronous Request Transmit DMA Interrupt: This bit is conditionally set upon completion of an ATDMA request OUTPUT_LAST* command. Revision 1.0 Reserved Reserved 71 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.16.2 Bus Reset When a bus reset occurs and the busReset interrupt is set to one, the selfIDComplete (BAR0+Offset 80h[16]) interrupt is simultaneously cleared to 0. The CS4210 prevents software from clearing the busReset interrupt bit during the Self-ID phase of bus initialization. Software must take precautions regarding the asynchronous transmit contexts before clearing this interrupt. Refer to Section 3.8 "Bus Resets" on page 30 for further details. A bit is set in the IntMask register by writing a one to the corresponding bit in the IntMask Set address and cleared by writing a one to the corresponding bit in the IntMask Clear address. If masterIntEnable is 0, all interrupts are disabled regardless of the values of all other bits in the IntMask register. The value of masterIntEnable has no effect on the value returned by reading the IntEvent Clear; even if masterIntEnable is 0, reading IntEvent Clear returns (IntEvent and IntMask) as described earlier in Section 4.4.16 "Interrupts" on page 70. 4.4.16.3 IntMask Register The bits in the IntMask register have the same format as the IntEvent register, with the addition of masterIntEnable (bit 31). A one bit in the IntMask register enables the corresponding IntEvent register bit to generate a processor interrupt. A zero bit in IntMask disables the corresponding IntEvent register bit from generating a processor interrupt. On a reset, the IntMask.masterIntEnable bit (31) is set to 0 and the value of all other bits is undefined. 1) BAR0+Offset 88h: IntMask Set 2) BAR0+Offset 8Ch: IntMask Clear Table 4-27. BAR0+Offset 88h (Set) and 8Ch (Clear): IntMask Register Bit Name Access Reset 31 masterIntEnable RSC 0 30:27 RSVD -- 0 26 phyRegRcvdIntEn RSC Undef 25 cycleTooLongIntEn RSC Undef 24 unrecoverableErrorIntEn RSC Undef 23 cycleInconsistentIntEn RSC Undef 22 cycleLostIntEn RSC Undef 21 cycle64SecondsIntEn RSC Undef 20 cycleSynchIntEn RSC Undef 19 phyIntEn RSC Undef 18 RSVD -- 0 17 busResetIntEn RSC Undef Undef 16 selfIDcompleteIntEn RSC 15:10 RSVD -- 0 9 lockRespErrIntEn RSC Undef 8 postedWriteErrIntEn RSC Undef 7 isochRxIntEn RSC Undef 6 isochTxIntEn RSC Undef 5 RSPktIntEn RSC Undef 4 RQPktIntEn RSC Undef 3 ARRSIntEn RSC Undef 2 ARRQIntEn RSC Undef 1 respTxCompleteIntEn RSC Undef 0 reqTxCompleteIntEn RSC Undef www.national.com Description Master Interrupt Enable: If set, external interrupts are generated in accordance with the IntMask register. If clear, no external interrupts are generated regardless of the IntMask register settings. Interrupt Events: A one bit enables the corresponding IntEvent register bit to generate a processor interrupt. A zero bit disables the corresponding IntEvent register bit from generating a processor interrupt. See Table 4-26 "BAR0+Offset 80h (Set) and 84h (Clear): IntEvent Register" on page 70. 72 Revision 1.0 4.4.16.4 IsochTxIntEvent Register There are two 32-bit registers to report isochronous transmit context interrupts: IsochTxIntEvent and IsochTxIntMask. Both registers are set and clear (Tables 4-28 and 429). For all four addresses, writing a zero bit has no effect on the corresponding bit in the register. of the IsochTxIntEvent register (IsochTxIntEvent and IsochTxIntMask). This IsochTxIntEvent register reflects the interrupt state of the isochronous transmit contexts. An interrupt is generated on behalf of an isochronous transmit context if an OUTPUT_LAST DMA command completes and its “i” field is set to 11b (interrupt always). Upon determining that the IntEvent.IsochTx interrupt has occurred, software can check the IsochTxIntEvent register to determine which context(s) caused the interrupt. The IsochTxIntEvent register contains the actual interrupt request bits. Each of these bits corresponds to a DMA completion event for the indicated isochronous transmit context. The IsochTxIntMask register is ANDed with the IsochTxIntEvent register to enable selected bits to generate processor interrupts. If IsochTxIntMask and IsochTxIntEvent are not zero, then the IntEvent.IsochTxIntn bit is set to one, and if enabled via the IntMask register it generates a processor interrupt. A software write to the IsochTxIntEvent Set register can therefore cause an interrupt (if not otherwise masked). A software write to the IsochTxIntEvent Clear register clears interrupt conditions reported in the IsochTxIntEvent register. 4.4.16.5 IsochTxIntMask Register The bits in the IsochTxIntMask register (Table 4-29) have the same format as the IsochTxIntEvent register. Setting a bit in this register enables the corresponding bit in the IsochTxIntEvent register. Setting a bit in this register is done by setting the bit in the IsochTxIntMask Set register (BAR0+Offset 98h) and cleared by writing a one to the corresponding bit in the IsochTxIntMask Clear register (BAR0+Offset 9Ch). Bits for all unimplemented contexts read as 0’s. Software can use this register to determine which contexts are supported by writing to it with all 1’s, then reading it back. Contexts with a 1 are implemented, and those with a 0 are not. Reading the IsochTxIntEvent Set register returns the current state of the IsochTxIntEvent register. Reading the IsochTxIntEvent Clear register returns the masked version Table 4-28. BAR0+Offset 90h (Set) and 94h (Clear): IsochTxIntEvent Register Bit Name Access Reset 31:8 RSVD -- 0 7 isochTxInt7 RSCU Undef 6 isochTxInt6 5 isochTxInt5 4 isochTxInt4 3 isochTxInt3 2 isochTxInt2 1 isochTxInt1 0 isochTxInt0 Description Reserved Isochronous Transmit Context Interrupt Event: Set to one when the corresponding isochronous transmit context interrupts and the interrupt mask (BAR0+Offset 98h) is enabled. Table 4-29. BAR0+Offset 98h (Set) and 9Ch (Clear): IsochTxIntMask Register Bit Name Access Reset 31:8 RSVD -- 0 7 isochTxIntMask7 RSC Undef 6 isochTxIntMask6 5 isochTxIntMask5 4 isochTxIntMask4 3 isochTxIntMask3 2 isochTxIntMask2 1 isochTxIntMask1 0 isochTxIntMask0 Revision 1.0 Description Reserved Isochronous Transmit Context Interrupt Mask: Set to one enables the corresponding bit in the IsochTxintEvent register (BAR0+Offset 90h). 73 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.16.6 IsochRxIntEvent Register There are two 32-bit registers to report isochronous receive context interrupts: IsochRxIntEvent and IsochRxIntMask. Both registers are set and clear. For all four addresses, writing a “zero” bit has no effect on the corresponding bit in the register. The IsochRxIntEvent register contains the actual interrupt request bits. Each of these bits corresponds to a DMA completion event for the indicated isochronous receive context. The IsochRxIntMask register is ANDed with the IsochRxIntEvent register to enable selected bits to generate processor interrupts. If (IsochRxIntMask and IsochRxIntEvent) are not zero, then the IsochRxIntn bit is set to one, and if enabled via the IntMask register it generates a processor interrupt. A software write to the IsochRxIntEvent Set register can therefore cause an interrupt (if not otherwise masked). A software write to the IsochRxIntEvent Clear register clears interrupt conditions reported in the IsochRxIntEvent register. Reading the IsochRxIntEvent Set register returns the current state of the IsochRxIntEvent register. Reading the IsochRxIntEvent Clear register returns the masked version of the IsochRx- IntEvent register (IsochRxIntEvent and IsochRxIntMask). The IsochRxIntEvent register reflects the interrupt state of the isochronous receive contexts. An interrupt is generated on behalf of an isochronous receive context if a final command of a DMA descriptor block completes and its i bits are set to 11b (interrupt always). Upon determining that the IsochRx interrupt has occurred, software can check the IsochRxIntEvent register to determine which context(s) caused the interrupt. 4.4.16.7 IsochRxIntMask Register The bits in the IsochRxIntMask register have the same format as the IsochRxIntEvent register. Setting a bit in this register enables the corresponding bit in the IsochRxIntMask Set register and is cleared by writing a one to the corresponding bit in the IsochRxIntMask Clear register. Bits for all unimplemented contexts read as 0’s. Software can use this register to determine which contexts are supported by writing to it with all 1’s then reading it back. Contexts with a 1 are implemented, and those with a 0 are not. Table 4-30. BAR0+Offset A0h (Set) and A4h (Clear): IsochRxIntEvent Register Bit Name Access Reset 31:8 RSVD -- 0 7 isochRxInt7 RSC Undef 6 isochRxInt6 5 isochRxInt5 4 isochRxInt4 3 isochRxInt3 2 isochRxInt2 1 isochRxInt1 0 isochRxInt0 Description Reserved Isochronous Receive Contexts Interrupt Event: Set to one when the corresponding isochronous receive context interrupts and the Interrupt Mask is enabled. Table 4-31. BAR0+Offset A8h (Set) and ACh (Clear): IsochRxIntMask Register Bit Name Access Reset 31:8 RSVD -- 0 7 isochRxIntMask7 RSC Undef 6 isochRxIntMask6 5 isochRxIntMask5 4 isochRxIntMask4 3 isochRxIntMask3 2 isochRxIntMask2 1 isochRxIntMask1 0 isochRxIntMask0 www.national.com Description Reserved Isochronous Receive Contexts Interrupt Mask Set: Set to one enables the corresponding bit in the IsochRxIntEvent Register. 74 Revision 1.0 4.4.17 Fairness Control Register This register (Table 4-32) provides a mechanism by which software can direct the CS4210 to transmit multiple asynchronous request packets during a fairness interval as specified in P1394a specification. 4.4.18 LinkControl Register This register (Table 4-33) provides the control flags that enable and configure the link core protocol and controls for the receiver and cycle timer. This register is set (BAR0+Offset E0h) and clear (BAR0+Offset E4h). On read, both addresses return LinkControl. Table 4-32. BAR0+Offset DCh: Fairness Control Register Bit Name Access Reset 31:8 RSVD -- 0 7:0 pri_req RW HW = Undef SW/Bus = N/A Description Reserved Priority Arbitration Request: This field specifies the maximum number of priority arbitration requests for asynchronous request packets that the link is permitted to make to the CS4103 during a fairness interval. A pri_req value of 00h is equivalent to the behavior specified by the IEEE 1394-1995 specification. Table 4-33. BAR0+Offset E0h (Set) and E4h (Clear): LinkControl Register Bit Name Access Reset 32:21 RSVD -- 0 22 cycleSource RSC or R HW = 0 SW = No Change Description Reserved Cycle Source: When one, the cycle timer uses an external source to determine when to increment cycleCount (BAR0+Offset F0h[24:12]). When cycleCount is incremented, cycleOffset (BAR0+Offset F0h[11:0]) is reset to 0. If cycleOffset reaches 3071 before an external event occurs, it remains at 3071 until the external signal is received and is then reset to 0. When the cycleSource bit is zero, the CS4210 rolls the cycle timer over when the timer reaches 3072 cycles of the 24.576 MHz clock (8 kHz). CycleSource has an effect only when cycleMaster (bit 21) is enabled. A hardware reset clears to 0. A software reset has no effect. 21 cycleMaster RSCU Undef Cycle Master: When one and the CS4103 has notified the CS4210 that it is root, the CS4210 generates a cycle start packet every time the cycle timer rolls over, based on the setting of the cycleSource bit (bit 22). When zero, the CS4210 accepts received cycle start packets to maintain synchronization with the node which is sending them. This bit is automatically zeroed when the IntEvent.cycleTooLong event occurs and cannot be set until the IntEvent.cycleTooLong bit (BAR0+Offset 80h[25]) is cleared. 20 cycleTimerEnable RSC Undef Cycle Timer Enable: When one, the cycle timer offset counts cycles of the 24.576 MHz clock and rolls over at the appropriate time based on the settings of the above bits. When zero, the cycle timer offset will not count. 19:11 RSVD -- 0 10 rcvPhyPkt RSC Undef Receive Physical Layer Packet: When one, the receiver accepts incoming CS4103 packets into the AR request context if the AR request context is enabled. This does not control either the receipt of self-identification packets during the Self-ID phase of bus initialization or the queuing of synthesized bus reset packets in the ARDMA Request Context buffer (see Section 3.8 "Bus Resets" on page 30). This does control receipt of any self- identification packets received outside of the Self-ID phase of bus initialization. 9 rcvSelfID RSC Undef Receive Self-ID: When one, the receiver accepts incoming self-identification packets. Before setting this bit to one, software must ensure that the selfIDBufferPtr register bits (BAR0+Offset 64h[31:11]) contains a valid address. 8:0 RSVD -- 0 Revision 1.0 Reserved Reserved 75 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.19 Node ID and Status Register This register contains the CSR address for the node on which this chip resides. The 16-bit combination of busNumber and nodeNumber is referred to as the Node ID. This register is written autonomously and atomically by the CS4210 with the value in CS4103’s base register at Address 00h following the self-identification phase of bus initialization. Although IntEvent.phyRegRcvd (BAR0+Offset 80h[26]) is not set when the contents of CS4103’s base register at Address 00h are written here, software can use the IntEvent.selfIDComplete (BAR0+Offset 80h[16]) interrupt to detect that the self-identification phase has completed and can then check for a new valid Node ID. Table 4-34. BAR0+Offset E8h: Node ID and Status Register Bit Name Access Reset 31 iDValid RU 0 Description ID Valid: This bit indicates whether or not the CS4210 has a valid node number. It is cleared when the bus reset state is detected and set again when the CS4210 receives a new node number from the CS4103. If iDValid is clear, software should not set ContextControl.run for either of the ATDMA contexts (request and response). 30 root RU 0 Root: This bit is set during the bus reset process if the CS4103 is root. 29:28 RSVD -- 0 Reserved 27 CPS RU 0 Cable Power Status: Set if the CS4103 is reporting that cable power status is OK (VP 8V). 26:16 RSVD -- 0 Reserved 15:6 busNumber RWU 3FFh Bus Number: This number is used to identify the specific 1394 bus this node belongs to when multiple 1394-compatible buses are connected via a bridge. This field is set to 3FFh on a bus reset. 5:0 nodeNumber RU Undef Node Number: This number is the physical node number established by the CS4103 during self-identification. It is automatically set to the value received from the CS4103 after the self-identification phase. If the CS4103 sets the nodeNumber to 63, software should not set ContextControl.run for either of the ATDMA contexts (request and response). www.national.com 76 Revision 1.0 4.4.20 PHYControl Register The PHYControl register (Table 4-35) is used to read or write a CS4103 register. To read a register, the address of the register is written to the regAddr field along with a 1 in the rdReg bit. When the read request has been sent to the CS4103 (through the LREQ pin), the rdReg bit is cleared to 0. When the CS4103 returns the register, the rdDone bit transitions to 1 and the IntEvent.phyRegRcvd interrupt (BAR0+Offset 80h[26]) is set. The address of the register received is placed in the rdAddr field and the contents in the rdData field. Software must not issue a read of CS4103 register 0. The most recently available contents of this register is reflected in the NodeID register (see Section 4.4.19 "Node ID and Status Register" on page 76). To write to a CS4103 register, the address of the register is written to the regAddr field, the value to write to the wrData field, and a 1 to the wrReg bit. The wrReg bit is cleared when the write request has been transferred to the CS4103. Software must serialize all CS4103 register reads and writes. Only after the current CS4103 register read or write completes may software issue a different CS4103 register read or write. 4.4.21 IsochCycleTimer Register The IsochCycleTimer register (Table 4-36) is a read/write register that shows the current cycle number and offset. The cycle timer register is split up into three fields. The lower order 12 bits are the cycle offset, the middle 13 bits are the cycle count, and the upper order 7 bits count time in seconds. When the CS4210 is cycle master, this register is transmitted with the cycle start message. When the CS4210 is not the cycle master, this register is loaded with the data field in each incoming cycle start. In the event that the cycle start message is not received, the fields continue incrementing on their own (when cycleTimerEnable is set in the LinkControl register, BAR0+Offset E0h[20]) to maintain a local time reference. Table 4-35. BAR0+Offset ECh: PHYControl Register Bit Name Access Reset Description 31 rdDone RU Undef Read Done: rdDone is cleared to 0 by the CS4210 when either rdReg or wrReg is set to 1. This bit is set to 1 when a register transfer is received from the CS4103. 30:28 RSVD -- 0 27:24 rdAddr RU Undef Read Address: This is the address of the register most recently received from the CS4103. 23:16 rdData RU Undef Read Data: Contains the data read from the CS4103 register at rdAddr. 15 rdReg RWU 0 Read Register: Set rdReg to initiate a read request to a CS4103 register. This bit is cleared when the read request has been sent. The wrReg bit must not be set while the rdReg bit is set. 14 wrReg RWU 0 Write Register: Set wrReg to initiate a write request to a CS4103 register. This bit is cleared when the write request has been sent. The rdReg bit must not be set while the wrReg bit is set. Reserved Reserved 13:12 RSVD -- 0 11:8 regAddr RW Undef Register Address: regAddr is the address of the CS4103 register to be written or read. 7:0 wrData RWU Undef Write Data: This is the contents to be written to a CS4103 register. Ignored for a read. Table 4-36. BAR0+Offset F0h: IsochCycleTimer Register Bit Name Access Reset 31:25 cycleSeconds RWU N/A Cycle Seconds: This field counts seconds (cycleCount rollovers) modulo 128. 24:12 cycleCount RWU N/A Cycle Count: This field counts cycles (cycleOffset rollovers) modulo 8000. 11:0 cycleOffset RWU N/A Cycle Offset: This field counts 24.576 MHz clocks modulo 3072, (i.e., 125 µs). If an external 8 kHz clock configuration is being used, cycleOffset is set to 0 at each tick of the external clock. Revision 1.0 Description 77 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.22 Asynchronous Request Filter Registers The CS4210 allows for selective access to host memory and the Asynchronous Receive Request context so that software can maintain host memory integrity. The selective access is provided by two sets of registers: PhysRequestFilter and AsyncRequestFilter. These registers allow access to physical memory and the AR Request context on a nodeID basis. The request filters are not applied to quadlet read requests directed at the Config ROM (including the ConfigROM header, BusID, Bus Options, and Global Unique ID registers) nor to accesses directed to the isochronous resource management registers. When the link is enabled, access by any node to the first 1K of CSR config ROM is enabled (see Section 4.4.5 "Configuration ROM Header Register" on page 61). The Asynchronous Request Filters do not have any effect on Asynchronous Response packets. When a request is received by the CS4210 from the 1394 bus and that request does not access the first 1K of CSR config ROM on the CS4210, then the sourceID is used to index into the AsyncRequestFilter. If the corresponding bit in the AsyncRequestFilter is set to 0, then requests from that device are not enabled; there is no ack_ sent, and the requests are ignored by the CS4210. If, however, the bit is set to 1, the requests are accepted and processed according to the address of the request and the setting of the PhysicalRequestFilter register (BAR0+Offset 110h, see Section 4.4.23 "Physical Request Filter Registers" on page 79). Requests to offsets above 0000_FFFF_FFFFh, with the exception of offsets handled physically as described in Section 3.6 "Physical Requests" on page 26, are always sent to the Asynchronous Request Receive DMA context. If the AR Request DMA context is not enabled, then the CS4210 ignores the request. These registers are set and clear. If bit asyncReqResourceN is set, then requests with a sourceID of either {3FFh, #N} or {busID, #N} are accepted. If the asyncReqResourceAll bit is set in AsyncRequestFilterHi, requests from all bus nodes including those on the local bus are accepted. Reading the AsyncRequestFilter registers returns their current state. All asyncReqResourceN bits in the AsyncRequestFilter register are cleared to 0 on a 1394 bus reset. Table 4-37. BAR0+Offset 100h (Set) and 104h (Clear): AsyncRequestFilterHi Register Bit Name Access Reset Description 31 asyncReqResourceAll RSCU 0 Asynchronous Requests Resource All: If set to one, all asynchronous requests received by the CS4210 from all bus nodes (including the local bus) are accepted, and the values of all asyncReqResourceN bits are ignored. A bus reset does not affect the value of the asyncReqResourceAll bit. 30:0 asyncReqResourceN RSCU 00h Asynchronous Requests Resource [62:32]: If set to one for local bus node number N, asynchronous requests received by the CS4210 from that node are accepted. All asyncReqResourceN bits are cleared to zero when a bus reset occurs. Table 4-38. BAR0+Offset 108h (Set) and 10Ch (Clear): AsyncRequestFilterLo Register Bit Name Access Reset 31:0 asyncReqResourceN RSCU 00h www.national.com Description Asynchronous Requests Resource [31:0]: If set to one for local bus node number N, asynchronous requests received by the CS4210 from that node are accepted. All asyncReqResourceN bits are cleared to zero when a bus reset occurs. 78 Revision 1.0 4.4.23 Physical Request Filter Registers If an asynchronous request is allowed from a node, and the offset is 0000_FFFF_FFFFh, the sourceID of the request is used as an index into the PhysicalRequestFilter. If the corresponding bit in the PhysicalRequestFilter is set to 0, then the request is forwarded to the Asynchronous Request Receive DMA context. If, however, the bit is set to 1, then the request is sent to the physical response unit. (Note that within the physical range, lock transactions and block transactions with a non-zero extended tcode are always forwarded to the Asynchronous Request Receive DMA context (see Section 3.6 "Physical Requests" on page 26.). This register is set and clear. If bit physReqResourceN is set, then requests with a sourceID of either {3FFh, #n} or {busID, #n} (where n is the node number) are accepted. If the physReqResourceAllBuses bit is set in PhysicalRequestFilterHi, physical requests from any device on any other bus are accepted (bus number other than 3FFh and busID). Physical requests that are rejected by the PhysicalRequestFilter are sent to the AR Request DMA context if the AR Request DMA context is enabled. If it is disabled, then the CS4210 ignores the requests. Reading the PhysicalRequestFilter registers returns their current state. All bits in the PhysicalRequestFilter are set to 0 on a 1394 bus reset. Table 4-39. BAR0+Offset 110h (Set) and 114h (Clear): PhysicalRequestHi Register Bit Name Access Reset Description 31 physReqResourceAllBuses RSCU 0 Asynchronous Physical Requests Resource All Buses: If set to one, all asynchronous physical requests received by the CS4210 from non-local bus nodes are accepted. 30:0 physReqResourceN RSCU 00h Asynchronous Physical Requests Resource [62:32]: If set to one for local bus node number N, then asynchronous physical requests received by the CS4210 from that node are accepted. Table 4-40. BAR0+Offset 118h (Set) and 11Ch (Clear): PhysicalRequestLo Register Bit Name Access Reset 31:0 physReqResourceN RSCU 00h Revision 1.0 Description Asynchronous Physical Requests Resource [31:0]: If set to one for local bus node number N, then asynchronous physical requests received by the CS4210 from that node are accepted. 79 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.24 Asynchronous Request/Response Transmit Each ATDMA context (request and response) has two registers: CommandPtr and ContextControl. CommandPtr is used by software to tell the CS4210 where the DMA context program begins. ContextControl is used by software to control the context’s behavior, and is used by hardware to indicate current status. responding bits in the ContextControl Clear register. It is not possible for software to set some bits and clear others in an atomic operation. A read from either register returns the same value. 4.4.24.2 Async Request Transmit Command Pointer Register Software initializes CommandPtr.descriptorAddress to contain the address of the first descriptor block that the CS4210 accesses when software enables the context by setting ContextControl.run. Software also initializes CommandPtr.Z to indicate the number of descriptors in the first descriptor block. Software only writes to this register when both ContextControl.run and ContextControl.active are zero. 4.4.24.1 Async Request Transmit Context Control Register The ContextControl Set/Clear registers contain bits that control options, operational state and status for the DMA context. Software can set selected bits by writing ones to the corresponding bits in the ContextControl Set register. Software can clear selected bits by writing ones to the cor- Table 4-41. BAR0+Offset 180h (Set) and 184h (Clear): AsyncReqTxContextControl Register Bit Name Access Reset 31:16 15 14:13 RSVD 12 wake 11 dead 10 active RSVD -- 0 Reserved run RSCU 0 Run: The run bit is set by software to enable descriptor processing for a context and cleared by software to stop descriptor processing. The CS4210 only clears this bit on a hardware or software reset. See Section 3.3.2.1 "ContextControl.run" on page 21 for details. -- 0 Reserved RSU Undef Wake: Software sets this bit to 1 to cause the CS4210 to continue or resume descriptor processing. The CS4210 clears this bit on every descriptor fetch. See Section 3.3.2.2 "ContextControl.wake" on page 21 for details. RU 0 Dead: The CS4210 sets this bit when it encounters a fatal error. The CS4210 clears this bit when software clears the run bit. See Section 3.3.2.4 "ContextControl.dead" on page 21 for details. RU 0 Active: The CS4210 sets this bit to 1 when it is processing descriptors. See Section 3.3.2.3 "ContextControl.active" on page 21 for details. Reserved 9:5 RSVD -- 0 4:0 event code RU Undef Description Event Code: Following an OUTPUT_LAST* command, the received ack_code or an “evt_” error code is indicated in this field. Possible values are: ack_complete, ack_pending, ack_busy_X, ack_busy_A, ack_busy_B, ack_data_error, ack_type_error, evt_tcode_err, evt_missing_ack, evt_underrun, evt_descriptor_read, evt_data_read,evt_timeout, evt_flushed, and evt_unknown. Table 4-42. BAR0+Offset 18Ch: AsyncReqTxCommandPtr Register Bit Name Access Reset Description 31:4 descriptorAddress RWU Undef Descriptor Address: Contains the upper 28 bits of the address of a 16byte aligned descriptor block. See Section 3.3.2.5 "CommandPtr" on page 22 for details. 3:0 Z RWU Undef Z Bit: Indicates the number of contiguous 16-byte aligned blocks at the address pointed to by descriptorAddress. If Z is 0, it indicates that the descriptorAddress is not valid. www.national.com 80 Revision 1.0 4.4.24.3 Async Response Transmit Context Control Register The ContextControl Set/Clear registers contain bits that control options, operational state and status for the DMA context. Software can set selected bits by writing ones to the corresponding bits in the ContextControl Set register. Software can clear selected bits by writing ones to the corresponding bits in the ContextControl Clear register. It is not possible for software to set some bits and clear others in an atomic operation. A read from either register returns the same value. 4.4.24.4 Async Response Transmit Command Pointer Register Software initializes CommandPtr.descriptorAddress to contain the address of the first descriptor block that the CS4210 accesses when software enables the context by setting ContextControl.run. Software also initializes CommandPtr.Z to indicate the number of descriptors in the first descriptor block. Software only writes to this register when both ContextControl.run and ContextControl.active are zero. Table 4-43. BAR0+Offset 1A0h (Set) and 1A4h (Clear): AsyncRespTxContextControl Register Bit Name Access Reset 31:16 15 14:13 RSVD 12 wake 11 dead 10 active RSVD -- 0 Reserved run RSCU 0 Run: The run bit is set by software to enable descriptor processing for a context and cleared by software to stop descriptor processing. The CS4210 only clears this bit on a hardware or software reset. See Section 3.3.2.1 "ContextControl.run" on page 21 for details. -- 0 Reserved RSU Undef Wake: Software sets this bit to 1 to cause the CS4210 to continue or resume descriptor processing. The CS4210 clears this bit on every descriptor fetch. See Section 3.3.2.2 "ContextControl.wake" on page 21 for details. RU 0 Dead: The CS4210 sets this bit when it encounters a fatal error. The CS4210 clears this bit when software clears the run bit. See Section 3.3.2.4 "ContextControl.dead" on page 21 for details. RU 0 Active: The CS4210 sets this bit to 1 when it is processing descriptors. See Section 3.3.2.3 "ContextControl.active" on page 21 for details. Reserved 9:5 RSVD -- 0 4:0 eventcode RU Undef Description Event Code: Following an OUTPUT_LAST* command, the received ack_code or an “evt_” error code is indicated in this field. Possible values are: ack_complete, ack_pending, ack_busy_X, ack_busy_A, ack_busy_B, ack_data_error, ack_type_error, evt_tcode_err, evt_missing_ack, evt_underrun, evt_descriptor_read, evt_data_read, evt_timeout, evt_flushed, and evt_unknown. Table 4-44. BAR0+Offset 1ACh: AsyncRespTxCommandPtr Register Bit Name Access Reset Description 31:4 descriptorAddress RWU Undef Descriptor Address: Contains the upper 28 bits of the address of a 16byte aligned descriptor block. See Section 3.3.2.5 "CommandPtr" on page 22 for details. 3:0 Z RWU Undef Z Bit: Indicates the number of contiguous 16-byte aligned blocks at the address pointed to by descriptorAddress. If Z is 0, it indicates that the descriptorAddress is not valid. Revision 1.0 81 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.25 Asynchronous Request/Response Receive Each ARDMA receive context (request and response) has a CommandPtr register and a ContextControl register. CommandPtr is used by software to tell the CS4210 where the DMA context program begins. ContextControl is used by software to control the context’s behavior, and is used by hardware to indicate current status. not possible for software to set some bits and clear others in an atomic operation. A read from either register returns the same. 4.4.25.2 Async Request Receive Command Pointer Register The CommandPtr register specifies the address of the context program to be executed when a DMA context is started. All descriptors are 16-byte aligned, so the four least-significant bits of any descriptor address must be zero. The least-significant bit of the CommandPtr register is used to encode a Z value. For each ARDMA context (request and response) Z may be either 1 to indicate that descriptorAddress points to a valid command descriptor, or 0 to indicate that there are no descriptors in the context program. 4.4.25.1 Async Request Receive Context Control Register The ContextControl Set/Clear registers contain bits that control options, operational state, and status for the DMA context. Software can set selected bits by writing ones to the corresponding bits in the ContextControl Set register. Software can clear selected bits by writing ones to the corresponding bits in the ContextControl Clear register. It is Table 4-45. BAR0+Offset 1C0h (Set) and 1C4h (Clear): AsyncReqRxContextControl Register Bit Name Access Reset 31:16 15 14:13 RSVD 12 wake 11 dead 10 Description RSVD -- 0 Reserved run RSCU 0 Run: The run bit is set by software to enable descriptor processing for a context and cleared by software to stop descriptor processing. The CS4210 only clears this bit on a hardware or software reset. See Section 3.3.2.1 "ContextControl.run" on page 21 for details. -- 0 Reserved RSU Undef Wake: Software sets this bit to 1 to cause the CS4210 to continue or resume descriptor processing. The CS4210 clears this bit on every descriptor fetch. See Section 3.3.2.2 "ContextControl.wake" on page 21 for details. RU 0 Dead: The CS4210 sets this bit when it encounters a fatal error. The CS4210 clears this bit when software clears the run bit. See Section 3.3.2.4 "ContextControl.dead" on page 21 for details. active RU 0 Active: The CS4210 sets this bit to 1 when it is processing descriptors. See Section 3.3.2.3 "ContextControl.active" on page 21 for details. 9:8 RSVD -- 0 Reserved 7:5 spd RU Undef Speed: This field indicates the speed at which the last packet was received by this context. 000 = 100 Mbits/sec, 001 = 200 Mbits/sec and 010 = 400 Mbits/sec. All other values are reserved. Software should not attempt to interpret the contents of this field while the ContextControl.active or ContextControl.wake bits are set. 4:0 eventcode RU undef Event Code: The packet ack_ code or an “evt_” error code is indicated in this field. Possible values are: ack_complete, ack_pending, ack_type_error, evt_descriptor_read, evt_data_write, evt_bus_reset, evt_unknown, and evt_no_status. Table 4-46. BAR0+Offset 1CCh: AsyncReqRxCommandPtr Register Bit Name Access Reset Description 31:4 descriptorAddress RWU Undef Descriptor Address: Contains the upper 28 bits of the address of a 16byte aligned descriptor block. See Section 3.3.2.5 "CommandPtr" on page 22 for details. 3:0 Z RWU Undef Z Bit: May be either 1 to indicate that descriptorAddress points to a valid command descriptor, or 0 to indicate that there are no descriptors in the context program. www.national.com 82 Revision 1.0 4.4.25.3 Async Response Receive Context Control Register The ContextControl Set/Clear registers contain bits that control options, operational state, and status for the DMA context. Software can set selected bits by writing ones to the corresponding bits in the ContextControl Set register. Software can clear selected bits by writing ones to the corresponding bits in the ContextControl Clear register. It is not possible for software to set some bits and clear others in an atomic operation. A read from either register returns the same. 4.4.25.4 Async Response Receive Command Pointer Register The CommandPtr register specifies the address of the context program which is executed when a DMA context is started. All descriptors are 16-byte aligned, so the four least-significant bits of any descriptor address must be zero. The least-significant bit of the CommandPtr register is used to encode a Z value. For each ARDMA context (request and response) Z may be either 1 to indicate that descriptorAddress points to a valid command descriptor, or 0 to indicate that there are no descriptors in the context program. Table 4-47. BAR0+Offset 1E0h (Set) and 1E4h (Clear): AsyncRespRxContextControl Register Bit Name Access Reset 31:16 15 14:13 RSVD 12 wake 11 dead 10 Description RSVD -- 0 Reserved run RSCU 0 Run: The run bit is set by software to enable descriptor processing for a context and cleared by software to stop descriptor processing. The CS4210 only clears this bit on a hardware or software reset. See Section 3.3.2.1 "ContextControl.run" on page 21 for details. -- 0 Reserved RSU Undef Wake: Software sets this bit to 1 to cause the CS4210 to continue or resume descriptor processing. The CS4210 clears this bit on every descriptor fetch. See Section 3.3.2.2 "ContextControl.wake" on page 21 for details. RU 0 Dead: The CS4210 sets this bit when it encounters a fatal error. The CS4210 clears this bit when software clears the run bit. See Section 3.3.2.4 "ContextControl.dead" on page 21 for details. active RU 0 Active: The CS4210 sets this bit to 1 when it is processing descriptors. See Section 3.3.2.3 "ContextControl.active" on page 21 for details. 9:8 RSVD -- 0 Reserved 7:5 spd RU Undef Speed: This field indicates the speed at which the last packet was received by this context. 000 = 100 Mbits/sec, 001 = 200 Mbits/sec and 010 = 400 Mbits/sec. All other values are reserved. Software should not attempt to interpret the contents of this field while the ContextControl.active or ContextControl.wake bits are set. 4:0 eventcode RU Undef Event Code: The packet ack_ code or an “evt_” error code is indicated in this field. Possible values are: ack_complete, ack_pending, ack_type_error, evt_descriptor_read, evt_data_write, evt_bus_reset, evt_unknown, and evt_no_status. Table 4-48. BAR0+Offset 1ECh: AsyncRespRxCommandPtr Register Bit Name Access Reset Description 31:4 descriptorAddress RWU Undef Descriptor Address: Contains the upper 28 bits of the address of a 16byte aligned descriptor block. See Section 3.3.2.5 "CommandPtr" on page 22 for details. 3:0 Z RWU Undef Z Bit: May be either 1 to indicate that descriptorAddress points to a valid command descriptor, or 0 to indicate that there are no descriptors in the context program. Revision 1.0 83 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.26 Isochronous Transmit Each isochronous transmit context consists of two registers: CommandPtr and ContextControl. CommandPtr is used by software to tell the ITDMA controller where the DMA context program begins. IsochTxContextControl is used by software to control the context’s behavior, and is used by hardware to indicate current status. 4.4.26.1 Isoch Transmit Context Control Register The IsochTxContextControl Set/Clear registers (Table 4-50 on page 85) contain bits that control options, operational state, and status for the ITDMA contexts. Software can set selected bits by writing ones to the corresponding bits in the ContextControl Set register. Software can clear selected bits by writing ones to the corresponding bits in the ContextControl Clear register. It is not possible for software to set some bits and clear others in an atomic operation. A read from either register returns the same value. The CS4210 has eight isochronous transmit contexts. These registers are repeated at offsets of 10h times the context number. Table 4-49 is a map providing the offset addresses for the isochronous transmit ContextControl and CommandPtr registers. In addition to the standard ContextControl fields, it includes a mechanism for starting transmit at a specified cycle time. The cycleMatch field is used to start an ITDMA context program on a specified cycle. Software enables matching by setting the cycleMatchEnable bit. When the low order two bits of the bus IsochCycleTimer.cycleSeconds and IsochCycleTimer.cycleCount (BAR0+Offset F0h) value matches the cycleMatch value, hardware clears the cycleMatchEnable bit to 0, sets the ContextControl.active bit to 1, and begins executing descriptor blocks for the context. The transition of an ITDMA context to the active state from the not-active state is dependent upon the values of the run and cycleMatchEnable bits. Table 4-49. IsochTx Register Address Map BAR0+Offset Name 200h IsochTx0ContextControl Set Register 204h IsochTx0ContextControl Clear Register 208h Reserved 20Ch IsochTx0CommandPtr Register 210h IsochTx1ContextControl Set Register 214h IsochTx1ContextControl Clear Register 218h Reserved 21Ch IsochTx1CommandPtr Register 220h IsochTx2ContextControl Set Register 224h IsochTx2ContextControl Clear Register 228h Reserved 22Ch IsochTx2CommandPtr Register 230h IsochTx3ContextControl Set Register 234h IsochTx3ContextControl Clear Register 238h Reserved 23Ch IsochTx3CommandPtr Register 240h IsochTx4ContextControl Set Register 244h IsochTx4ContextControl Clear Register 248h Reserved 24Ch IsochTx4CommandPtr Register 250h IsochTx5ContextControl Set Register 254h IsochTx5ContextControl Clear Register 258h Reserved 25Ch IsochTx5CommandPtr Register 260h IsochTx6ContextControl Set Register 264h IsochTx6ContextControl Clear Register 268h Reserved 26Ch IsochTx6CommandPtr Register 270h IsochTx7ContextControl Set Register 274h IsochTx7ContextControl Clear Register 278h Reserved 27Ch IsochTx7CommandPtr Register www.national.com If run transitions to 1 when cycleMatchEnable is 0, then the context becomes active (active = 1). If both run and cycleMatchEnable are set to 1, then the context becomes active when the low order two bits of the bus IsochCycleTimer.cycleSeconds and 13-bit IsochCycleTimer. cycleCount values match the 15-bit cycleMatch value. If both run and cycleMatchEnable are set to 1, and cycleMatchEnable is subsequently cleared, the context becomes active. If both run and active are 1 (the context is active), and then cycleMatchEnable is set to 1, this results in unspecified behavior. Due to software latencies, software attempts to manage the startup of a context too close to the current time may not be effective. In addition, the usability of cycleMatchEnable for IT contexts is impacted by the cycleInconsistent interrupt. Refer to Section 3.2.3.3 "Isoch Tx and Rx Context Interrupts" on page 17 for more information. 84 Revision 1.0 Table 4-50. IsochTxnContextControl Set/Clear Register Bit Name Access Reset Description 31 cycleMatchEnable RSCU Undef Cycle Match Enable: When set to one, processing occurs such that the packet described by the context’s first descriptor block is transmitted in the cycle whose number is specified in the cycleMatch field of this register. The 15-bit cycleMatch field must match the low order two bits of cycleSeconds and the 13-bit cycleCount field in the cycle start packet that is sent or received immediately before isochronous transmission begins. Since the ITDMA controller may work ahead, the processing of the first descriptor block may begin slightly in advance of the actual cycle in which the first packet is transmitted. The effects of this bit are impacted by the values of other bits in this register and are explained in descriptions below. Once the context has become active, hardware clears the cycleMatchEnable bit. 30:16 cycleMatch RSC Undef Cycle Match: Contains a 15-bit value, corresponding to the low order two bits of the bus IsochCycleTimer.cycleSeconds and the 13-bit IsochCycleTimer.cycleCount field (BAR0+Offset F0h). If ContextControl.cycleMatchEnable is set, then this ITDMA context becomes enabled for transmits when the low order two bits of the bus IsochCycleTimer.cycleSeconds and IsochCycleTimer.cycleCount value equals the cycleMatch value. 15 run RSCU 0 Run: The run bit is set by software to enable descriptor processing for a context and cleared by software to stop descriptor processing. The CS4210 only changes this bit on a hardware or software reset to set it to 0. See Section 3.3.2.1 "ContextControl.run" on page 21 for details. 14:13 RSVD -- 0 Reserved 12 wake RSU Undef Wake: Software sets this bit to 1 to cause the CS4210 to continue or resume descriptor processing. The CS4210 clears this bit on every descriptor fetch. See Section 3.3.2.2 "ContextControl.wake" on page 21 for details. 11 dead RU 0 Dead: The CS4210 sets this bit when it encounters a fatal error and clears this bit when software clears the run bit. See Section 3.3.2.4 "ContextControl.dead" on page 21 for details. 10 active RU 0 Active: The CS4210 sets this bit to 1 when it is processing descriptors. See Section 3.3.2.3 "ContextControl.active" on page 21 for details. Reserved 9:5 RSVD -- 0 4:0 event code RU Undef Event Code: Following an OUTPUT_LAST* command, the error code is indicated in this field. Possible values are: ack_complete, evt_underrun, evt_descriptor_read, evt_data_read, evt_tcode_err and evt_unknown. 4.4.26.2 Isoch Transmit Command Pointer The CommandPtr register (Table 4-51) specifies the address of the context program which is executed when a ITDMA context is started. All descriptors are 16-byte aligned, so the four least-significant bits of any descriptor address must be zero. The four least-significant bits of the CommandPtr register are used to encode a Z value that indicates how many physically contiguous descriptors are pointed to by descriptorAddress. These registers are repeated at offsets of 10h times the context number (see Table 4-49 on page 84 for offset address assignment). Table 4-51. IsochTxnCommandPtr Register Bit Name Access Reset Description 31:4 descriptorAddress RWU Undef Descriptor Address: Contains the upper 28 bits of the address of a 16byte aligned descriptor block. See Section 3.3.2.5 "CommandPtr" on page 22 for details. 3:0 Z RWU Undef Z: Indicates the number of contiguous 16-byte aligned blocks at the address pointed to by descriptorAddress. If Z is 0, it indicates that the descriptorAddress is not valid. Revision 1.0 85 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) Table 4-52. IsochRx Register Address Map 4.4.27 Isochronous Receive Each isochronous receive context consists of three registers: ContextControl, CommandPtr, and ContextMatch. ContextControl is used by software to control the context’s behavior, and is used by hardware to indicate current status. CommandPtr is used by software to tell the IRDMA controller where the DMA context program begins. ContextMatch is used to start on a specified cycle number and to filter received packets based on their tag bits and possible sync bits. BAR0+Offset 400h IsochRx0ContextControl Set Register 404h IsochRx0ContextControl Clear Register 408h Reserved 40Ch IsochRx0CommandPtr Register 410h IsochRx0ContextMatch Register 414h-41Fh The CS4210 has eight isochronous receive contexts. These registers are repeated at offsets of 20h times the context number. Table 4-52 is a map providing the offset addresses for the ContextControl, CommandPtr, and ContextMatch registers. IsochRx1ContextControl Set Register 424h IsochRx1ContextControl Clear Register 428h Reserved 42Ch IsochRx1CommandPtr Register 430h IsochRx1ContextMatch Register IsochRx2ContextControl Set Register 444h IsochRx2ContextControl Clear Register 448h Reserved 44Ch IsochRx2CommandPtr Register 450h IsochRx2ContextMatch Register IsochRx3ContextControl Set Register 464h IsochRx3ContextControl Clear Register 468h Reserved 46Ch IsochRx3CommandPtr Register 470h IsochRx3ContextMatch Register 474h-47Fh Reserved 480h IsochRx4ContextControl Set Register 484h IsochRx4ContextControl Clear Register 488h Reserved 48Ch IsochRx4CommandPtr Register 490h IsochRx4ContextMatch Register Reserved 4A0h IsochRx5ContextControl Set Register 4A4h IsochRx5ContextControl Clear Register 4A8h Reserved 4ACh IsochRx5CommandPtr Register 4B0h IsochRx5ContextMatch Register 4B4h-4BFh Reserved 4C0h IsochRx6ContextControl Set Register 4C4h IsochRx6ContextControl Clear Register 4C8h Reserved 4CCh IsochRx6CommandPtr Register 4D0h IsochRx6ContextMatch Register 4D4h-4DFh 86 Reserved 460h 494h-49Fh www.national.com Reserved 440h 454h-45Fh These registers are repeated at offsets of 20h times the context number (see Table 4-52 for offset address assignment). Reserved 420h 434h-43Fh 4.4.27.1 Isoch Receive Context Control Register The isochronous receive ContextControl register (see Table 4-53) contains bits that control options, operational state, and status for the isochronous receive DMA contexts. Software can set selected bits by writing ones to the corresponding bits in the ContextControl Set register. Software can clear selected bits by writing ones to the corresponding bits in the ContextControl Clear register. It is not possible for software to set some bits and clear others in an atomic operation. A read from either register returns the same value. It includes several fields which permit software to filter packets based on various combinations of fields within the isochronous packet header. Name Reserved 4E0h IsochRx7ContextControl Set Register 4E4h IsochRx7ContextControl Clear Register 4E8h Reserved 4ECh IsochRx7CommandPtr Register 4F0h IsochRx7ContextMatch Register Revision 1.0 Table 4-53. IsochRxnContextControl Set/Clear Register Bit Name Access Reset Description 31 bufferFill RSC Undef Buffer Fill: When set to one, received packets are placed back-to-back to completely fill each receive buffer (specified by an INPUT_MORE command). When clear, each received packet is placed in a single buffer (described by zero to seven INPUT_MORE commands followed by an INPUT_LAST command). If the multiChanMode bit (bit 28) is set to one, this bit must also be set to one. The value of bufferFill must not be changed while active (bit 10) or run (bit 15) are set to one. 30 isochHeader RSC Undef Isochronous Header: When set to one, received isochronous packets include the complete 4-byte isochronous packet header seen by the Link layer. The end of the packet is marked with a xferStatus (bits 15:0 of this register) in the first doublet, and a 16-bit timeStamp indicating the time of the most recently received (or sent) cycleStart packet. When clear, the packet header is stripped off of received isochronous packets. The packet header, if received, immediately precedes the packet payload. Details are in the 1394 OHCI specification data formats. The value of isochHeader must not be changed while active or run are set to one. 29 cycleMatchEnable RSCU Undef Cycle Match Enable: In general, when set to one, the context begins running only when the 15-bit cycleMatch field in the corresponding IsochRxnContextMatch register matches the two sets of bits of the bus IsochCycleTimer.cycleSeconds and 13-bit IsochCycleTimer.cycleCount values (BAR0+Offset F0h). The effects of this bit are impacted by the values of other bits in this register and are explained in Section 4.4.26.1 "Isoch Transmit Context Control Register" on page 84. Once the context has become active, hardware clears the cycleMatchEnable bit. The value of cycleMatchEnable must not be changed while active or run are set to one. 28 multiChanMode RSC Undef Multiple Channel Mode: When set to one, the corresponding isochronous receive DMA context receives packets for all isochronous channels enabled in the IRChannelMaskHi and IRChannelMaskLo registers (Section 4.4.15 "IRMultiChanMask Registers" on page 69). The isochronous channel number specified in the corresponding IsochRxnContextMatch register is ignored. When set to zero, the IRDMA context receives packets for that single channel. Only one IRDMA context may use the IRChannelMask registers. If more than one IsochRxContextControl register has the multiChanMode bit set, results are undefined. The value of multiChanMode must not be changed while active or run are set to one 27:16 RSVD -- 0 Reserved 15 run RSCU 0 Run: The run bit is set by software to enable descriptor processing for a context and cleared by software to stop descriptor processing. The CS4210 only clears this bit on a hardware or software reset. See Section 3.3.2.1 "ContextControl.run" on page 21 for details. 14:13 RSVD -- 0 Reserved 12 wake RSU Undef Wake: Software sets this bit to 1 to cause the CS4210 to continue or resume descriptor processing. The CS4210 clears this bit on every descriptor fetch. See Section 3.3.2.2 "ContextControl.wake" on page 21 for details. 11 dead RU 0 Dead: The CS4210 sets this bit when it encounters a fatal error and clears this bit when software clears the run bit. See Section 3.3.2.4 "ContextControl.dead" on page 21 for details. 10 active RU 0 Active: The CS4210 sets this bit to 1 when it is processing descriptors. See Section 3.3.2.3 "ContextControl.active" on page 21 for details. 9:8 RSVD -- 0 Reserved 7:5 spd RU Undef Speed: This field indicates the speed at which the packet was received. 000 = 100 Mbits/sec, 001 = 200 Mbits/sec, and 010 = 400 Mbits/sec. All other values are reserved. 4:0 event code RW Undef Event Code: For bufferFill mode, possible values are: ack_complete, evt_descriptor_read, evt_data_write, and evt_unknown. Packets with data errors and packets for which a FIFO overrun occurred are ‘backed-out’ by reverting to the previous state and Xferstatus and resCount are not updated. For packet-per-buffer mode, possible values are: ack_complete, ack_data_error, evt_long_packet, evt_overrun, evt_descriptor_read, evt_data_write, and evt_unknown. Revision 1.0 87 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.4.27.2 Isoch Receive Command Pointer Register The CommandPtr register (Table 4-54) specifies the address of the context program which is executed when a DMA context is started. All descriptors are 16-byte aligned, so the four least-significant bits of any descriptor address must be zero. The four least-significant bits of the Command Pointer register are used to encode a Z value that indicates how many physically contiguous descriptors are pointed to by descriptorAddress. In buffer-fill mode, Z is either one or zero. In packet-per-buffer mode, Z is from zero to eight. 4.4.27.3 Isoch Receive Context Match Register The ContextMatch register (Table 4-55) is used to start a context running on a specified cycle number, to filter incoming isochronous packets based on tag values and to wait for packets with a specified sync value. All packets are checked for a matching tag value, and a compare on sync is only performed when the descriptor’s w field is set to 11. See 1394 OHCI spec data fields for proper usage of the w field. This register should only be written when ContextControl.active is 0, otherwise unspecified behavior results. These registers are repeated at offsets of 20h times the context number (see Table 4-52 for offset address assignment). These registers are repeated at offsets of 20h times the context number (see Table 4-52 for offset address assignment). Table 4-54. IsochRxnCommandPtr Register Bit Name Access Reset Description 31:4 descriptorAddress RWU Undef Descriptor Address: Contains the upper 28 bits of the address of a 16byte aligned descriptor block. See Section 3.3.2.5 "CommandPtr" on page 22 for details. 3:0 Z RWU Undef Z: Indicates the number of contiguous 16-byte aligned blocks at the address pointed to by descriptorAddress. If Z is 0, it indicates that the descriptorAddress is not valid. Table 4-55. IsochRxnContextMatch Register Bit Name Access Reset Description 31 tag3 RW Undef Tag 3: If set, this context matches on isochronous receive packets with a tag field of 11h. 30 tag2 RW Undef Tag 2: If set, this context matches on isochronous receive packets with a tag field of 10h. 29 tag1 RW Undef Tag 1: If set, this context matches on isochronous receive packets with a tag field of 01h. 28 tag0 RW Undef Tag 0: If set, this context matches on isochronous receive packets with a tag field of 00h. 27 RSVD -- 0 26:12 cycleMatch RW Undef Reserved Cycle Match: Contains a 15-bit value, corresponding to the low order two bits of cycleSeconds and the 13-bit cycleCount field in the cycleStart packet. If cycleMatchEnable (bit 29 of corresponding IsochRxnContextControl register) is set, then this IRDMA context becomes enabled for receives when the two low order bits of the bus cycleTime.cycleSeconds and cycleTime.cycleCount (BAR0+Offset F0h) values equal the cycleMatch value. 11:8 sync RW Undef Synchronous: This field contains the 4-bit field which is compared to the sync field of each isochronous packet for this channel when the command descriptor’s w field is set to 11h. 7 RSVD -- 0 6 tag1SynFilter RW Undef Reserved Tag 1 Synchronous Filter: If set and the contextMatch.tag1 bit is set, then packets with tag 01h shall only be accepted into the context if the two mostsignificant bits of the packet’s sync field are 00h. Packets with tag values other than 01h shall be filtered according to the tag0, tag2 and tag3 bits above with no additional restrictions. If clear, this context matches on isochronous receive packets as specified in the tag[0:3] bits above with no additional restrictions. 5:0 www.national.com channelNum RW Undef Channel Number: This 6-bit field indicates the isochronous channel number for which this IRDMA context accepts packets. 88 Revision 1.0 4.5 NATIONAL (NSC) SPECIFIC CONFIGURATION REGISTERS The NSC configuration registers are at the location specified by the Base Address Register 1 (BAR1) in the PCI configuration space. Table 4-56 is a map for the registers accessed through BAR1. Following this table are subsections providing detailed information for each register. The access and operating modes information that is discussed in Section 4.4 "OHCI Configuration Registers" on page 48 apply to these registers. altAckAccel bistPass 3 2 1 0 shortCycle atreqBackoff atresbackoff wpDisable RSVD noCycleMaster disableCmDetect linkSpdWp aPhyEnhanEnab programPhyEnab RSVD altMode noCycleMaster physLockToggle disableCmDetect eepromAckErr physLockToggle physLockToggleMask disableCmDetectMask physLockToggleMask disableCmDetectMask noCycleMaster eepromCRCErr eepromCRCErrMask eepromCRCErrMask eepromAckErr eepromAckErrMask RSVD disableCmDetect nscEvent Clear Register eepromAckErrMask 08h-0Bh noCycleMasterMask nscEventMask Set Register RSVD nscRAMBist RSVD 89 RSVD bistGo 14h-17h noCycleMasterMask nscEventMask Clear Register RSVD Revision 1.0 4 nscEvent Set Register RSVD 10h-13h 5 eepromCRCErr 04h-07h fastEpromMode testOutSel busHoldEnab RSVD 0Ch-0Fh 6 altMultiSpd RSVD 7 altIdleInsert 8 nscControl Register PCICapabilities 00h-03h 9 bistFail 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 altAckConcat Table 4-56. NSC Specific Configuration Register Map Summary: BAR1+Offset xxh www.national.com Geode™ CS4210 Register Descriptions (Continued) 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 18h-1Bh 9 8 7 6 5 4 3 2 1 0 CMC Table 4-56. NSC Specific Configuration Register Map Summary: BAR1+Offset xxh (Continued) CMCL Geode™ CS4210 Register Descriptions (Continued) nscCmcControl RSVD 1Ch-1Fh Reserved 20h-23h nscTxThreshold isochTxThrsh 24h-27h asyncTxThrsh nscSubSystem deviceID vendorID 28h-3Fh Reserved 40h-43h nscPhysReadCount RSVD 44h-47h physReadCount nscPhysWriteCount RSVD 48h-4Bh physWriteCount nscPhysLockCount RSVD physLockCount 4Ch-5Fh Reserved 60h-63h nscBusmgrID busmgrID 64h-67h nscBandwAvail bandwAvail 68h-6Bh nscChanAvailHi chanAvailHi 6Ch-6Fh nscChanAvailLo chanAvailLo www.national.com 90 Revision 1.0 4.5.1 nscControl Register The nscControl register (Table 4-57) is used to control features of the CS4210 that are not defined within the Open- HCI standard registers. This register may be configured via the serial EEPROM interface. Table 4-57. BAR1+Offset 00h: nscControl Register Bit Name Access Reset Description 31:22 RSVD --- 0 Reserved 21 busHoldEnab RW 0 Bus Hold Enable: Allow bus holders for single capacitor isolation. 0 = Disable; 1 = Enable. 20 PCICapabilities RW 0 PCI Capabilities: Allow the PCI power management structures to be visible in the PCI configuration header. 0 = Disable; 1 = Enable. See Table 4-6: "Index 44h Capability ID Register" on page 45, "Index 46h47h Power Management Capabilities Register" on page 46, and "Index 48h Power Management and Control Status Register" on page 46. 19 testOutSel RW 0 Test Out Pin Select: Selects function of TESTO pin (pin 7). 0 = TESTO is the output of the NAND tree. 1 = TESTO pin reflects RAM BIST status. 18 fastEpromMode RW 0 Fast EEPROM Mode: Allow fast operation of the EEPROM interface for test purposes. 0 = Disable; 1 = Enable. 17:16 altMode RW 00 Alternate Mode: Modifier for aPhyEnhanceEnable and the alt bits in this register. See Table 4-58 "altMode" on page 92 for details. 14 programPhyEnab RW 0 Program PHY Enable: Mirror of HCControl.programPhyEnable bit (BAR0+Offset 50h[23]). 13 aPhyEnhanEnab RW 0 A PHY Enhancement Enable: Mirror of HCControl.aPhyEnhanceEnable bit (BAR0+Offset 50h[22]). 12 linkSpdWp RW 0 Link Speed Write Protect: Makes BusOptions.link_spd field (BAR0+Offset 20h[2:0]) read only. 0 = Disable; 1 = Enable. 11 disableCmDetect RW 0 Disable Cycle Master Detector: Turn-off the no cycle master detector logic. 0 = Disable; 1 = Enable. When this bit is set, the link layer logic that detects the absence of a cycle master is disabled. This detector is not a standard feature of the OpenHCI specification, thus this bit is defined to handle any unforeseen interoperability issues. If the noCycleMaster bit is also set, then setting this bit will have no effect. 10 noCycleMaster RWU 0 No Cycle Master: Force an internal “no cycle master present” condition. 0 = Disable; 1 = Enable. Setting this bit overrides the cycle master detector logic. When this bit is clear, the link layer must observe 255 consecutive cycle lost events before concluding that no cycle master node is present. 9 altAckConcat RW 0 Alternate Acknowledge Concatenation: Modify the interpretation of the HCControl.aPhyEnhanceEnable bit (BAR0+Offset 50h[23]) with respect to concatenation of packets onto the transmission of handshake packets. See altMode (bits [17:16]) and Table 4-58 "altMode" on page 92 for details. 8 RSVD -- 0 Reserved 7 altAckAccel RW 0 Alternate Acknowledge Accelerate: Modify the interpretation of the HCControl.aPhyEnhanceEnable bit (BAR0+Offset 50h[23]) with respect to ACK accelerated arbitration. When enabled the link layer will not consider the media “lost” when receiving a handshake packet. See altMode (bits [17:16]) and Table 4-58 "altMode" on page 92 for details. 6 altMultiSpd RW 0 Alternate Multispeed: Modify the interpretation of the HCControl.aPhyEnhanceEnable bit (BAR0+Offset 50h[23]) with respect to multispeed packet concatenation. See altMode (bits [17:16]) and Table 4-58 "altMode" on page 92 for details. 5 altIdleInsert RW 0 Alternate Idle Insert: Modify the interpretation of the HCControl.aPhyEnhanceEnable bit (BAR0+Offset 50h[23]) with respect to the signaling performed by the link when it has been granted permission to transmit. See altMode (bits [17:16]) and Table 4-58 "altMode" on page 92 for details. 4 RSVD -- 0 Reserved Revision 1.0 91 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) Table 4-57. BAR1+Offset 00h: nscControl Register (Continued) Bit Name Access Reset Description 3 wpDisable RW 0 Write Protect Disable: Turn-off write protection of selected vendor specific registers. 0 = Disable; 1 = Enable. 2 atresBackoff RW 0 AT Response Context Backoff: Allow backoff timing for retransmission of asynchronous requests via the AT response context. 0 = Disable; 1 = Enable. 1 atreqBackoff RW 0 AT Request Context Backoff: Allow backoff timing for retransmission of asynchronous requests via the AT request context. 0 = Disable; 1 = Enable. 0 shortCycle RW 0 Short Cycle: Allow cycle count to increment when cycle offset = 511 instead of 3071. 0 = Disable; 1 = Enable. Short cycle operation is intended for testing only. The altMode bits provide fine control over the individual P1394a features. The individual bit controls for altIdleInsert, altMultiSpd, altAckAccel, and altAckConcat can be modified by controlling the altMode bits. These four individual bits are considered the modifier in the Table 4-57. The combination of the individual alt bits and the altMode determine the enabling of the P1394a feature. For exam- ple, the second line in the table represents the case where P1394a features are enables with no modification. The result field being one indicates that the P1394a feature is enabled. For the case of the fourth row, if the altAckAccel bit were set to one for example, then that single P1394a feature would be disabled as indicated by the zero in the result column. Table 4-58. altMode nscControl.altMode (BAR1+Offset 00h[17:16] HCControl.aPhyEnhance Enable (BAR0+Offset 50h[22]) nscControl.Modifier (BAR1+Offset 00h[9, 7, 6, 5]) Result 00 or 11 (XOR) 0 0 0 00 or 11 1 0 1 00 or 11 0 1 1 00 or 11 1 1 0 01 (AND) 0 0 0 01 1 0 0 01 0 1 0 01 1 1 1 10 (OR) 0 0 0 10 1 0 1 10 0 1 1 10 1 1 1 www.national.com 92 Revision 1.0 4.5.2 nscEventSet/Clear The nscEvent register (Table 4-59) contains events that are unique to the CS4210. This register is set (BAR1+Offset 04h) and clear (BAR1+Offset 08h). 4.5.3 nscMaskSet/Clear The nscEventMask register (Table 4-60) controls the masking of the nscEvent register. This register is set (BAR1+Offset 0Ch) and clear (BAR1+Offset 10h). Table 4-59. BAR1+Offset 04h (Set) and 08h (Clear): nscEvent Register Bit Name Access Reset Description 31:5 RSVD -- 0 4 eepromAckErr RSCU Undef Reserved EEPROM Acknowledge Error: Set when an acknowledge is missing from the serial EEPROM load. 3 eepromCRCErr RSCU Undef EEPROM Cyclical Redundancy Check Error: Set when a CRC error occurs as a result of the serial EEPROM load. 2 physLockToggle RSCU Undef Physical Lock Toggle: Set when D15 of the nscPhysLockCount register (BAR1+Offset 48h) changes. 1 disableCmDetect RSCU Undef Disable Cycle Master Detector: Set when D15 of the nscPhysWriteCount register (BAR1+Offset 44h) changes. 0 noCycleMaster RSCU Undef No Cycle Master: Set when D15 of the nscPhysReadCount register (BAR1+Offset 40h) changes. Table 4-60. BAR1+Offset 0Ch (Set) and 10h (Clear): nscEventMask Register Bit Name Access Reset Description 31:5 RSVD -- 0 4 eepromAckErrMask RSCU Undef EEPROM Acknowledge Error Mask: Set to 1 enables the corresponding bit in the nscEvent register (BAR1+Offset 04h). 3 eepromCRCErrMask RSC Undef EEPROM Cyclical Redundancy Check Error Mask: Set to 1 enables the corresponding bit in the nscEvent register (BAR1+Offset 04h). 2 physLockToggleMask RSC Undef Physical Lock Toggle Mask: Set to 1 enables the corresponding bit in the nscEvent register (BAR1+Offset 04h). 1 disableCmDetectMask RSC Undef Disable Cycle Master Detector Mask: Set to 1 enables the corresponding bit in the nscEvent register (BAR1+Offset 04h). 0 noCycleMasterMask RSC Undef No Cycle Master Mask: Set to 1 enables the corresponding bit in the nscEvent register (BAR1+Offset 04h). Revision 1.0 Reserved 93 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) over the 1394 bus. Lowering the threshold value causes smaller packets to be sent. This register can only be written to when the nscControl.wpDisable bit (BAR1+Offset 00h[3]) is set. This register may be configured via the serial EEPROM interface (if EEPROM is present). 4.5.4 nscRAMBist The nscRAMBist register (Table 4-61) is used to test the FIFOs implemented in SRAM. The bistGo bit is set and the bistFail and bistPass bits are polled until one is set, indicating pass or fail. The CS4210 must be reset before normal operation can resume. 4.5.7 nscSubSystem The nscSubSystem register (Table 4-64) is used to configure the subsystem vendor ID and the subsystem device ID values in the PCI configuration space. This register can only be written to when the nscControl.wpDisable bit (BAR1+Offset 00h[3]) is set. This register may be configured via the serial EEPROM interface (if EEPROM is present). 4.5.5 nscCmcControl The nscCmcControl register (Table 4-62) controls the state of the CMC and CMCL pins. These pins are intended for use with Contender pins on 1394-1995 PHY devices. This feature is not used on the CS4103. 4.5.6 nscTxThreshold The nscTxThreshold register (Table 4-63) is used to control the point at which the transmit FIFOs start sending data Table 4-61. BAR1+Offset 14h: nscRAMBist Register Bit Name Access Reset Description 31:10 RSVD -- 0 9 bistFail RU Undef Built-in Self-Test Fail: Set to 1 when RAM BIST has failed. 8 bistPass RU Undef Built-in Self-Test Pass: Set to 1 when RAM BIST has passed. 7:1 RSVD -- 0 0 bistGo RW Undef Reserved Reserved Built-in Self-Test Go: RAM BIST is started by writing a 1 to this bit. Table 4-62. BAR1+Offset 18h: nscCmcControl Register Bit Name Access Reset Description 31:2 RSVD -- 0 Reserved 1 CMCL RW 0 Contender Master Control Link Enabled: This bit is ANDed with HCControl.LinkEnable (BAR0+Offset 50h[17]) and the result is reflected on pin 3. 0 CMC RW 0 Contender Master Control: Selects polarity of CMC output. This bit is directly reflected on pin 2. 0 = Low; 1 = High. Table 4-63. BAR1+Offset 20h: nscTxThreshold Register Bit Name Access Reset Description 31:16 isochTxThrsh RW 01FEh Isochronous Transmit Threshold: FIFO threshold value when transmitting isochronous packets. D[18:16] are hardwired to 110 and D[31:25] are hardwired to 00h. 15:0 asyncTxThrsh RU 01FEh Asynchronous Transmit Threshold: FIFO threshold value when transmitting asynchronous packets. D[2:0] are hardwired to 110 and the D[15:9] are hardwired to 00h. . Table 4-64. BAR1+Offset 24h: nscSubSystem Register Bit Name Access Reset Description 31:16 deviceID RW 0000h Device ID: PCI configuration subsystem device ID. 15:0 vendorID RW 0000h Vendor ID: PCI configuration subsystem vendor ID. www.national.com 94 Revision 1.0 4.5.8 nscPhysReadCount The nscPhysReadCount register (Table 4-65) provides statistics on physical read requests and CSR read requests. This register is cleared when a 1 is written to D0. 4.5.10 nscPhysLockCount The nscPhysLockCount register (Table 4-67) provides statistics on physical lock requests. This register is cleared when a 1 is written to D0. 4.5.9 nscPhysWriteCount The nscPhysWriteCount register (Table 4-66) provides statistics on physical write requests. This register is cleared when a 1 is written to D0. Table 4-65. BAR1+Offset 40h: nscPhysReadCount Bit Name Access Reset 31:16 RSVD -- 0 15:0 physReadCount RW 0000h Description Reserved Physical Read Count: Current count of physical read requests and/or CSR read requests. Table 4-66. BAR1+Offset 44h: nscPhysWriteCount Register Bit Name Access Reset 31:16 RSVD -- 0 15:0 physWriteCount RW 0000h Description Reserved Physical Write Count: Current count of physical write requests. Table 4-67. BAR1+Offset 48h: nscPhysLockCount Register Bit Name Access Reset 31:16 RSVD -- 0 15:0 physLockCount RW 0000h Revision 1.0 Description Reserved Physical Lock Count: Current count of physical lock requests. 95 www.national.com Geode™ CS4210 Register Descriptions (Continued) Geode™ CS4210 Register Descriptions (Continued) 4.5.11 nscBusmgrID The nscBusmgrID register (Table 4-68) is a directly readable BUS_MANAGER_ID CSR resource. 4.5.13 nscChanAvailHi The nscChanAvailHi register (Table 4-70) is a directly readable CHANNELS_AVAILALBLE_HI CSR resource. 4.5.12 nscBandwAvail The nscBandwAvail register (Table 4-69) is a directly readable BANDWIDTH_AVAILABLE CSR resource. 4.5.14 nscChanAvailLo The nscChanAvailLo register (Table 4-71) is a directly readable CHANNELS_AVAILABLE_LO CSR resource. Table 4-68. BAR1+Offset 60h: nscBusmgrID Register Bit Name Access Reset Description 31:0 busmgrID R Undef Bus Manager ID: BUS_MANAGER_ID CSR resource. Table 4-69. BAR1+Offset 64h: nscBandwAvail Register Bit Name Access Reset Description 31:0 bandwAvail R Undef Bandwidth Available: BANDWIDTH_AVAILABLE CSR resource. Table 4-70. BAR1+Offset 68h: nscChanAvailHi Register Bit Name Access Reset Description 31:0 chanAvailHi R Undef Channels Available High: CHANNELS_AVAILALBLE_HI CSR resource. Table 4-71. BAR1+Offset 6Ch: nscChanAvailLo Register Bits Field Name Access Reset Description 31:0 chanAvailLo R Undef Channels Available Low: CHANNELS_AVAILALBLE_LO CSR resource. www.national.com 96 Revision 1.0 Electrical Specifications applied to the inputs in the order listed in Table 5-1. The TESTO output will toggle on each input change as shown in Figure 5-1. This section provides information on NAND tree test mode, absolute maximum ratings, recommended operating conditions, and DC/AC characteristics for the Geode CS4210. 5.1 The TESTO pin will continue to output the result of the NAND tree during normal operation. If this is undesirable, nscControl.testOutSel (BAR1+Offset 00h[19]) can be set and TESTO will reflect the BIST output which does not toggle during normal operation. The nscControl register is loaded via the serial EEPROM upon power up, so nscControl.testOutSel can be set as the default if desired. NAND TREE TEST MODE The NAND tree test mode is used to test input and bidirectional pins which are part of the NAND tree chain. After power is applied to the CS4210, pin 7 (TESTO) is the output of the NAND tree. To test the NAND tree, all inputs in Table 5-1 are held low and then a high is successively Table 5-1. NAND Tree Test Mode Pins Signal Name Pin No. Signal Name Pin No. Signal Name Pin No. Signal Name Pin No. LNKON 98 AD2 72 SERR# 51 C/BE3# 28 SCLK 95 AD3 71 PERR# 49 AD24 27 CTL0 93 AD4 69 STOP# 48 AD25 26 CTL1 92 AD5 68 DEVSEL# 47 AD26 25 DATA0 90 AD6 67 TRDY# 45 AD27 23 DATA1 89 AD7 66 IRDY# 44 AD28 22 DATA2 88 C/BE0# 65 FRAME# 43 AD29 21 DATA3 86 AD8 64 C/BE2# 41 AD30 19 DATA4 85 AD9 62 AD16 40 AD31 18 DATA5 84 AD10 61 AD17 38 PME# 17 DATA6 82 AD11 59 AD18 37 PGNT# 14 DATA7 81 AD12 58 AD19 36 PCLK 12 DIRECT 79 AD13 57 AD20 34 RST# 10 CCLKI 78 AD14 56 AD21 33 EEDATA 5 TESTEN# 76 AD15 54 AD22 32 EECLK 4 AD0 74 C/BE1# 53 AD23 31 AD1 73 PAR 52 IDSEL 29 TESTO 100 ns LNKON SCLK CTL0 CTL1 DATA0 ::: ::: ::: EECLK Note: The following pins are not in the NAND tree: CMC, CMCL, INTA#, PREQ#, CCLKO, LREQ, LPS, and all supplies. Figure 5-1. NAND Tree Output Waveform Revision 1.0 97 www.national.com Geode™ CS4210 5.0 Geode™ CS4210 Electrical Specifications (Continued) 5.2 ABSOLUTE MAXIMUM RATINGS only and do not imply that operation under any conditions other than those listed in Table 5-3 is possible. Table 5-2 lists the absolute maximum ratings for the CS4210. Stresses beyond the listed ratings may cause permanent damage to the device. Exposure to conditions beyond these limits may (1) reduce device reliability and (2) result in premature failure even when there is no immediately apparent sign of failure. Prolonged exposure to conditions at or near the absolute maximum ratings may also reduce useful life and reliability. These are stress ratings 5.3 OPERATING CONDITIONS All DC and AC parameters were measured under the operating conditions listed in Table 5-3. Table 5-2. Absolute Maximum Ratings Parameter Units Supply Voltage, VDD, VDDIO –0.5V to 3.75V Input Voltage –0.5V to VDDIO + 1.7V Output Voltage –0.5V to VDDIO + 0.5V Storage Temperature, TSTG –65°C to 150°C ESD Tolerance 2000V 230°C (Soldering 10 seconds) Lead Temperature, TL Table 5-3. Operating Conditions Parameter Units I/O Supply Voltage, VDDIO 3.0V to 3.6V Supply Voltage, VDD 2.3V to 2.7V Operating Temperature, TA 0°C to 70°C Power Dissipation, PD www.national.com 300 mW 98 Revision 1.0 5.4 DC CHARACTERISTICS Table 5-4. DC Characteristics: PCI Interface Symbol Parameter Min Max Units Conditions VDDIO I/O Supply Voltage 3.0 3.6 V VDD Core Supply Voltage 2.3 2.7 V VIH Input High Voltage 1.7 VIL Input Low Voltage –0.5 VIPU Input Pull-up Voltage 1.7 IIH Input High Leakage Current + 10 µA 0 < VIN < VDDIO IIL Input Low Leakage Current –10 µA 0 < VIN < VDDIO VOH1 Output High Voltage VDDIO–0.2 V IOUT = –10 µA VOH2 Output High Voltage 2.4 V IOUT = –2 mA VOL1 Output Low Voltage 0.2 V IOUT = 10 µA VOL2 Output Low Voltage 0.4 V IOUT = 2 mA CIN Input Pin Capacitance 10 pF CCLK CLK Pin Capacitance 12 pF CIDSEL IDSEL Pin Capacitance 8 pF LPIN Pin Inductance 20 nH V 0.7 V V 5 Table 5-5. DC Characteristics: General Symbol Parameter Min VDDIO I/O Supply Voltage VDD Core Supply Voltage IDDQ Quiescent Core Supply Current 100 µA IDDQIO Quiescent I/O Supply Current 500 µA IDD Dynamic Core Supply Current 80 mA IDDIO Dynamic Supply Current 13 mA Revision 1.0 Typ Max Units 3.0 3.6 V 2.3 2.7 V 99 Conditions www.national.com Geode™ CS4210 Electrical Specifications (Continued) Geode™ CS4210 Electrical Specifications (Continued) Table 5-6. IEEE 1394a PHY-Link Interface Symbol Parameter Min Max Units VDDIO Supply Voltage 3.0 3.6 V VDD Core Supply Voltage 2.3 2.7 V VIH Input High Voltage 2.8 VDD+10% V VIL Input Low Voltage GND 0.7 V IIH Input High Leakage Current 40 µA IIL Input Low Leakage Current 600 µA VOH Output High Voltage 2.8 VDD V IOUT = –4 mA VOL Output Low Voltage GND 0.4 V IOUT = 4 mA CIN Input Pin Capacitance 7.5 pF www.national.com 100 Conditions Revision 1.0 5.5 AC SPECIFICATIONS Table 5-7. PCI Timings: CLOAD = 50 pF Symbol Parameter Min Max Units tVAL CLK to Signal Valid Delay - bused signals 2 11 ns tON Float to Active Delay 2 tOFF Active to Float Delay tSU Input Setup Time to CLK - bused signals 7 ns tH Input Hold Time from CLK 0 ns tRST Reset Active Time after Power Stable 1 ms tRST-CLK Reset Active Time after CLK Stable 100 ms tRST-OFF Reset Active Time to Output TRI-STATE Delay tCYC PCLK Cycle Time 30 ns tHIGH PCLK High Time 11 ns tLOW PCLK Low Time 11 ns ns 28 40 ns ns PCLK tVAL PCI Output tOFF tON TRI-STATE Output Figure 5-2. PCI Timing Waveform PCLK tH tSU PCI Output Figure 5-3. PCI Setup and Hold Timing Revision 1.0 101 www.national.com Geode™ CS4210 Electrical Specifications (Continued) Geode™ CS4210 IEEE 1394 OHCI Controller 6.0 Physical Dimensions Figure 6-1. 100-Pin LQFP (Low-Profile Quad Flat Pack) Package Order Number: CS4210VJG LIFE SUPPORT POLICY NATIONAL’S PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN LIFE SUPPORT DEVICES OR SYSTEMS WITHOUT THE EXPRESS WRITTEN APPROVAL OF THE PRESIDENT AND GENERAL COUNSEL OF NATIONAL SEMICONDUCTOR CORPORATION. As used herein: 1. Life support devices or systems are devices or systems which, (a) are intended for surgical implant into the body, or (b) support or sustain life, and whose failure to perform when properly used in accordance with instructions for use provided in the labeling, can be reasonably expected to result in a significant injury to the user. National Semiconductor Corporation Americas Tel: 1-800-272-9959 Fax: 1-800-737-7018 Email: [email protected] www.national.com 2. A critical component is any component of a life support device or system whose failure to perform can be reasonably expected to cause the failure of the life support device or system, or to affect its safety or effectiveness. National Semiconductor Europe Fax: +49 (0) 180-530 85 86 Email: [email protected] Deutsch Tel: +49 (0) 69 9508 6208 English Tel: +44 (0) 870 24 0 2171 Français Tel: +33 (0) 1 41 91 87 90 National Semiconductor Asia Pacific Customer Response Group Tel: 65-2544466 Fax: 65-2504466 Email: [email protected] National Semiconductor Japan Ltd. Tel: 81-3-5639-7560 Fax: 81-3-5639-7507 Email: [email protected] (7/00) National does not assume any responsibility for use of any circuitry described, no circuit patent licenses are implied and National reserves the right at any time without notice to change said circuitry and specifications.