3URGXFW'DWD6KHHW ,6'$6,& 3DUWQXPEHU ,6'´µµµ Revision 2.0 June 15, 2000 Copyright 2000 – In-System Design, Inc. Notice: In-System Design assumes no liability whatsoever for errors and omissions in this document. In-System Design reserves the right to make changes at any time, without notice. Please confirm that this document revision is current. ISD-200 ASIC Datasheet Table of Contents TABLE OF CONTENTS .............................................................................................................................. I TABLE OF TABLES ................................................................................................................................. IV TABLE OF FIGURES .................................................................................................................................V DOCUMENT REVISION HISTORY ........................................................................................................ 6 PIN INFORMATION .................................................................................................................................. 7 OVERVIEW ............................................................................................................................................... 10 INTRODUCTION ...................................................................................................................................... 11 ISD-200 CONFIGURATION .................................................................................................................... 11 ISD-200 CONFIGURATION DATA AND USB DESCRIPTOR SOURCES .......................................................... 11 Internal ROM Contents ........................................................................................................................ 12 Serial ROM Interface ........................................................................................................................... 12 Vendor-Specific Identify (FBh) Data ................................................................................................... 12 ISD-200 CONFIGURATION/USB DESCRIPTOR DATA FORMATTING........................................................... 13 ISD-200 Configuration Data ................................................................................................................ 13 Valid Configuration Byte Settings........................................................................................................ 15 USB INTERFACE...................................................................................................................................... 16 DESCRIPTOR REQUIREMENTS .................................................................................................................... 16 Configuration Descriptors .................................................................................................................... 16 String Descriptor Indexes ..................................................................................................................... 16 Descriptor Override .............................................................................................................................. 17 PIPES ......................................................................................................................................................... 17 Default Control Pipe............................................................................................................................. 17 Bulk Out Pipe ....................................................................................................................................... 17 Bulk In Pipe.......................................................................................................................................... 17 Interrupt Pipe........................................................................................................................................ 17 REQUESTS ................................................................................................................................................. 17 Standard Requests ................................................................................................................................ 17 Mass Storage Class Bulk-Only Requests.............................................................................................. 17 Vendor-Specific Requests .................................................................................................................... 18 DESCRIPTORS ............................................................................................................................................ 19 Supported Descriptors .......................................................................................................................... 19 Descriptor Data Format ........................................................................................................................ 20 ATA/ATAPI INTERFACE........................................................................................................................ 26 PROTOCOL................................................................................................................................................. 26 RESET MAPPING ........................................................................................................................................ 26 DEVICE REQUIREMENTS ............................................................................................................................ 27 ATA Power Supplied from the USB Bus ............................................................................................. 27 ATA Reset, A1h, FBh .......................................................................................................................... 27 ATA Polling Device ............................................................................................................................. 27 ISD-200 ATA Bus State During Idle.................................................................................................... 27 ATA PIO Support................................................................................................................................. 27 ATA INITIALIZATION TIMEOUT ................................................................................................................ 27 DEVICE INITIALIZATION SEQUENCE .......................................................................................................... 28 In-System Design Confidential i ISD-200 ASIC Datasheet ATA COMMAND BLOCK ........................................................................................................................... 31 Field Descriptions................................................................................................................................. 31 ATA COMMAND FLOW ............................................................................................................................. 33 VENDOR-SPECIFIC ATA COMMANDS........................................................................................................ 35 POWER MANAGEMENT........................................................................................................................ 38 BUS_POWER Pin ................................................................................................................................ 38 NPWR500, and NPWR100 Pins .......................................................................................................... 38 Selectable Device Power Configurations ............................................................................................. 39 OPERATIONAL MODES......................................................................................................................... 42 NEJECT & NCART_DET PINS ............................................................................................................... 42 I_MODE PIN ............................................................................................................................................ 42 ATA_EN PIN ............................................................................................................................................ 42 TEST MODE PINS ....................................................................................................................................... 42 Test Pin Pull-downs.............................................................................................................................. 43 Normal Mode With CLKN Enabled..................................................................................................... 43 Disable Disk Mode ............................................................................................................................... 43 NandTree Test Mode............................................................................................................................ 43 Limbo Mode ......................................................................................................................................... 43 EXTERNAL CIRCUITRY........................................................................................................................ 44 EXTERNAL COMPONENTS CONNECTION .................................................................................................... 44 IORDY HOOKUP ...................................................................................................................................... 44 PDIAG AND PDASP HOOKUP .................................................................................................................. 45 ABSOLUTE MAXIMUM RATINGS....................................................................................................... 45 ELECTRICAL CHARACTERISTICS .................................................................................................... 45 VOLTAGE PARAMETER .............................................................................................................................. 45 CURRENT PARAMETER .............................................................................................................................. 46 TIMING CHARACTERISTICS............................................................................................................... 46 I2C MEMORY DEVICE INTERFACE TIMING ................................................................................................ 46 USB TRANSCEIVER TIMING CHARACTERISTICS ........................................................................................ 47 ATA/ATAPI PORT TIMING CHARACTERISTICS ........................................................................................ 47 CLOCK....................................................................................................................................................... 47 RESET........................................................................................................................................................ 47 PHYSICAL DIAGRAMS .......................................................................................................................... 48 DEVICE ERRATA FOR FIRST SILICON ISD-200 “0002” ................................................................. 49 1. CLKN OUTPUT MAY INITIALIZE WITH UNKNOWN FREQUENCY WITH ASIC IN RESET ............................ 49 2. ATA_EN INTERNAL PULL-UP RESISTOR IS DISABLED DURING USB SUSPEND OPERATION .................... 49 3. EEPROM WRITE OPERATION FAILS ON LAST BYTE OF LAST PAGE WITH SOME EEPROM DEVICES....... 49 4. SCL OUTPUT DOES NOT 3-STATE TO HI-Z WHEN ‘1’, LIMITING SCL VHI VOLTAGE TO 3.3V................. 49 5. CURRENT DRAW OF 5-6 MA WHEN ATA_EN = 0 ................................................................................. 50 6. USB BUS POWERED SYSTEM SUPPORT NOT POSSIBLE WITH ISD-200 FIRST SILICON. ............................ 50 7. USB INTERRUPT PIPE SUPPORT REQUIRED FOR MAC OS DRIVERS / APPLICATIONS ............................... 50 8. SUPPORT NOT PROVIDED FOR 16 BYTE ATAPI COMMAND BLOCK TRANSFERS...................................... 50 9. CLKN DOES NOT GET THE CORRECT FREQUENCY IN ALL CASES ........................................................... 50 10. FAILURE TO OVERRIDE DESCRIPTORS FOR SLAVE DEVICE WHEN BSY=0 AND DRQ=1. ...................... 50 11. POSSIBLE HANG IN ATACB FUNCTIONALITY. ..................................................................................... 51 DEVICE ERRATA FOR SECOND SILICON ISD-200 “0003” ............................................................ 52 ii In-System Design Confidential ISD-200 ASIC Datasheet 100. NATA_RESET, NDIOR, AND NDIOW ALLOW PARASITIC CURRENT DRAW DURING SUSPEND ........... 52 101. CLKN DOES NOT GET THE CORRECT FREQUENCY IN ALL CASES........................................................ 52 102. FAILURE TO OVERRIDE DESCRIPTORS FOR SLAVE DEVICE WHEN BSY=0 AND DRQ=1...................... 53 103. POSSIBLE HANG IN ATACB FUNCTIONALITY. ................................................................................... 54 In-System Design Confidential iii ISD-200 ASIC Datasheet Table of Tables Table 1 – Pin Descriptions ............................................................................................................................. 9 Table 2 – ISD-200 Configuration and Descriptor Sources........................................................................... 12 Table 3 – ISD-200 Configuration Bytes....................................................................................................... 15 Table 4 – Valid Configuration Byte Settings ............................................................................................... 16 Table 5 – Mass Storage Class Bulk-Only Requests ..................................................................................... 18 Table 6 – Vendor-Specific Requests ............................................................................................................ 18 Table 7– Device Descriptor.......................................................................................................................... 21 Table 8 – Configuration Descriptor(s).......................................................................................................... 22 Table 9 – Interface Descriptor ...................................................................................................................... 23 Table 10 – String Locations.......................................................................................................................... 23 Table 11 – String Descriptors....................................................................................................................... 26 Table 12 – ATA Command Block Formatting ............................................................................................. 31 Table 14 – Vendor-Specific ATA Commands ............................................................................................. 35 Table 13 – Test Modes ................................................................................................................................. 43 Table 15 – Absolute Maximum Ratings ....................................................................................................... 45 Table 16 – DC Characteristics...................................................................................................................... 45 Table 17 – Power Supply Current ................................................................................................................ 46 Table 18 – I2C Memory Device Interface Timing ........................................................................................ 46 Table 19 – Clock Requirements ................................................................................................................... 47 Table 20 – Example Serial ROM / FBh Data ............................................................................................... 62 iv In-System Design Confidential ISD-200 ASIC Datasheet Table of Figures Figure 1 – Pin Layout ..................................................................................................................................... 7 Figure 2 – ATA Reset Protocol .................................................................................................................... 28 Figure 3 – Full Device Initialization Sequence ............................................................................................ 30 Figure 4 – ATA Command Block Flow Diagram ........................................................................................ 34 Figure 5 – Configuration Sequence .............................................................................................................. 41 Figure 6 – External Components Connection............................................................................................... 44 Figure 7 – IORDY Hookup .......................................................................................................................... 44 Figure 8 – I2C Memory Device Interface Timing......................................................................................... 46 Figure 9 – Package Outline Diagram............................................................................................................ 48 In-System Design Confidential v ISD-200 ASIC Datasheet Document Revision History Title Company Initial Revision # Creation Date/Time 6 ISD-200 ASIC Datasheet In-System Design Inc. Boise, ID. 1.0 March 13, 2000 Revision 1.0 1.1 1.2 Date March 13, 2000 March 15, 2000 March 17, 2000 1.3 March 22, 2000 April 4, 2000 1.4 1.5 April 10, 2000 April 26, 2000 1.6 1.7 April 28, 2000 May 25, 2000 1.8 June 13, 2000 1.9 June 15, 2000 2.0 June 29, 2000 Comments Initial Production Revision Addition of ATA_EN mode current Removed reference to 16 byte ATAPI command block support Added length restriction to USB string descriptors Added text to indicate a serial number string descriptor is required for MSC compliance Fixed READ/LOAD_CONFIG parameter descriptions. Added Internal ROM values to ISD-200 Configuration table. Changed description of some ISD-200 Configuration bits. Restructured the outline to avoid conflicting statements and redundancy. Fixed Table of Tables and Table of Figures Cleaned up and added text on the BUS_POWER pin and related issues. Made suggested enhancements from review in text. Several references clarified. First silicon “Rev A” references changed to “first silicon” (ISD-200 “0002” or F731727). Second silicon “Rev B” references changed to “second silicon” (ISD-200 “0003” or F731727A). Clarify First & Second silicon differences in power management section. Added Second silicon errata. Fixed some typographical errors. Clarified I_MODE references. Fixed several references for consistency. Fixed some ATACB descriptions. Added more errata. In-System Design Confidential ISD-200 ASIC Datasheet LED VDD33 SCAN_EN VDD18 SDA SCL I_MODE CLKN BUS_POWER VSS DMNS DPLS VSS USB_ENUM VDD33 IORDY_PU_EN Pin Information 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 49 32 VDD18 NCS0 50 31 TEST0 IORDY 27 TEST3 DA1 55 26 VSS NDIOR 56 25 CLK12 VSS 57 24 CLKX NDIOW 58 23 VDD33 VDD18 59 22 PWR100 DD15 60 21 NEJECT VSS 61 20 NCART_DET DD0 62 19 NRESET DD14 63 18 ATA_EN DD1 64 7 8 9 17 10 11 12 13 14 15 16 VSS NATA_RESET 6 DD7 5 DD8 4 VDD18 3 DD6 2 DD9 1 DD5 54 VSS DA0 DD10 TEST2 DD4 28 DD11 53 DD3 29 DA2 VDD33 TEST1 PWR500 DD12 30 52 DD2 51 DD13 NCS1 VDD33 Figure 1 – Pin Layout In-System Design Confidential 7 ISD-200 ASIC Datasheet Pin Name TQFP Pin # Dir Type Description NRESET 19 I TTL 3.3V Active low Chip Reset CLK12, CLKX 25, 24 IO OSC in/out Crystal connections. 1.8V tolerant only TEST0 – TEST3 31, 30, 28, 27 I TTL 3.3V, pull down Test mode inputs. 100K internal pull down resistors on TEST(2:0) SCAN_EN 35 I TTL 3.3V, pull down Manufacturing test pin. Scan mode select input. 100K internal pull down resistor. I_MODE 39 I TTL 3.3V USB descriptor and ISD-200 configuration data is obtained from the device by the vendor-specific ATAPI (FBh) command. If set (I_MODE=1) and USB Bus powered (BUS_POWER=1), the device must be able to respond to the FBh ATAPI command when nPWR100 is active. I_MODE operation is not supported in USB Bus powered systems that require more than 100mA of current prior to USB enumeration. CLKN 40 O 4 mA TTL 3.3V Configurable clock output. A digital phase lock loop provides a configurable clock source for system integration. (See Errata #1) NEJECT 21 I TTL 3.3V Active low media eject request input NCART_DET 20 I TTL 3.3V Active low Cartridge (media) detected input. ATA_EN 18 I TTL 3.3V, pull up ATA interface / USB enable. Allows ATA bus sharing with other host devices. ATA_EN=1 to enable ATA interface. ATA_EN=0 to 3-state to hi-Z ATA interface, disable USB interface. 100K internal pull up resistor (See Errata #2, #5) DA0 – DA2 54, 55, 53 O 4 mA TTL ATA Address. ATA66 compliant IO cell. 5V Fail Safe DD0 – DD15 NDIOR 62, 64, 2, 5, 7, 10, 12, 15, 14, 11, 8, 6, 3, 1, 63, 60 IO 56 O 4 mA TTL ATA Data. ATA66 compliant IO cell. 5V Fail Safe 4 mA TTL ATA Read Strobe. ATA66 compliant IO cell. 5V Fail Safe NDIOW 58 O 4 mA TTL ATA Write Strobe. ATA66 compliant IO cell. 5V Fail Safe NCS0, NCS1 50, 51 O 4 mA TTL ATA Chip Selects. ATA66 compliant IO cell. 5V Fail Safe IORDY 49 I TTL ATA Flow Control. ATA66 compliant IO cell. 5V Fail Safe IORDY_PU_EN NATA_RESET 48 16 O O 5V Fail Safe 4 mA TTL ATA IORDY pull-up connection. Active hi, 3state to hi-Z off. ATA66 compliant IO cell. 4 mA TTL ATA pin Reset. ATA66 compliant IO cell. 5V Fail Safe SCL 38 O 4 mA TTL 5V tolerant SDA 37 IO 4 mA TTL 5V tolerant NPWR500 8 29 O 4 mA TTL 3.3V Configuration serial ROM clock. Active low, 3state to hi-Z off. (See Errata #4) Configuration serial ROM address/data. Active low, 3-state to hi-Z off. Indicates host has enabled use of USB Bus power (USB configuration set to a value other than 0) up to the requested amount in the USB descriptor bMaxPower entry. USB Bus powered devices must condition power circuitry with the state of the BUS_POWER signal for correct operation. Active low, 3-state to hi-Z off In-System Design Confidential ISD-200 ASIC Datasheet Pin Name TQFP Pin # Dir Type Description DPLS, DMNS 44, 43 IO USB Transceiver USB differential data USB_ENUM 46 O 4 mA TTL 3.3V USB enumeration control. Power source / sink for 1.5K pull-up resistor on USB Bus DPLS signal. LED 33 O 12 mA TTL 3.3V USB status led control output. Flashes if the USB configuration is set to 0, on solid if USB configuration is set other than 0, and off if USB Bus is suspended. Active low, 3-state to hi-Z off NPWR100 22 O 4 mA TTL 3.3V Indicates USB Bus can supply the lesser value of 100 mA or the USB Descriptor bMaxPower entry. USB BUS powered devices must condition power circuitry with the state of the BUS_POWER signal for correct operation. Active hi, 3-state to hi-Z off BUS_POWER 41 I TTL, pull up Indicates the source of the ATA / ATAPI device power. (See Errata #6) BUS_POWER=1 indicates USB Bus powered. BUS_POWER=0 indicates self power. 100K internal pull up resistor VDD18 13, 32, 36, 59 1.8V Core supply VDD33 4, 23, 47, 52 3.3V IO ring supply VSS 9, 17, 26, 34, 42, 45, 57, 61 Ground Table 1 – Pin Descriptions In-System Design Confidential 9 ISD-200 ASIC Datasheet Overview • USB Mass Storage Class Bulk-Only Specification Compliant (Version 1.0 RC) • Command Queuing Hooks In Hardware To Allow Near Theoretical USB Data Transfer Rates (12 Mb/sec) • USB Version 1.1 Compliant ♦ USB Suspend / Resume Support ♦ USB Remote Wakeup Support • Integrated USB Transceivers • Two Power Source Modes of Operation • ♦ USB Bus Powered ♦ Self Powered ♦ Dynamic (USB Bus or Self Powered) Support with USB Bus Power Capabilities Output Pins Flexible USB Descriptor and ISD-200 Configuration Retrieval Source ♦ I2C Serial ROM Interface ♦ ATA Interface Using Vendor Specific ATA Command (FBh Implemented on ATAPI or ATA Device) ♦ Default On-Chip ROM Contents ♦ Support for two Configuration Descriptors for Dynamic (USB Bus or Self) powered applications • Large 32K Byte Data Buffer Maximizes ATA / ATAPI Data Transfer Rate • ATA Interface Supports ATA Modes 0, 1, And 2 Of Operation • IORDY Support • Event Notification Via Vendor Specific ATA Command ♦ Input Pins For Media Cartridge Detection And Ejection Request ♦ Vendor Specific ATA Command For Event Notification Is Configurable ♦ USB Remote Wakeup Support • Multiple LUN support • Full ATA Command Support By Use of Vendor Specific Command Block in the MSC Command Block Wrapper • Configurable External Clock Source (DPLL) To Provide System Level Clock • Provisions To Share ATA Bus With Other Hosts • Uses Inexpensive 12Mhz Crystal For Clock Source 10 In-System Design Confidential ISD-200 ASIC Datasheet Introduction The ISD-200 implements a bridge between one USB 1.1 (http://www.usb.org/developers/data/usbspec.zip) port and one ATA or ATAPI based mass storage device port. This bridge adheres to the Mass Storage Class Bulk-Only Transport (http://www.usb.org/developers/data/devclass/usbmassbulk_10.pdf) for ATAPI transactions. Hardware design allows ATAPI command queuing which allows data transfer rates of up to the USB theoretical maximum of 12 Mb/sec. The USB port of the ISD-200 is connected to a host computer directly or via the downstream port of a USB hub. Host software issues commands and data to the ISD-200 and receives status and data from the ISD200 using standard USB protocol. The ATA/ATAPI port of the ISD-200 is connected to a mass storage device. A large 32 Kbyte buffer maximizes ATA/ATAPI data transfer rates by minimizing losses due to device seek times. The ATA interface supports ATA PIO modes 0, 1, and 2. The device initialization process is configurable, enabling the ISD-200 to initialize most ATA/ATAPI devices without software intervention. The ISD-200 can also be configured to allow software initialization of the device if initialization requirements are not supported by ISD-200 algorithms. ISD-200 Configuration Certain timing parameters and operational modes in the ISD-200 are configurable and are controlled by a series of bytes, located at the beginning of the descriptor space. ISD-200 configuration data is not to be confused with the USB Configuration Descriptor. ISD-200 Configuration Data and USB Descriptor Sources ISD-200 configuration data and USB descriptor data in the ISD-200 can be retrieved from several sources, selected by the mode of operation at power up. This provides for maximal flexibility in configuration possibilities. There are two possible external sources for descriptor data. Table 2 indicates the method of determining which of all data sources are used. ISD-200 configuration and USB descriptor data can be supplied from an I2C serial memory device. The ISD-200 can address 4 Kbytes of serial ROM data, but USB descriptor information must be limited to 512 bytes maximum. The ISD-200 provides support for the 24LC01-16 family EEPROM interface. Alternatively, configuration and descriptor data can be supplied by an attached mass storage device through a vendor-specific Identify (FBh) command. The ISD-200 provides internal RAM (320 bytes) to hold the data. The ISD-200 also contains an on-board set of ISD-200 configuration and USB descriptors. Retrieval of the on-board data will occur if no external descriptor data is supplied (See Table 2). These on-board descriptors may be used during development, prototyping, and manufacturing. ISD-200 configuration and descriptor sources are selected by the mode of operation detected at power up. The following table describes how the ISD-200 determines USB Descriptor sources. Serial ROM present No I_MODE Input Pin 0 ISD-200 Configuration and USB Descriptor Retrieval In this mode, the ISD-200 uses a DIE-ID identifier generated at fabrication to provide a unique 12-character Serial Number descriptor string. All other Descriptor and Configuration values are taken from the In-System Design Confidential 11 ISD-200 ASIC Datasheet Serial ROM present I_MODE Input Pin No 1 Yes 0 Yes 1 ISD-200 Configuration and USB Descriptor Retrieval internal on-board ROM. The ISD-200 retrieves all Descriptor and Configuration values from the vendor-specific Identify (FBh) data. The ISD-200 is configured using values in the internal ROM until the FBh data becomes available The ISD-200 retrieves all Descriptor and Configuration values from serial ROM. The ISD-200 is configured using values present in serial ROM data only (Unless the serial ROM signature check fails. The ISD200 then uses POR defaults listed in the Descriptor and Configuration data sections of this document). Undefined mode of operation. Table 2 – ISD-200 Configuration and Descriptor Sources Internal ROM Contents Internal on-board ROM addresses and the contents of those locations are shown in Tables 3 and 7 to 11. If the ISD-200 is operated using the on-board ROM contents for descriptor data, the Serial Number string is still guaranteed to be unique, as required by the USB Mass Storage Class (MSC) Bulk Only Transport Specification, through the utilization of a DIE-ID process at fabrication. This unique identifier is generated through the usage of physical parameters such as wafer coordinates, wafer number, lot number, fab number, date, time, etc. The internal ROM is also convenient for prototyping and manufacturing activities. Enough information is supplied from the internal ROM to the host that the ISD-200 will enumerate even when an un-programmed serial ROM is connected. Serial ROM Interface The ISD-200 supports the I2C “fast mode” interface, as found in the 24(L)C01-16 EEPROM family. That device family allows for up to 4 Kbytes of external storage, which may be used to store descriptors and other information. Note that if a 24(L)C04/08/16 part is used, no descriptor is allowed to span multiple pages within the EEPROM. Programming of the serial ROM can be accomplished using an external device programmer, ISD-200 supported vendor specific USB commands, or using a “bed of nails” while the ISD-200 is in LIMBO Test mode (See Operational Modes, Test Mode Pins). An example of Serial ROM formatting is shown in Appendix A. Unused space in a serial ROM may be used for other purposes using the LOAD_CONFIG_DATA and READ_CONFIG_DATA USB Requests. Hardware detects the presence of a serial ROM and, if one is present, performs a data validity check. This check is in the form of a ‘signature’ and is located at the beginning of the serial ROM data (Addresses 0x0 – 0x1, Table 3). If none is detected or the signature check fails, the ISD-200 will return configuration and descriptor data from the internal on-board ROM. Vendor-Specific Identify (FBh) Data If a serial ROM is not used, the ISD-200 can be configured to accept Descriptor and Configuration data from an attached device using a vendor-specific Identify command during the boot sequence. (See Operational Modes, I_MODE Pin) For FBh data to be deemed valid, it must first pass a validity check. This check is in the form of a ‘signature’ and is located at the beginning of the FBh data (Addresses 0x0 – 0x1, Table 3). In the event of a failed signature check, the ISD-200 will respond to all Get_Descriptor or Get_Configuration USB 12 In-System Design Confidential ISD-200 ASIC Datasheet commands by returning the defaults contained in the internal on-board ROM (See ATA/ATAPI Interface, Vendor-Specific ATA Commands, Identify). An example of vendor-specific Identify (FBh) data formatting is shown in Appendix A. ISD-200 Configuration/USB Descriptor Data Formatting Data formatting for all ISD-200 configuration data and USB descriptor data is identical for Internal ROM, Serial ROM, and vendor-specific Identify (FBh) data. The following sections show how the ISD-200 configuration data is mapped into address space. The USB Interface section contains formatting of USB descriptor data (See Tables 7-11). ISD-200 Configuration Data The ISD-200 Configuration Data is located in addresses 0 to 9 of the Descriptor/Configuration data contents. These bytes are read at power up and determine certain parameters and operational modes used by the ISD-200. Power-on reset default values are specified in bold. Formatting is identical for the internal ROM, serial ROM, and vendor-specific Identify (FBh) data. See Appendix A. The ISD-200 Configuration Bytes get loaded into internal registers, regardless of the original data source. Address Field Name 0x00 Data Signature (LSB) 0x01 Data Signature (MSB) 0x02 Event Notification 0x03 DPLL Parameters 0x04 ATA Initialization Timeout Description On-board Defaults This field specifies the least significant byte of the Serial ROM/FBh signature. This register does not exist in HW (no POR values) This field specifies the most significant byte of the Serial ROM/FBh signature. This register does not exist in HW (no POR values) This field specifies the ATA event notification command. Setting this field to 0x00 disables this feature. POR configuration default of 0x00 This field denotes the parameters used by the internal DPLL. The original clock source is 12 MHz. 5 bits M (7:3), 2 bits N (2:1), 1 bit Enable (0). When enabled, multiply the original clock source by M, divided by N M: 00000 => M=1 00001 => M=1 00010 => M=2 00011 => M=3 …. 11111 => M=31 N: 00 => N=1 01 => N=3 10 => N=2 11 => N=4 Enable: 0 => CLK_N disabled 1 => CLK_N enabled POR configuration default of 0x00 This field specifies the time in multiples of 128 ms (0x19 = 3.2s) before the ISD-200 stops polling the Alternate Status device register for reset complete and restarts the reset process. NOTE: The ROM contents ATA Initialization Timeout value must be large enough to accommodate I_MODE operation during the first device initialization sequence (before FBh configuration data load) POR configuration default of 0x02 0x52 In-System Design Confidential 0x48 0x00 0x00 0x19 13 ISD-200 ASIC Datasheet Address 0x05 0x06 0x07 14 Field Name Description Reserved – Bits [7:6] Master/Slave Selection – Bit [5] Reserved; set to ‘0’ This bit specifies device number selection. “0” - Drive 0 “1” - Drive 1 ATAPI DEVICE RESET – Bit [4] This bit specifies that the ISD-200 perform a ATAPI DEVICE RESET command during a full initialization sequence. ATA Timing – Bits [3:0] This field determines ATA Bus data access cycle times. 0000 reserved 0001 Mode 2 (292 ns) 0010 Mode 2 (333 ns) 0011 Mode 2 (375 ns) 0100 Mode 1 (458 ns) 0101 Mode 1 (500 ns) 0110 Mode 1 (542 ns) 0111 Mode 1 (583 ns) 1000 Mode 0 (625 ns) 1001 Mode 0 (666 ns) 1010 Mode 0 (708 ns) 1011 Mode 0 (750 ns) 1100 reserved 1101 reserved 1110 reserved 1111 reserved POR configuration default of 0x0B This field specifies the value in CBWCB field that designates if the CB is decoded as ATA commands instead of the ATAPI command block. POR configuration default of 0x00 This field specifies the value in CBWCB field that designates if the CB is decoded as ATA commands instead of the ATAPI command block. POR configuration default of 0x00 ATA Command Designator (Byte 0, LSB) ATA Command Designator (Byte 1, MSB) In-System Design Confidential On-board Defaults 0x01 0x24 0x24 ISD-200 ASIC Datasheet Address 0x08 Field Name Description On-board Defaults Initialization Status – Bit[7] This (Read Only) bit denotes the Device Initialization Status. If set, indicates the device initialization sequence is active. 0x08 Configuration Descriptor 2 Present – Bit[6] This bit specifies that a second Configuration Descriptor is present. See “BUS_POWER pin” under the “Power Management” section. “0” - not present “1” - present Skip ATA / ATAPI Device Initialization – Bit[5] This bit specifies that the ISD-200 skip device initialization. “0” - normal operation “1” - only reset the device prior to allowing USB enumeration. The function of this bit is overridden (0) if I_MODE is set. Notification command, descriptor override, SRST enable, ATAPI DEVICE RESET settings are irrelevant. ATA HIGH POWER Device for USB Bus Powered Devices – Bit[4] Setting this bit indicates that when USB Bus powered, the system’s ATA interface is only powered when the NPWR500 pin is active (not controlled by NPWR100). “0” – normal operation “1” – If (BUS_POWER = 1) and (USB configuration = 0) then ATA pads are put into low power mode, ATA control lines (RESET-, DIOR-, DIOW-) are 3-stated to hi-Z, and the remainder of the ATA lines(NCS(1:0), DA(2:0), DD(15:0), and IORDY_PU_EN) are driven low. (See Power Management section) 0x09 Descriptor Override – Bit[3] Setting this bit causes the ISD-200 to override the USB Descriptors for ATA devices. Not compatible with setting BUS_POWER=1. If set, (I_MODE = 0), AND (ATA device identified or device initialization fails), bDeviceClass returned as 0xFF bDeviceSubClass returned as 0x00 bDeviceProtocol returned as 0xFF bInterfaceClass returned as 0xFF bInterfaceSubClass returned as 0x00 bInterfaceProtocol returned as 0xFF idProduct bit 0 is replaced with a ‘1’ (Suggested: even idProduct for ATAPI devices, odd numbers for ATA devices) else USB descriptor information unaltered Last LUN Identifier – Bits[2:0] This field denotes the (zero-based) maximum number of LUNs supported. Reserved – Bits[7:2] POR configuration default of 0x30 Reserved; set to ‘0’ Report One Configuration – Bit[1] This bit determines whether one or two configuration descriptors are made available to the host. This bit should not be set if the Configuration Descriptor 2 Present configuration bit is not set. “0” - Both descriptors are reported to the host if BUS_POWER=0 “1” - Report only the configuration descriptor that corresponds to state of the BUS_POWER input. Configuration 1 is returned when BUS_POWER=1, configuration 2 is returned when BUS_POWER=0 SRST Enable – Bit[0] Setting this bit enables the SRST reset algorithm in the ISD-200. POR configuration default of 0x00 0x01 Table 3 – ISD-200 Configuration Bytes Valid Configuration Byte Settings The following table depicts valid combinations of configuration byte settings and inputs that depend on the configuration source and USB Bus power usage. Operation outside the defined values may result in unexpected behavior and should be avoided. In-System Design Confidential 15 Report One USB Configuration (configuration bit) Configuration Descriptor 2 Present (configuration bit) ATA HIGH POWER (configuration bit) I_MODE (input pin) Mode of Operation Descriptor Override (configuration bit) ISD-200 ASIC Datasheet Configuration Source Serial ROM 0 0/1 0/1 FBh (I_MODE) Data 1 0 0 Internal ROM 0 0/1 0/1 Attached Device Power Source USB Bus Only 0 0/1 0 0 Self-Powered Only 0/1 0 0 0 USB Bus or Self Powered 0 0/1 0 0 USB Bus or Self Powered 0 0/1 1 0/1 Note: Internal ROM value options are listed here in case the Internal ROM mask is rolled for a specific product/vendor application. See Table 3 and 7-11 for Internal ROM contents. Table 4 – Valid Configuration Byte Settings USB Interface The USB port on the ISD-200 is electrically and logically compliant with the Universal Serial Bus Specification Revision 1.1 (http://www.usb.org/developers/data/usbspec.zip). Descriptor Requirements Descriptors programmed into a serial ROM or vendor-specific Identify (FBh) command data must observe the following constraints. Configuration Descriptors The ISD-200 can support one or two configuration descriptors. If the system can operate as USB Bus powered and self powered, the ISD-200 requires that the first configuration descriptor be “dynamic” and the second be self powered. If the system can only operate as USB Bus powered or self powered, then only the first configuration descriptor is used (the second configuration descriptor is zeroed out and not reported to the host). See Power Management , BUS_POWER pin section. String Descriptor Indexes The ISD-200 imposes constraints on what descriptor string index values are allowable. For those strings that are optional, an index of 0x00 indicates that string is absent. Allowable string indexes are as follows: iManufacturer iProduct iConfiguration1 iInterface1 iSerialNumber iConfiguration2 iInterface2 16 0x01 or 0x00 if unused 0x02 or 0x00 if unused 0x03 or 0x00 if unused 0x04 or 0x00 if unused 0x05 (must be present to be MSC compliant) 0x07 or 0x00 if unused 0x08 or 0x00 if unused In-System Design Confidential ISD-200 ASIC Datasheet Descriptor Override If the ISD-200 is to be used in applications where either ATA or ATAPI devices may be connected, the Descriptor Override configuration bit must be set. To avoid confusion, it is suggested that the idProduct(LSB) descriptor field be assigned an even or odd value depending on the device type. The detection of an ATA or ATAPI device initialization failure results in bit-0 of this value being replaced with ‘1’. Thus, it is suggested that ATAPI devices should have even idProduct values and ATA devices odd. Pipes This ISD-200 provides four USB pipes: Default Control, Bulk Out, Bulk In, and Interrupt. Default Control Pipe The default pipe is used to transport standard, class and vendor-specific USB requests to the ISD-200. Bulk Out Pipe The Bulk Out pipe is used to send command and data to an attached mass storage device. Maximum packet size is 64 bytes. Bulk In Pipe The Bulk In pipe is used to receive status and read data from an attached mass storage device. Maximum packet size is 64 bytes. Interrupt Pipe The Interrupt pipe is implemented for legacy driver compatibility reasons only. If addressed, it will always return 0x00. Requests The ISD-200 responds to three different types of request: • Standard USB device requests • Mass Storage Class Bulk-Only requests • Vendor-specific requests Standard Requests The ISD-200 supports all USB standard device requests except the optional Set Descriptor request. These requests, which are described in Chapter 9, Device Framework, of the USB Specification, are: • Clear Feature • Get Configuration • Get Descriptor (for information on String Descriptors, see String Descriptors on page 23) • Get Interface • Get Status • Set Address • Set Configuration • Set Interface • Set Feature Mass Storage Class Bulk-Only Requests Mass Storage Class Bulk-Only requests supported by the ISD-200 are listed in the following table. In-System Design Confidential 17 ISD-200 ASIC Datasheet Label HARD_RESET GET_MAX_LUN bmRequestType 00100001b 10100001b bRequest 11111111b 11111110b wValue 0000h 0000h wIndex Interface Interface wLength 0000h 0001h Data [None] 1 byte Table 5 – Mass Storage Class Bulk-Only Requests HARD_RESET This request flushes all buffers and resets the pipes to their default states, resets all hardware and registers to their default state, causes the ISD-200 to enter a power-up reset state, and resets the attached ATA device with a pin reset (NATA_RESET). Any STALL conditions or bulk data toggle bits remain unchanged. Vendor-Specific Requests Vendor specific requests supported by the ISD-200 are listed in the following table. bmRequestType bRequest LOAD_CONFIG_DATA Label 01000000b 00000001b READ_CONFIG_DATA 11000000b 00000010b SOFT_RESET CMD_QUEUING_CONTROL 01000000b 01000000b 00000011b 00000100b wValue Data Source Data Source 0000h 0000h wIndex WLength Starting Address Starting Address 0000h Queuing Control Data Length Data Length 0000h 0000h Data Write Data Read Data [None] [None] Table 6 – Vendor-Specific Requests LOAD_CONFIG_DATA This request allows configuration data to be written to the data source specified by the wValue field. The wIndex field specifies the starting address in the data source to which data is to be written and the wLength field denotes the length in bytes of data to be written. Legal values for wValue are as follows: 0x0000 0x0002 Configuration bytes, addresses 0x2 – 0x9 only External serial ROM Writes to serial ROM may only be written starting on eight-byte boundaries, which means that the address value must be evenly divisible by eight. Also, writes to the serial ROM may only include a single 256 byte page per transaction. For example: 250 bytes may be written if the Starting Address is 6. (See Errata #3) Writes to the configuration bytes must be constrained to addresses 0x2 through 0x9, discussed in the ISD200 Configuration data section (See Table 3). Attempts to write outside this address space will result in a STALL condition. Only ISD-200 Configuration Byte registers get over written and not the original data source (serial ROM, FBh data, or on-board ROM). Illegal values for wValue as well as attempts to write to a serial ROM when none is connected will result in a STALL condition on the USB port. READ_CONFIG_DATA This USB request allows data to be retrieved from the data source specified by the wValue field. Data is retrieved from the data source, beginning at the address specified by wIndex. The wLength field denotes the length in bytes of data to be read from the data source. 18 In-System Design Confidential ISD-200 ASIC Datasheet Legal values for wValue are as follows: 0x0000 0x0001 0x0002 0x0003 Configuration bytes, addresses 0x2 – 0x9 only Internal on-board ROM External serial ROM Vendor-specific Identify (FBh) data Illegal values for wValue will result in a STALL condition on the USB port. Attempted reads from a serial ROM when none is connected or attempted reads from FBh data when not in I_MODE or when a serial ROM is present will result in a STALL condition. Attempts to read configuration bytes outside the address space 0x2 – 0x9 will also result in a STALL condition. SOFT_RESET This request resets the ISD-200 data path control state machines, buffer ram and the command queue. The attached device does not get reset. This USB request is required for error recovery if complex command queuing is used. CMD_QUEUING_CONTROL This request sets the type of command queuing used by the ISD-200. Enabling command queuing allows the ISD-200 to accept a CBW (refer to the USB Mass Storage Class Bulk Only Transport Specification) from a new command before the CSW for an earlier command has been sent. There are two types of command queuing, simple command queuing and complex command queuing. Simple command queuing allows the ISD-200 to accept a CBW for a new command before the previous command completes. If the previous command is a bulk out transfer, the CBW is not taken until all data for the previous command has been transferred. The new command will not be operated on until the CSW for the prior command has been sent. Error recovery is done through a HARD_RESET request. Complex command queuing enables out of order error recovery without resetting the attached device. Command queuing is done in the same manner as in simple command queuing. However, in the event of a an error, the ISD-200 can now accept a SOFT_RESET which resets the ISD-200 but does not reset the device. Legal values for wIndex are as follows: 0x0000 0x0001 Simple Command Queuing (POR default) Complex Command Queuing Descriptors Supported Descriptors • Device • Configuration The ISD-200 supports one or two possible configurations depending on the mode of operation. See Power Management, BUS_POWER pin section. Configuration 1. This configuration descriptor is used for Self, USB Bus, or Dynamic power applications. “Dynamic” power is defined to mean that the ISD-200 can operate as Self or USB Bus powered. The maximum power that can be drawn from the USB Bus is specified in the bMaxPower descriptor field. In-System Design Confidential 19 ISD-200 ASIC Datasheet Configuration 2. This configuration denotes that the ISD-200 is Self powered only and is only used if Configuration 1 is Dynamic power. • Interface The ISD-200 supports one interface with four possible endpoints. • • Endpoint The ISD-200 supports the following endpoints: Default Control endpoint. Accessible as endpoint 0. Bulk Out endpoint. Accessible as endpoint 1. Bulk In endpoint. Accessible as endpoint 2. Interrupt endpoint. Accessible as endpoint 3. String The ISD-200 supports a set of class and vendor-specific string descriptors. For more information on strings, refer to the following section. Descriptor Data Format Device Descriptor There is only one device descriptor for each USB device. This descriptor gives USB information about the ISD-200 device such as definitions of the device class and device subclass, among other things. The bNumConfigurations field specifies how many configurations the ISD-200 supports. See Power Management, BUS_POWER Pin section. Address Field Name Description On-board Defaults 0x12 bLength Length of device descriptor in bytes. 0x13 bDescriptor Type Descriptor type. 0x01 0x14 bcdUSB (LSB) USB Specification release number in BCD. 0x10 0x15 bcdUSB (MSB) 0x16 bDeviceClass 0x17 bDeviceSubClass 0x18 bDeviceProtocol 0x19 0x1A 0x01 0x00 bMaxPacketSize Device class. If (Descriptor Override configuration bit = 1 and I_MODE = 0) AND (an ATA device is detected or device initialization fails to complete), this field is returned as 0xFF. Device subclass. If (Descriptor Override configuration bit = 1 and I_MODE = 0) AND (an ATA device is detected or device initialization fails to complete), this field is returned as 0x00 Device protocol. If (Descriptor Override configuration bit = 1 and I_MODE = 0) AND (an ATA device is detected or device initialization fails to complete), this field is returned as 0xFF Maximum USB packet size supported idVendor (LSB) Vendor ID. 0xAB 0x1B idVendor (MSB) 0x1C idProduct (LSB) 0x1D idProduct (MSB) 0x1E bcdDevice (LSB) 0x1F bcdDevice (MSB) 0x20 iManufacturer 20 0x12 0x00 0x00 0x40 0x05 Product ID. If (Descriptor Override configuration bit = 1 and I_MODE = 0) AND (an ATA device is detected or device initialization fails to complete), this field is returned as idProduct bit 0 is replaced with a ‘1’ Device release number in BCD. Index to manufacturer string. This entry must be set to 0x01 if string is present, else 0x00 if not present In-System Design Confidential 0x30 0x00 * 0x00 ** 0x10 0x01 0x01 ISD-200 ASIC Datasheet Address Field Name 0x21 iProduct 0x22 iSerialNumber 0x23 bNumConfigurations Description Index to product string. This entry must be set to 0x02 if string is present, else 0x00 if not present Index to serial number string. This entry must be set to 0x05 if string is present, else 0x00 if not present. The USB Mass Storage Class Bulk Only Transport Specification requires a unique serial number. Number of configurations supported. This value must be consistent with configuration settings for ‘Configuration Descriptor 2 Present’ and ‘Report 1 Configuration’. Valid values are: 1 (CFG_2_PRESENT=0) OR (CFG_2_PRESENT=1 AND RPT_1_CFG=1) 2 (CFG_2_PRESENT=1 AND RPT_1_CFG=0) If (`Descriptor 2 Present’ = 1) and (‘Report 1 Configuration’ = 0) and (BUS_POWER = 1) then this value is overridden with 0x01. On-board Defaults 0x02 0x05 0x01 * - First Silicon value “0002” ** - Second Silicon value “String(6) = Table 7– Device Descriptor Configuration Descriptor The ISD-200 supports up to two configuration descriptors. The configuration descriptor contains information about the ISD-200 device configuration. Each configuration has one interface that supports four endpoints. If a second configuration descriptor is used, offset locations 0x24-0x27 in the following table are used to override the appropriate values. The common descriptor fields are shared with the first configuration. See Power Management, BUS_POWER pin section. Address Field Name Description On-board Defaults 0x24 bConfiguration Value 2 0x00 0x25 iConfiguration 2 0x26 bMaxPower 2 0x27 iInterface 2 0x28 bLength The value to use as an argument to Set Configuration to select the configuration. This entry must be set to 0x02 if two configuration descriptors are present. Index to second configuration string. This entry must be set to 0x07 if string is present, otherwise set to 0x00 if not present. Maximum power consumption for the second configuration. Units used are mA*2 (i.e. 0x31 = 98 mA). Index to interface string associated with the second configuration descriptor. This entry must be set to 0x08 if string is present, otherwise set to 0x00 if not present. Length of configuration descriptor in bytes. 0x29 bDescriptorType Descriptor type. 0x02 0x2A bTotalLength (LSB) 0x27 0x00 0x00 0x00 0x00 0x09 0x2B bTotalLength (MSB) Number of bytes returned in this configuration. This includes the configuration descriptor plus all the interface and endpoint descriptors. 0x2C bNumInterfaces Number of interfaces supported. The ISD-200 only supports one interface. 0x01 0x2D bConfiguration Value 1 0x01 0x2E iConfiguration 1 0x2F bmAttributes 0x30 bMaxPower 1 The value to use as an argument to Set Configuration to select the configuration. Set to 0x01 for the first configuration descriptor. Index to first configuration string. This entry must be set to 0x03 if string is present, otherwise set to 0x00 if not present. Device attributes for this configuration. Configuration characteristics: Bit Description On-board default 7 Reserved. ‘1’ 6 Self-powered. ‘1’ 5 Remote wake-up. ‘1’/’0’ (See Operational Modes, NEJECT, NCART_DET Pins) 4-0 Reserved, set to 0. ‘0’ Maximum power consumption for the second configuration. Units used are mA*2 (i.e. 0x31 = 98 mA). In-System Design Confidential 0x00 * 0xE0 ** 0xC0 0x31 21 ISD-200 ASIC Datasheet Address Field Name Description On-board Defaults * - First Silicon value ** - Second Silicon value Table 8 – Configuration Descriptor(s) Interface Descriptor This descriptor specifies the specific interface within a configuration. In the ISD-200, the interface contains four endpoint descriptors: Default Control (no descriptor), Bulk out, Bulk in, and Interrupt. It should be noted that the Interrupt endpoint is only present for driver legacy reasons. It shall always return 0x00 when it is polled. Interface and endpoint descriptors cannot be directly accessed using the Get_Descriptor USB command. However, interface and endpoint descriptors are always returned or written to as part of the configuration descriptor. Endpoint descriptors and addresses must be in the fixed order of the ISD-200 on-board defaults. Bulk-out first, then Bulk-in followed by Interrupt. Address Field Name Description On-board Defaults 0x31 bLength Length of interface descriptor in bytes. 0x09 0x32 bDescriptorType Descriptor type. 0x04 0x33 bInterfaceNumber Interface number. 0x00 0x34 bAlternateSettings Alternate settings 0x00 0x35 bNumEndpoints Number of endpoints 0x03 0x36 bInterfaceClass 0x08 0x37 bInterfaceSubClass 0x38 bInterfaceProtocol 0x39 iInterface 1 Interface class. If (Descriptor Override configuration bit = 1 and I_MODE = 0) AND (an ATA device is detected or device initialization fails to complete), this field is returned as 0xFF. Interface subclass. If (Descriptor Override configuration bit = 1 and I_MODE = 0) AND (an ATA device is detected or device initialization fails to complete), this field is returned as 0x00. Interface protocol. If (Descriptor Override configuration bit = 1 and I_MODE = 0) AND (an ATA device is detected or device initialization fails to complete), this field is returned as 0xFF. Index to interface string associated with the first configuration descriptor. This entry must be set to 0x04 if string is present, otherwise set to 0x00 if not present. USB Bulk Out Endpoint 0x3A bLength Length of this descriptor in bytes. 0x07 0x3B bDescriptorType Endpoint descriptor type. 0x05 0x3C bEndpointAddress This is an Out endpoint, endpoint number 1. 0x01 0x3D bmAttributes This is a bulk endpoint. 0x02 0x3E wMaxPacketSize (LSB) Max data transfer size. 0x40 0x3F 0x40 wMaxPacketSize (MSB) bInterval Does not apply to bulk endpoints. 0x41 bLength Length of this descriptor in bytes. 0x42 bDescriptorType Endpoint descriptor type. 0x05 0x43 bEndpointAddress This is an In endpoint, endpoint number 2. 0x82 0x44 bmAttributes This is a bulk endpoint. 0x02 0x06 0x50 0x00 0x00 0x00 USB Bulk In Endpoint 22 In-System Design Confidential 0x07 ISD-200 ASIC Datasheet Address Field Name 0x45 wMaxPacketSize (LSB) 0x46 wMaxPacketSize (MSB) bInterval 0x47 Description Max data transfer size. On-board Defaults 0x40 0x00 Does not apply to bulk endpoints. 0x00 USB Interrupt Endpoint 0x48 bLength Length of this descriptor in bytes. 0x07 0x49 bDescriptorType Endpoint descriptor type. 0x05 0x4A bEndpointAddress This is an Interrupt endpoint, endpoint number 3. 0x83 0x4B bmAttributes This is an interrupt endpoint. 0x03 Max data transfer size. 0x4C wMaxPacketSize (LSB) 0x4D wMaxPacketSize (MSB) 0x4E bInterval 0x02 0x00 This is the polling interval. 0x20 Table 9 – Interface Descriptor String Descriptors The ISD-200 supports 9 USB string descriptors. These strings can be referenced by standard descriptors (e.g. a manufacturer name string indexed by the iManufacturer field in the Device Descriptor). All string descriptor lengths are restricted to 63 bytes or less. All optional string descriptors are referenced using a table of starting string addresses (See Table 10). The starting address values are specified as the descriptor location divided by 2 (e.g. Language ID string begins at 0x50 but is specified in the table to be 0x28). If a particular string isn’t implemented, the starting address value must be set to 0x00. String index 6 is hard coded to return the English Unicode ISD-200 Hardware revision string “0002” or “0003”. Similarly, as specified in the descriptor tables, if a string isn’t implemented, the index (example: iProduct in the device descriptor) reference must be set to 0x00. Address Field Name Description On-board Defaults 0x0A Language ID String(0) Starting Address Manufacturer String(1) Starting Address Product String Starting(2) Address Configuration 1 String(3) Starting Address Configuration 1 Interface String(4) Starting Address Serial Number String(5) Starting Address Address location for LANGID string (divided by 2). This offset must be set to 0x00 if the string is not present. Address location for iManufacturer string (divided by 2). This offset must be set to 0x00 if the string is not present. Address location for iProduct string (divided by 2). This offset must be set to 0x00 if the string is not present. Address location for iConfiguration string (divided by 2). This offset must be set to 0x00 if the string is not present. Address location for iInterface string (divided by 2). This offset must be set to 0x00 if the string is not present. Address location for iSerialNumber string (divided by 2). This offset must be set to 0x00 if the string is not present. The USB Mass Storage Class Bulk Only Transport Specification requires a unique serial number. Address location for second iConfiguration 2 string (divided by 2). This offset must be set to 0x00 if the string is not present. Address location for second iInterface 2 string (divided by 2). This offset must be set to 0x00 if the string is not present. 0x28 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 Configuration 2 String(7) Starting Address Configuration 2 Interface String(8) Starting Address 0x2A 0x3B 0x00 0x00 0x00 0x00 0x00 Table 10 – String Locations String index 0 must contain the LANGID of exactly one language, as the ISD-200 supports only a single language. Microsoft defines the LANGID codes for Windows, as described in Developing International Software for Windows 95 and Windows NT, Nadine Kano, Microsoft Press, Redmond, Washington. Note that the LANGID code for English is 0x0409 (http://www.usb.org/developers/data/USB_LANGIDs.pdf). In-System Design Confidential 23 ISD-200 ASIC Datasheet There is an additional string, index 6, that is not referenced by standard descriptors. Index 6 contains the ISD-200 Hardware Revision string. The following table shows how the LANGID, manufacturer, and product strings are formatted in the on-board ROM contents, and this can be considered an example of how to format strings in a serial ROM or in FBh data. Each string character is comprised of an ASCII character appended to a NULL byte to meet the UNICODE encoding requirements as specified in The Unicode Standard, Worldwide Character Encoding, Version 1.0, Volumes 1 and 2. Address Field Name Description On-board Defaults USB String Descriptor - Index 0 (LANGID) 0x50 bLength LANGID string descriptor length in bytes. 0x04 0x51 bDescriptorType Descriptor type. 0x03 0x52 LANGID (LSB) 0x53 LANGID (MSB) Language supported. Note: See LANGID table in Microsoft documentation (the code for English is 0x0409) USB String Descriptor - Index 1 (Manufacturer) 0x04 0x54 bLength String descriptor length in bytes (restricted to 63 bytes or less). 0x22 0x55 bDescriptorType Descriptor type. 0x03 0x56 bString ASCII character. 0x49 (“I”) 0x57 bString (“NUL”) 0x00 0x58 bString ASCII character. 0x6E (“n”) 0x59 bString (“NUL”) 0x00 0x5A bString ASCII character. 0x2D (“-“) 0x00 0x09 0x5B bString (“NUL”) 0x5C bString ASCII character. 0x53 (“S”) 0x5D bString (“NUL”) 0x00 0x5E bString ASCII character. 0x79 (“y”) 0x5F bString (“NUL”) 0x00 0x60 bString ASCII character. 0x73 (“s”) 0x61 bString (“NUL”) 0x00 0x62 bString ASCII character. 0x74 (“t”) 0x63 bString (“NUL”) 0x00 0x64 bString ASCII character. 0x65 (“e”) 0x65 bString (“NUL”) 0x00 0x66 bString ASCII character. 0x6D (“m”) 0x67 bString (“NUL”) 0x00 0x68 bString ASCII character. 0x20 (“ “) 0x69 bString (“NUL”) 0x00 0x6A bString ASCII character. 0x44 (“D”) 0x6B bString (“NUL”) 0x00 0x6C bString ASCII character. 0x65 (“e”) 0x6D bString (“NUL”) 0x00 0x6E bString ASCII character. 0x73 (“s”) 0x6F bString (“NUL”) 0x00 0x70 bString ASCII character. 0x69 (“i”) 0x71 bString (“NUL”) 0x00 0x72 bString ASCII character. 0x67 (“g”) 0x73 bString (“NUL”) 0x00 0x74 bString ASCII character. 0x6E (“n”) 0x75 bString (“NUL”) 0x00 USB String Descriptor - Index 2 (Product) 24 In-System Design Confidential ISD-200 ASIC Datasheet Address Field Name Description On-board Defaults 0x76 bLength String descriptor length in bytes (restricted to 63 bytes or less). 0x28 0x77 bDescriptorType Descriptor type 0x03 0x78 bString ASCII character. 0x55 (“U”) 0x00 0x79 bString (“NUL”) 0x7A bString ASCII character. 0x53 (“S”) 0x7B bString (“NUL”) 0x00 0x7C bString ASCII character. 0x42 (“B”) 0x7D bString (“NUL”) 0x00 0x7E bString ASCII character. 0x20 (“ “) 0x7F bString (“NUL”) 0x00 0x80 bString ASCII character. 0x53 (“S”) 0x81 bString (“NUL”) 0x00 0x82 bString ASCII character. 0x74 (“t”) 0x83 bString (“NUL”) 0x00 0x84 bString ASCII character. 0x6F (“o”) 0x85 bString (“NUL”) 0x00 0x86 bString ASCII character. 0x72 (“r”) 0x87 bString (“NUL”) 0x00 0x88 bString ASCII character. 0x61 (“a”) 0x89 bString (“NUL”) 0x00 0x8A bString ASCII character. 0x67 (“g”) 0x8B bString (“NUL”) 0x00 0x8C bString ASCII character. 0x65 (“e”) 0x8D bString (“NUL”) 0x00 0x8E bString ASCII character. 0x20 (“ “) 0x8F bString (“NUL”) 0x00 0x90 bString ASCII character. 0x41 (“A”) 0x91 bString (“NUL”) 0x00 0x92 bString ASCII character. 0x64 (“d”) 0x93 bString (“NUL”) 0x00 0x94 bString ASCII character. 0x61 (“a”) 0x95 bString (“NUL”) 0x00 0x96 bString ASCII character. 0x70 (“p”) 0x00 0x97 bString (“NUL”) 0x98 bString ASCII character. 0x74 (“t”) 0x99 bString (“NUL”) 0x00 0x9A bString ASCII character. 0x65 (“e”) 0x9B bString (“NUL”) 0x00 0x9C bString ASCII character. 0x72 (“r”) 0x9D bString (“NUL”) 0x00 0x9E0x135 Not used 0x136 bLength String descriptor length in bytes (Hardware revision string). 0x0A 0x137 bDescriptorType Descriptor type 0x03 0x138 bString 0x139 bString 0x00 0x13A bString 0x30 0x13B bString 0x00 0x13C bString 0x30 0xXX Hardware Revision String Descriptor - Index 6 0x30 In-System Design Confidential 25 ISD-200 ASIC Datasheet Address Field Name Description On-board Defaults 0x13D bString 0x00 0x13E bString * 0x32 ** 0x33 0x13F bString 0x00 * - First Silicon value ** - Second Silicon value Table 11 – String Descriptors ATA/ATAPI Interface The ATA/ATAPI port on the ISD-200 is compliant with the Information Technology – AT Attachment with Packet Interface – 4 (ATA/ATAPI-4) Specification, T13/1153D Rev 18 (ftp://fission.dt.wdc.com/x3t13/project/d1153r18.pdf). The ISD-200 provides support for Packet commands as well as ATA commands. The ISD-200 provides a vendor-specific Identify (FBh) command that returns configuration data and USB descriptor information (see Descriptors section, page 7) from an attached mass storage device. Additionally, there is a built in vendor-specific event notify command to communicate certain events on an interrupt basis to the device. Protocol The ISD-200 supports command protocol flows as defined in the ATA/ATAPI-4 Specification. Commands are grouped into different classes, based on the protocol followed for command execution. The ATA/ATAPI interface supports the following clarifications: • • • Immediately after the reset recovery period, the ISD-200 will write 0x00 to the Device Control register. Arbitrary byte count transfers supported. 16-bit data reads and writes. 8-bit data transfers not supported. Reset Mapping The ATA/ATAPI Interface responds to several resets, Power-on, Resume, USB, MSC Hard, and Vendorspecific Soft reset. In the case of a Power-on reset, a full device initialization is performed (See Figure 3). FBh data is retrieved and stored if applicable. In the case of a Resume reset, a full device initialization is performed as well (previously stored FBh data is not effected). In the cases of USB reset and MSC Hard reset, a partial initialization is performed which excludes all attempts to perform Identify Device commands. If BUS_POWER=1 then the USB reset causes a full initialization after the USB configuration setting is restored. In the case of a Vendor-specific Soft reset, only the internal state machines are reset. 26 In-System Design Confidential ISD-200 ASIC Datasheet Device Requirements Attached mass storage devices must support the following device requirements. ATA Power Supplied from the USB Bus Power requirements for the device vary depending upon the mode used. If no serial ROM is present and IMODE is asserted, the device must be capable of operating at 4.4V when in enumeration mode (100 mA). That is, when obtaining configuration and USB descriptor information from the device using the vendorspecific Identify (FBh) command. After enumeration, the device must be able to operate at 4.75V when in operational mode (500 mA). If a serial ROM is used, the device must be able to operate at 4.75V when obtaining configuration and USB descriptor information. ATA Reset, A1h, FBh BSY and DRQ must be cleared by the device prior to the amount of time specified by ATA Initialization Timeout configuration field has passed since the removal of reset. ATA Polling Device The device shall be capable of being a polling only device. As such, the ATA signal INTRQ is not required but may be useful as a debug tool. ISD-200 ATA Bus State During Idle The ISD-200 drives the address lines high and the last contents of the data register onto the ATA bus when idle. Pull up or pull down resistors shall not be used in bus power systems as the drive supply power will be shut off in USB suspend mode. ATA PIO Support Register accesses are performed in PIO mode 0 (750 ns cycle time). The maximum data register accesses are performed in PIO mode 2 (292 ns cycle time). The ISD-200 configuration bytes must be set such that data register accesses do not exceed the maximum speed supported by the device. ATA Initialization Timeout The ISD-200 supports a default configuration of 3.2 seconds for ATA Initialization Timeout. If a serial ROM is used, its ATA Initialization Timeout configuration value will override the default prior to device initialization. If no serial ROM is used and I_MODE is asserted, subsequent device initializations will use the ATA Initialization Timeout configuration value supplied by the vendor-specific Identify (FBh) command. Reset Recovery shall be 3 ms. The following figure graphically defines “Initialization Timeout” and “Reset Recovery”. initialization timeout reset assertion ATA_NRESET reset recovery nDIOR/nDIOW In-System Design Confidential 27 ISD-200 ASIC Datasheet Figure 2 – ATA Reset Protocol Device Initialization Sequence The diagrams on the following pages show the normal sequence used for device initialization. 28 In-System Design Confidential ISD-200 ASIC Datasheet INITIALIZE flow diagram page 1 of 2 do_init yes Reset Device assert ATA_NRESET for 50 ms reset retry Reset Recovery deassert ATA_NRESET wait for 3 ms Poll ALT_STAT yes SKIP_BOOT Device Initialized (pg 2) BSY=0 DRQ=1 no Init Timeout OR BSY=0 & DRQ=0 OR BSY=0 & DRQ=1 no Init Timeout OR BSY=DRQ=0 Write Device Control with 00h and wait for 3 ms Write Device Control with 04h and wait for 3 ms yes SRST_ENABLE Write Device Control with 00h and wait for 3 ms no Slave Poll ALT_STAT Master/Slave Master BSY=DRQ=0 OR 50ms Timeout no Poll ALT_STAT yes no Init Timeout OR BSY=0 & DRQ=0 OR BSY=0 & DRQ=1 Write Device Head with "101"&DEV&"0000" and wait for 500 ns Initialization timeout OR BSY=0 & DRQ=1 BSY=0 & DRQ=0 Attempt ECh (page 2) In-System Design Confidential 29 ISD-200 ASIC Datasheet INITIALIZE flow diagram page 2 of 2 (from page 1) Attempt ECh command ECh Success no yes ECh Signature Pass ATAPI Reset enabled yes no yes no Perform ATAPI Reset(08h) Attempt A1h command no I_MODE and no_prom yes yes A1h Success no no Attempt FBh command FBh Success no yes Device Initialized Reset Retry (page 1) Event Notification command (if enabled) assert INIT DONE Figure 3 – Full Device Initialization Sequence 30 In-System Design Confidential ISD-200 ASIC Datasheet ATA Command Block ATA commands for the ISD-200 shall be supported by command encoding in the command block portion of the MSC Command Block Wrapper (CBW). Refer to the USB Mass Storage Class (MSC) Bulk Only Transport Specification for information on CBW formatting. The ATA Command Block (ATACB) provides a means of passing ATA commands and ATA register accesses for execution. The ATACB resides in the CBWCB portion of the CBW. The ATACB shall be distinguished from other command blocks by the first two bytes of the command block matching the wATACBSignature. Only command blocks that have a valid wATACBSignature shall be interpreted as ATA Command Blocks. All other fields of the CBW and restrictions on the CBWCB shall remain as defined in the USB Mass Storage Class Bulk Only Transport Specification. The ATACB shall be 16 bytes in length. The following table and text defines the fields of the ATACB. Byte 7 6 5 3 2 1 0 wATACBSignature 0-1 2 4 Reserved (0) bmATACBActionSelect 3 bmATACBRegisterSelect 4 bATACBTransferBlockCount 5-12 bATACBTaskFileWriteData 13-15 Reserved (0) Table 12 – ATA Command Block Formatting Field Descriptions wATACBSignature – This signature indicates the CBWCB contains an ATACB. The signature field shall contain the value 2424h to indicate an ATACB. Devices capable of accepting only ATA Command Blocks shall return a command failed status if the wATACBSignature is not correct. bmATACBActionSelect – The bit fields of this register shall control the execution of the ATACB. Refer to the ATACB Command Flow diagram in section 4 of this document for further clarification . The bitmap of the bmATACBActionSelect shall be defined as follows: Bits 7-6 Reserved - The host shall set these bits to zero. Bit 5 DEVOverride – Use the DEV value specified in the ATACB. 0 = The DEV bit value will be determined from ISD200 Configuration data (byte 5 bit 5) 1= Then DEV bit value will be determined from the ATACB(0xB bit 5). Bits 4-3 DPErrorOverride(1:0) - Device and Phase Error Override. These bits shall not be set in conjunction with bmATACBActionSelect TaskFileRead. The order of precedence for error override shall be dependant on the amount of data left to transfer when the error is detected, as depicted in the ATACB Command Flow diagram. 00 = Data accesses are halted if a device or phase error is detected. 01 = Phase error conditions are not used to qualify the occurrence of data accesses. In-System Design Confidential 31 ISD-200 ASIC Datasheet Bit 2 Bit 1 Bit 0 10 = Device error conditions are not used to qualify the occurrence of data accesses. 11 = Neither device error or phase error conditions are used to qualify the occurrence of data accesses. PollAltStatOverride - Poll ALTSTAT Override. 0 = The Alternate Status registered shall be polled until BSY=0 before proceeding with the ATACB operation. 1 = Execution of the ATACB shall proceed with the data transfer without polling the Alternate Status register until BSY=0. DeviceSelectionOverride - Device Selection Override. This bit shall not be set in conjunction with bmATACBActionSelect TaskFileRead. 0 = Device selection shall be performed prior to command register write accesses. 1 = Device selection shall not be performed prior to command register write accesses. TaskFileRead - Read and return the task file register data selected in bmATACBRegisterSelect. If TaskFileRead is set, the dCBWDataTransferLength field must be set to 8. 0 = Execute ATACB command and data transfer (if any). 1 = Only task file registers selected in bmATACBRegisterSelect shall be read. Task file registers not selected in bmATACBRegisterSelect shall not be accessed and 00h shall be returned for the unselected register data. bmATACBRegisterSelect – Setting the appropriate bit fields shall cause the task file read or write register access to occur. Task file read data shall always be 8 bytes in length. Unselected task file register data shall be returned as 00h. Task file register accesses shall occur in sequential order as shown (Bit 0 first, Bit 7 last). The bmATACBRegisterSelect bitmap shall be as defined below. Bit 0 (3F6h) Device Control / Alternate Status Bit 1 (1F1h) Features / Error Bit 2 (1F2h) Sector Count Bit 3 (1F3h) Sector Number Bit 4 (1F4h) Cylinder Low Bit 5 (1F5h) Cylinder High Bit 6 (1F6h) Device-Head (See bmATACBActionSelect(5)) Bit 7 (1F7h) Command / Status bATACBTransferBlockCount – This value shall denote the maximum requested block size in 512 byte blocks. This variable shall be set to the value last used for “Sectors per block” in the SET_MULTIPLE_MODE command. Valid values are 1, 2, 4, 8, 16, 32, 64, and 128. Command failed status shall be returned if an invalid value is detected in the ATACB. Non-multiple commands shall set this value to 1 (block size of 512 bytes). bATACBTaskFileWriteData – ATA register data used on ATA command or PIO write operations. Only data entries that have the associated bmATACBRegisterSelect bit set shall be required to have valid data. ATACB Address offset 5h (3F6h) Device Control ATACB Address offset 6h (1F1h) Features ATACB Address offset 7h (1F2h) Sector Count ATACB Address offset 8h (1F3h) Sector Number ATACB Address offset 9h (1F4h) Cylinder Low ATACB Address offset Ah (1F5h) Cylinder High ATACB Address offset Bh (1F6h) Device-Head (See bmATACBActionSelect(5)) ATACB Address offset Ch (1F7h) Command 32 In-System Design Confidential ISD-200 ASIC Datasheet ATA Command Flow The following figure shows the flow of ATA commands, specifically the actions taken by the ISD-200 based upon how the ATA Command Block is configured. page 1 of 2 no Command Fail OR other command block specification assumed wATACB Signature detected yes Latch bmATACBActionSelect set Latch bmATACBRegisterSelect ATACB PollAltStat Override set clear ATACB TaskFileRead Poll ATA Alternate Status until BSY=0 and store ERR and DRQ bits. clear Set TransferLength = dCBWDataTransferLength Latch TransferBlockSize Read registers selected in bmATACBRegisterSelect. ATACB DeviceSelection Override set DONE clear Note: Only ATA registers selected in bmATACBRegisterSelect are read. ATA registers not read are zero filled in the 8 bytes of returned data. dCBWDataTransferLength must be set to 8. Perform ATA Device Selection. The device shall specify the value for the DEV bit. Write ATA registers selected in bmATACBRegisterSelect with the bATACBTaskFileWriteData C set Note: If no ATA registers are selected then no ATA registers are written. The device shall specify the value for the DEV bit when writing the DEVICE_HEAD register. ATACB PollAltStat Override B clear Poll ATA Alternate Status until BSY=0 and store ERR and DRQ bits. A In-System Design Confidential 33 ISD-200 ASIC Datasheet page 2 of 2 A Note: DRQ and ERR bit information come from last read of ATA Alternate Status register. set yes no TransferLength > 0 ATACB DPErrorOverride (0) ATACB DPErrorOverride (0) clear clear set DRQ clear DRQ set clear Phase Error ATACB DPErrorOverride (1) set set clear ATACB DPErrorOverride (1) set clear clear Read ATA Status to clear INTRQ and ignore results B yes yes Set TransferLength = 0 no TransferLength > 0 no Done Set TransferLength = TransferLength (BlockSize*512) Transfer ByteCount bytes specified by Direction in bmCBWFlags. C Figure 4 – ATA Command Block Flow Diagram 34 clear Read ATA Status to clear INTRQ and ignore results Fail Set ByteCount = (BlockSize*512) Set ByteCount = TransferLength ERR Read ATA Status to clear INTRQ and ignore results Phase Error TransferLength < BlockSize*512? set set ERR In-System Design Confidential ISD-200 ASIC Datasheet Vendor-Specific ATA Commands There are two vendor-specific ATA commands implemented in the ISD-200. They are shown in the following table. Label Command Code IDENTIFY EVENT_NOTIFY Description This command is used to read ISD-200 configuration data and USB descriptor data from an attached mass storage device. This command communicates certain events to the device and is executed as the events occur. FBh Specified in Configuration Data Table 14 – Vendor-Specific ATA Commands IDENTIFY The vendor-specific Identify (FBh) command enables the ISD-200 to request configuration and USB descriptor information from an attached mass storage device. Command Code FBh Feature Set The PACKET Command feature set may or may not be implemented. Protocol PIO data-in (refer to ATA/ATAPI-4 Specification, section 9.7). Input Register Features Sector Count Sector Number Cylinder Low Cylinder High Device/Head Command 7 6 5 4 3 2 1 0 N/A N/A N/A N/A 3 2 1 0 N/A DRQ N/A N/A N/A N/A N/A ERR N/A N/A N/A N/A N/A obs N/A obs DEV FBh Device/Head register – The DEV bit indicates the selected device. Normal Outputs Register Error Sector Count Sector Number Cylinder Low Cylinder High Device/Head Status 7 6 5 4 N/A N/A N/A N/A N/A obs BSY N/A N/A obs N/A DEV N/A In-System Design Confidential 35 ISD-200 ASIC Datasheet Device/Head register – The DEV bit indicates the selected device. Status register – BSY shall be cleared to zero upon command completion. DRDY shall be set to one. DF (Device Fault) shall be cleared to zero. DRQ shall be cleared to zero. ERR shall be cleared to zero. Error Outputs If the device does not support this command, the device shall return command aborted. Otherwise, the device shall not report an error. Description When the command is issued, the device sets the BSY bit to one, and prepares to transfer 320 bytes of configuration/descriptor data to the ISD-200. The device then sets DRQ to one and clears BSY to zero. The arrangement and meaning of the FBh data bytes are specified in Tables 3, 7-11. An example of FBh programming is shown in Appendix A. EVENT_NOTIFY The vendor-specific Event-notify command enables the ISD-200 to communicate the occurrence of certain events to the attached device. (See Operational Modes, NEJECT, NCART_DET Pins) Command Code Specified in the ISD-200 Configuration Bytes, address 0x2. Programming the command code to 0x00 disables the Event-notify feature. Feature Set The PACKET Command feature set is used. Protocol Non-data (refer to ATA/ATAPI-4 Specification, section 9.9). Input Register Features Sector Count Sector Number Cylinder Low Cylinder High Device/Head Command 7 USB Reset 6 Class Specific Reset 5 USB Suspend 4 USB Resume 3 Cartridge Insert 2 Cartridge Release N/A N/A STATE0 STATE1 N/A Specified in the ISD-200 Configuration Bytes Features register – The USB Reset bit indicates that a USB Reset event has occurred. The Class Specific Reset bit indicates that an MSC Reset was issued by the host. The USB Suspend bit indicates that the USB Bus has gone into suspend. The USB Resume bit denotes that the USB Bus is no longer in suspend. The Cartridge Insert bit is set when the device media is inserted. 36 In-System Design Confidential 1 Eject Button Press 0 Eject Button Release ISD-200 ASIC Datasheet The Cartridge Release bit is set when the device media is ejected. The Eject Button Press bit is set when the eject button on the device is pressed. The Eject Button Release bit is set when the eject button on the device is released. Cylinder High – The STATE0 vendor-specific field is combined with STATE1 specify state information to the attached device. Cylinder Low – The STATE1 vendor-specific field is combined with STATE0 specify state information to the attached device. Normal Outputs Register 7 Error Sector Count Sector Number Cylinder Low Cylinder High Device/Head Status BSY 6 N/A 5 N/A 4 3 N/A N/A N/A NSTATE0 NSTATE1 N/A N/A DRQ 2 1 0 N/A N/A N/A Cylinder High – The NSTATE0 vendor-specific field is combined with NSTATE1 to communicate information about the state of the device back to the host. Cylinder Low – The NSTATE1 vendor-specific field is combined with NSTATE0 to communicate information about the state of the device back to the host. Status register – BSY shall be cleared to zero upon command completion. DRQ shall be cleared to zero. Error Outputs If the device does not support this command, the device shall return command aborted. Otherwise, the device shall not report an error. Description When this command is issued, the ISD-200 will wait until the device clears BSY and DRQ to zero before beginning the input register writes. After writing the input registers, the ISD-200 waits for BSY and DRQ cleared to zero and then reads the state information (NSTATE). The event notification command is issued following every assertion of ATA_NRESET to the device and following the POR device initialization sequence. The event notification command is also issued after any of the events reported in the event notification data take place. If any combination of mating events (mating events are defined as suspend/resume, cartridge insert/release, eject press/release, and USB/class reset) take place before the ISD-200 can issue the event notification command to the device, the following will occur: 1. 2. Send an event notification command showing all events. Send a subsequent event notification command showing only the most recent of any mated events. In-System Design Confidential 37 ISD-200 ASIC Datasheet If an event notification command does not complete for any reason (such as an incoming reset), the ISD200 will re-issue the command (with any new event data) until it completes successfully. Success of the command does NOT depend upon the ERR bit. If the DRQ bit is set in response to an event notification, ISD-200 will continue to poll (in order to make device incompatibility obvious). Power Management BUS_POWER Pin First silicon does not support the BUS_POWER pin being set (See Errata #6). The ISD-200 reacts to the following conditions as stated: • When a USB suspend condition exists and BUS_POWER pin is asserted, the external clock source(CLKN) is disabled, and if remote wakeup is disabled the oscillator is turned off, all ATA outputs put into low power mode, and ATA control lines (nATA_RESET, nDIOR, nDIOW) are 3stated to hi-Z. • When a USB suspend condition exists the remainder of the ATA lines (nCS(1:0), DA(2:0), DD(15:0)) are driven low. First silicon Errata #6 includes all ATA lines being three-stated only when BUS_POWER is asserted, and a suspend condition exists. • When the BUS_POWER pin is asserted, the USB Configuration value is set to zero, and configuration byte 8 bit 4 is set, all ATA outputs are put into low power mode, ATA control lines (nATA_RESET, nDIOR, nDIOW) are 3-stated to hi-Z. • When the USB Configuration value is set to zero, and configuration byte 8 bit 4 is set the remainder of the ATA lines (nCS(1:0), DA(2:0), DD(15:0)) are driven low. First silicon does not support this feature (See Errata #6). • The ISD-200 resets itself in the following cases: o If BUS_POWER is asserted USB configuration is set to 2. o If BUS_POWER changes when the USB configuration is set to 0. • The ISD-200 drives USB_ENUM before attempting to talk to attached device. • The ISD-200 does not attempt to talk to the disk until the USB configuration is set to either 1 or 2. First silicon does not support this feature (See Errata #6). • Setting the Descriptor Override bit is incompatible with setting BUS_POWER pin. The assertion of BUS_POWER will cause a Get Status USB request from the host to report a ‘0’ (indicating bus-powered status) in bit 0 of the information returned. The de-assertion of BUS_POWER will cause a Get Status USB request from the host to report a ‘1’ (indicating self-powered status) in bit 0 of the information returned. BUS_POWER pin state may also effect how USB descriptors are presented to the host (See Selectable Device Power Configurations section below). (See Errata #6) NPWR500, and NPWR100 Pins The NPWR500 and NPWR100 output pins indicate that the USB host has allotted the requested power(bMaxPower) to the peripheral system (See Figure 5). These pins allow USB power to be controlled in order to meet USB power consumption requirements. In the case of a USB Suspend condition, both NPWR500 and NPWR100 are de-asserted. Also, the ISD-200 will put itself into a low power state as described above. Upon a resume condition, the ISD-200 will resume normal operation and restore the NPWR500 and NPWR100 pin values as before suspend. ISD-200’s power source is not to be controlled at any time using the NPWR500 or NPWR100 pins. NPWR100 is always asserted unless in USB suspend. NPWR100 asserted indicates that up to 100 mA may be drawn from USB. NPWR500 is only asserted when the USB configuration is set to 1. NPWR500 asserted indicated that up to 500 mA may be drawn from USB depending on what the bMaxPower value is set to for configuration 1 38 In-System Design Confidential ISD-200 ASIC Datasheet Selectable Device Power Configurations The ISD-200 is capable of offering three types of system power configurations. • Self-Powered – Current is not taken from USB • Bus-Powered – Current is taken from USB • Dynamically-powered – Current may be taken from USB The ISD-200 may be configured to operate from different power sources dynamically depending upon the presence of external (NOT USB) power. Power source configuration is accomplished by controlling the BUS_POWER input pin accompanied by the appropriate ISD-200 configuration and USB Descriptor settings. NPWR100 and NPWR500 are also used to control power consumption as described in the previous sub-section. Self-Powered Example The BUS_POWER pin is de-asserted. ISD-200 Configuration: Configuration 2 Present = 0 Report One Configuration = 0 Device Descriptor: bNumConfigurations = 1 Configuration Descriptor: bConfigurationValue1 = 1 iConfiguration1 = 3 bMaxPower1 = Required USB current limited to under 100 mA (May need to use NPWR500 to satisfy USB suspend current requirements if any current is drawn) iInterface1 = 4 bConfigurationValue2 = N/A iConfiguration2 = N/A bMaxPower2 = N/A iInterface2 = N/A Bus-Powered Example The BUS_POWER pin is asserted. (See Errata #6) ISD-200 Configuration: Configuration 2 Present = 0 Report One Configuration = 0 Device Descriptor: bNumConfigurations = 1 Configuration Descriptor: bConfigurationValue1 = 1 iConfiguration1 = 3 bMaxPower1 = Required USB current limited to under 500 mA (May need to use NPWR500 to satisfy USB suspend and pre-configuration current requirements) iInterface1 = 4 bConfigurationValue2 = N/A iConfiguration2 = N/A bMaxPower2 = N/A iInterface2 = N/A Dynamically-Powered Example The BUS_POWER pin is asserted to indicate the absence of external power and de-asserted to indicate the presence of external power. (See Errata #6) ISD-200 Configuration (See Table 3): ‘Configuration 2 Present’ = 1 ‘Report One Configuration’ = Pick either 0 or 1 depending on host software and desired results (See Tables 3 and 8). In-System Design Confidential 39 ISD-200 ASIC Datasheet Device Descriptor (See Table 7): bNumConfigurations = 1 if ‘Report One Configuration’ is set otherwise 2 Configuration Descriptor (See Table 8): bConfigurationValue1 = 1 iConfiguration1 = 3 bMaxPower1 = (USB Current required by the peripheral system limited to under 500mA) iInterface1 = 4 bConfigurationValue2 = 2 iConfiguration2 = 7 bMaxPower2 = 0x31 (98 mA) iInterface2 = 8 Configuration 1 = Dynamic Configuration (NPWR500 asserted) Configuration 2 = Self-Powered Configuration Configuration 2 consists of configuration 1 values except with the 4 bytes of override values from bConfigurationValue2, iConfiguration2, bMaxPower2, and iInterface2 (See Tables 3 and 7-8). If ‘Report One Configuration’ is set to 1: o Configuration 1 will be returned when BUS_POWER is asserted. o Configuration 2 will be returned when BUS_POWER is de-asserted. If ‘Report One Configuration’ is set to 0: o When BUS_POWER is asserted, bNumConfigurations in the device descriptor will be overridden with 1 and Configuration 1 will be returned. o When BUS_POWER is not asserted Configuration 1 and Configuration 2 will be returned. 40 In-System Design Confidential ISD-200 ASIC Datasheet PwrOn NPWR100 = 0 NPWR500 = Z Yes Check for EEPROM Config Value =1? EEPROM Present? No (2) No Yes NPWR100 = 0 NPWR500 = Z NPWR100 = 0 NPWR500 = 0 I_MODE? No Yes ATA / ATAPI Boot Done? Start ATA / ATAPI Boot No Start ATA / ATAPI Boot Get Config Data Yes Set USB_ENUM No Operational BUS_POWERED? Yes No Return Config Descriptors: Dynamic (1) Self Powered (2) Return Only Config Descriptor: Dynamic (1) Yes No USB SET_CONFIG ? Yes Config Value =0? Figure 5 – Configuration Sequence In-System Design Confidential 41 ISD-200 ASIC Datasheet Operational Modes NEJECT & NCART_DET Pins These pins are used to trigger remote-wakeup (See Table 8, 0x2F) as well as Event Notification (See Vendor Specific ATA Commands, EVENT_NOTIFICATION). When asserted low ‘NEJECT’ indicates to ISD200 that an eject button has been pushed. When asserted low, ‘NCART_DET’ indicates that a cartridge is present. There is an internal 1ms filter on each of these inputs. I_MODE Pin I_Mode pin, when asserted high, allows the ISD200 Configuration and USB Descriptor data to be retrieved from an attached device. (See ISD-200 CONFIGURATION, DATA SOURCES) ATA_EN Pin ATA_EN pin allows ATA bus sharing with other host devices. De-asserting (ATA_EN=0) causes the ISD200 to 3-state all ATA bus interface pins to hi-Z; de-assert USB_ENUM, and reset all logic except onboard ROM / serial ROM logic that loads configuration data. This logic remains enabled to allow configuration data loads for the configurable external clock (CLKN) upon occurrence of chip reset. Asserting ATA_EN (ATA_EN=1) allows normal operation. In order to insure the internal pull-up for ATA_EN is on, TEST(3) must be tied low. Test Mode Pins TEST(3:0) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 42 Mode Description Normal Mode. This is the default mode of operation, or run time mode. Pulldowns are on. CLKN is disabled. Normal Mode. This is the default mode of operation, or run time mode. Pulldowns are on. CLKN defaults to 32 MHz. Normal Mode. This is the default mode of operation, or run time mode. Pulldowns are on. CLKN defaults to 40 Mhz. NandTree – Allows board level manufacturing tests. See following section. Scan Mode – Fab only test mode Limbo Setting this mode disables all output (3-state to hi-Z) Disable Disk (Normal) - Enable USB enumeration without ATAPI interface. Pull-downs are on. Reserved InTest (T) - Functional test mode with shortened timers. The DPLL and OSC circuits are still powered with CLKN disabled. Pull-downs are off. InTest (TM) - Functional test mode with shortened timers and shortened RAM. The DPLL and OSC circuits are still powered with CLKN defaulting to 32 MHz. Pull-downs are off. InTest (TMS) - Functional test mode with shortened timers, shortened RAM, and skip ATAPI identify boot sequence. The PLL and OSC circuits are still powered with CLKN defaulting to 40 MHz. Pull-downs are off. TestMux – Fab only test mode Scan Mode – Fab only test mode InTest (BT) – Functional test mode with DPLL bypassed (m=n=1), OSC circuits disabled (pass through), and shortened timers. Pull-downs are off. Reserved In-System Design Confidential ISD-200 ASIC Datasheet 1111 PowerDown – Fab only test mode Table 13 – Test Modes Test Pin Pull-downs In order to insure the internal pull-downs for TEST(2:0) are on, TEST(3) must be tied low. Normal Mode With CLKN Enabled There are two modes in which the CLKN output clock is initiated before ISD-200 configuration data is received. The main reason for providing a clock in this manner is to allow an ATA device to use this clock as a system clock when the ISD-200 configuration data source is to come from the device (See the VendorSpecific ATA Commands, Identify section). Two clock frequencies are provided 32 and 40 MHz. Disable Disk Mode This mode allows the ISD-200 to temporarily bypass the normal device initialization in a manufacturing environment in order to program the EEPROM over USB. This mode is NOT to be used as a normal functional mode. NandTree Test Mode This mode disables all outputs except ‘USB_ENUM’ (NandTree output), allowing for testing of input connectivity. The list below shows the connectivity order of the NandTree chain (beginning to end). NRESET, ATA_EN, IORDY, DD[15:0], Note: DD[0] first, DD[15] last NEJECT, NCART_DET, BUS_POWER, SCAN_EN, I_MODE, SDA Input pin connectivity can be tested with the following procedure: 1) Set all inputs on the chain to ‘1’. Output will be ‘1’. 2) Set NRESET to ‘0’. Output will toggle 3) Set NRESET back to ‘1’. Output will toggle. 4) Set '0' on the NandTree chain inputs from the beginning of the chain to the end (in order). The output will toggle with each input toggle, testing pad / IO cell connectivity. Limbo Mode ISD-200 provides a “limbo mode” in which all of its output pads are placed in a high-impedance state. In-System Design Confidential 43 ISD-200 ASIC Datasheet External Circuitry External Components Connection 5.0V 5.0V USB_ENUM 1.5ΚΩ 1.5KΩ 24Ω SDA DPLS ISD-200 SCL Crystal Specifications: 32 pf series capacitance 7 pf load capacitance Crystals with different specifications than above will require modified circuit values for correct operation. 24Ω D- CLKX CLK12 DMNS D+ 0Ω 12MHz 15pF 15pF Note for brick powered systems: System design must insure the 1.5K ohm pull-up resistor on DPLS does not source power if VBUS power is not present. Figure 6 – External Components Connection IORDY Hookup The IORDY pin must be pulled up using a 1 K ohm resistor. The figure on the left is used when the ISD200 and another device (or devices) is connected to the ATA bus of the drive. The figure on the right is used when the ISD-200 is the only device connected. Figure 7 – IORDY Hookup 44 In-System Design Confidential ISD-200 ASIC Datasheet PDIAG and PDASP Hookup Power on diagnostics timeout (750 ms and 30 s) must be limited to avoid an ISD-200 timeout. One method to accomplish this is to make sure PDIAG and PDASP are grounded on the circuit board and the device is wired to be master. Absolute Maximum Ratings Stresses in excess of the absolute maximum ratings can cause permanent damage to the device. These are absolute stress ratings only. Functional operation of the device is not implied at these or any other conditions in excess of those given in the operations sections of this data sheet. Exposure to absolute maximum ratings for extended periods can adversely affect device reliability. Symbol VDD33 VDD18 Vin Iin Ta Tstrg Parameter 3.3 V IO Supply 1.8 V IO Supply 5V Tolerant Input Pin Voltage 3.3V Input Pin Voltage Input Pin Current Max 4.0 2.0 Ambient Operating Temperature Range Min -0.5 -0.5 -0.5 -0.5 -20 0° 5.5 Units Volts Volts Volts VDD33 + 0.5 20 70° mA Celsius Storage Temperature -65 150 Celsius Table 15 – Absolute Maximum Ratings Electrical Characteristics Symbol Test Conditions Min Typ Max Unit VIL VIH 2.0 0.8 V V VDD33 VDD18 Note: (TA = 0 °C, VDD33 = 3.3 V ± 0.3 V, VSS = 0 V) 2.4 3.3 1.8 0.4 V V 3.6 1.95 V V Voltage Parameter Input Voltage Low Input Voltage High Output Voltage Low Output Voltage High Power Supply Voltage VOL VOH 3.0 1.65 Table 16 – DC Characteristics In-System Design Confidential 45 ISD-200 ASIC Datasheet Current Parameter VDD33 supply current (IDD33) VDD18 supply current (IDD18) IDD33 with ATA_EN = 0 IDD18 with ATA_EN = 0 Operating Suspend 10 mA (typ) 10 mA (typ) 6 µA (typ) 1 mA (typ) 6 µA (typ) 8 µA / 275 µA (typ) N/A N/A Note: (TA = 0 °C, VDD = 3.3 V ± 0.3 V, VSS = 0 V), (VDD18 suspend current: BUSPWR=1, with out / with USB remote wakeup enabled in device) Table 17 – Power Supply Current Timing Characteristics I2C Memory Device Interface Timing The I2C memory device interface supports the I2C “fast mode.” Timing specifics are given below. Thigh Tlow SCL TSU:STA THD:DAT THD:STA TSU:DAT TSU:STO SDA OUT TBUF TDSU SDA IN Figure 8 – I2C Memory Device Interface Timing Parameter Clock high time Clock low time Start condition hold time Start condition setup time Data output hold time Data output setup time Stop condition setup time Required data valid before clock Bus free time Symbol Thigh Tlow THD:STA TSU:STA THD:DAT TSU:DAT TSU:STO TDSU TBUF Table 18 – I2C Memory Device Interface Timing 46 In-System Design Confidential Value 667 ± 20 ns 1,333 ± 20 ns 667 ± 20 ns 667 ± 20 ns 667 ± 20 ns 667 ± 20 ns 667 ± 20 ns 84 ns 1,333 ± 20 ns ISD-200 ASIC Datasheet USB Transceiver Timing Characteristics The USS-725 USB transceiver complies with the timing and electrical requirements of the Universal Serial Bus Specification version 1.0. ATA/ATAPI Port Timing Characteristics All input signals on the ATA/ATAPI port are considered to be asynchronous, and are synchronized to the chip’s internal system clock. All output signals are clocked using the chip’s internal system clock, for which there is no external reference. Thus, the output signals should be considered asynchronous. PIO mode 0 (750 ns cycle time) shall be used during power on reset (POR) and for non-data register accesses. Following POR, the PIO mode used for data register accesses is specified in the ISD-200 configuration bytes. Clock Frequency Duty Cycle external crystal 12 MHz ± 0.25% n/a Note: Clock signal frequency is measured at VDD18/2 point. Rise and fall times should be 2 ns or less. Table 19 – Clock Requirements Reset The ISD-200 requires an off-chip power-on reset circuit. The supply voltage should be stable for a minimum of 1 ms prior to the release of nRESET. In-System Design Confidential 47 ISD-200 ASIC Datasheet Physical Diagrams Figure 9 – Package Outline Diagram 48 In-System Design Confidential ISD-200 ASIC Datasheet Device Errata for First Silicon ISD-200 “0002” This section identifies known problems with ISD-200 first silicon. Silicon revision information is obtained from a vendor specific USB descriptor request. ISD-200 first silicon returns the English Unicode string “0002” to the vendor specific request for string descriptor index 6. Second silicon returns “0003 for the same string. BCDDevice from internal ROM contents also indicates revision. First silicon returns \x0100 and second silicon returns \x0110. Follow on revisions of the ISD-200 will return different descriptor string values. Note the revision string may also be obtained by reading and decoding addresses 0x1390x13F from internal ROM contents. 1. CLKN output may initialize with unknown frequency with ASIC in reset The DPLL circuitry is not asynchronously reset, and when the TEST pins are set to generate CLKN output prior to the DPLL configuration data load, spurious frequencies may be generated from the CLKN output prior to the state machines loading the correct DPLL m and n parameters. This anomaly only effects I_MODE operation. Setting the TEST pins for no CLKN generation and waiting for the configuration data load from EEPROM or on-board ROM eliminates the issue. 2. ATA_EN internal pull-up resistor is disabled during USB suspend operation Internal logic incorrectly disables the internal pull-up resistor when the ISD-200 operates in USB suspend mode. The issue can be addressed with an external pull-up resistor. 3. EEPROM write operation fails on last byte of last page with some EEPROM devices The ISD-200 always increments the address when checking status of the previous write operation. On page boundaries, address bits 10:8 (or the chip select portion of the address with typical 256 byte page devices) are incremented prior to the status phase of the last byte write operation. Vendors of I2C devices that treat this address / status phase data as “don’t care” are compatible with the ISD-200. Vendors that do examine the address bits during the write completion check do not “ACK” the last write, as the address is now out of range for the device. The issue is addressed by not writing the last byte in the last EPROM page. In almost all applications only a portion of the serial memory is utilized, and the problem does not surface. String descriptors can easily be modified to accommodate the loss of one byte (if need be). 4. SCL output does not 3-state to hi-Z when ‘1’, limiting SCL Vhi voltage to 3.3V This issue may cause compatibility issues for certain EEPROM devices, as most data serial ROM data sheets report a Vhi voltage of 0.7*VCC requirement for correct operation. To operate at 400Khz (ISD-200 requirement), most devices require VCC set to 5V, which translates to a Vhi requirement of 0.7*5V=3.5V. “Catalyst” EEPROM’s have been identified not to have the 0.7*VCC Vhi limitation. A field engineer states Catalyst’s input stage triggers Vhi at .5*VCC, or 2.5V. Regression testing with Catalyst parts found Zero failures. If another vendor is chosen, Vhi switching requirements must be investigated to insure proper operation. In-System Design Confidential 49 ISD-200 ASIC Datasheet 5. Current draw of 5-6 mA when ATA_EN = 0 The ATA cells are not powered down when ATA_EN is inactive. When enabled, the ATA cell active circuitry typically draws between 5-6 mA of quiescent current (all cells combined). Disabling the active circuitry reduces quiescent current to approximately 4 uA (note the inputs must be tied high or low to keep them out of their high current switching region). The TEST[3:0] inputs will place the ATA cells in low power mode if used in conjunction with ATA_EN. Setting TEST[3:0] = “1111” with ATA_EN = 0 will place the ATA cells in low power mode. Quiescent current will then be approximately 1 mA. This solution is compatible with rev B silicon (although not required). 6. USB Bus powered system support not possible with ISD-200 first silicon. There are several issues that prevent the ISD-200 from supporting USB Bus powered systems. These issues only effect USB Bus powered operation. Brick powered system support is not effected. ISD-200 rev A silicon can only be used in brick powered systems. The rev B version of the ISD-200 will address the issues and thus support USB Bus powered system integration. 7. USB Interrupt pipe support required for Mac OS drivers / applications Although the USB Interrupt endpoint in the ISD-200 always returns 0x00’s when addressed, some software / drivers used with Mac OS version expect the endpoint for proper operation. This is not a HW issue with the ISD-200; it has been implemented as a work-around solution for legacy software issues. For legacy driver compatibility reasons, the interrupt endpoint should be reported in the ISD-200 USB descriptor information. 8. Support not provided for 16 byte ATAPI command block transfers Previous revisions of this data sheet state the ISD-200 can support 16 byte ATAPI command blocks. The ATAPI Command Block Size configuration bits (configuration byte 0x05, bits[7:6]) must be set to “00”, as only 12 byte ATAPI command block are supported by the ISD-200. Advertisement of this feature has been removed from the data sheet. The ISD-200 will not support 16 byte ATAPI command block sizes. No changes are planned for rev B silicon. 9. CLKN does not get the correct frequency in all cases See Errata #101 10. Failure to override descriptors for slave device when BSY=0 and DRQ=1. See Errata #102. 50 In-System Design Confidential ISD-200 ASIC Datasheet 11. Possible hang in ATACB functionality. See Errata #103. In-System Design Confidential 51 ISD-200 ASIC Datasheet Device Errata for Second Silicon ISD-200 “0003” 100. nATA_Reset, nDIOR, and nDIOW allow parasitic current draw during suspend When suspended second silicon attempts to reduce suspend current and allow flexibility by three-stating the three control lines nATA_Reset, nDIOR, and nDIOW. The cells leak about 2-3 uA that hold the cells from going into a low power state. The extra 3.3v supply current per cell is around 200 uA when in this high current consumption state. When there is a 1.5k pull-down in place, the cell draw much less current. If all cells have been placed in the low current consumption state then total 3.3v supply current should be around 200 nA. A weak pull-up could also be used to pull these signals up to reduce the 3.3v supply current to about 12 uA. 101. CLKN does not get the correct frequency in all cases The following table indicates the source of CLKN configuration. “X” means CLKN does not run. Note: Columns indicate a sequence of actions from left to right. Rows indicate configuration source and BUS_POWER pin state. 52 In-System Design Confidential ISD-200 ASIC Datasheet POR, ATA_EN=0 ATA_EN=1 ATA_EN=1 BUS_POWER=0, ATA HIGH POWER=0(byte 8, bit 4) E^2 EE CLKN EE CLKN EE CLKN E^2 + Test pins EE CLKN EE CLKN EE CLKN Test pins Test CLKN Test CLKN Test CLKN I_MODE + Test Test CLKN Test CLKN Test CLKN pins BUS_POWER=1, ATA HIGH POWER=0(byte 8, bit 4) E^2 EE CLKN X EE CLKN E^2 + Test pins EE CLKN X EE CLKN Test pins Test CLKN X Test CLKN I_MODE + Test Test CLKN X Test CLKN pins BUS_POWER=0, ATA HIGH POWER=1(byte 8, bit 4) E^2 12MHz -> X X X E^2 + Test pins EE CLKN EE CLKN EE CLKN POR, ATA_EN=0 ATA_EN=1 ATA_EN=0 X Test CLKN EE CLKN EE CLKN Test CLKN FBh CLKN EE CLKN Test CLKN -> EE CLKN Test CLKN FBh CLKN X X X X EE CLKN EE CLKN Test CLKN FBh CLKN X X X X X Test CLKN EE CLKN Test CLKN -> EE CLKN Test CLKN FBh CLKN EE CLKN EE CLKN Test CLKN FBh CLKN Test pins Test CLKN Test CLKN Test CLKN Test CLKN Test CLKN I_MODE + Test Test CLKN Test CLKN Test CLKN FBh CLKN FBh CLKN pins BUS_POWER=1, ATA HIGH POWER=1(byte 8, bit 4) E^2 X X X X X X E^2 + Test pins X X X X X X Test pins Test CLKN X Test CLKN X Test CLKN X I_MODE + Test Test CLKN X Test CLKN X FBh CLKN X pins Note: All values indicate CLKN output before USB Configuration is set. When ATA HIGH POWER=1 and BUS_POWER=1, the CLKN output will not turn on until the USB configuration is set to a non-zero value. Refer to the “BUS_POWER=1, ATA HIGH POWER=0” section in order to tell what the CLKN output will be when the USB Configuration is set. For devices using CLKN that allow ATA_EN to be deasserted, it is suggested that the BUS_POWER pin is deasserted in conjunction with ATA_EN if BUS_POWER is asserted itself. If a device uses both test pins and E^2 or FBh to configure CLKN then it is suggested that both CLKN values match. If a device is to use E^2 CLKN values then the test pins must be set to either CLKN test mode in order to get the expected value. If ATA_EN is allowed to deassert then there is the possibility that the test pin CLKN values will be used. 102. Failure to override descriptors for slave device when BSY=0 and DRQ=1. This issue is regarding ISD200 Configuration byte 8 bit 3. This case will usually only occur when the device is a slave and there is a host side pull-down on DD7 and no pull-down on DD3. Is this case ISD200 will never enumerate. Potential fixes: 1. 2. Pull-up on DD7 Pull-down on DD7 and DD3 In-System Design Confidential 53 ISD-200 ASIC Datasheet 103. Possible hang in ATACB functionality. If bATACBTransferBlockCount is set to zero, PollAltStatOverride is set to one and the CBW DataTransferLength not zero, the ATACB state machine will hang. This should not be an issue if the bATACBTransferBlockCount is never set to zero or if there is never a data phase(CBW DataTransferLength=0) when PollAltStatOverride is set to one. 54 In-System Design Confidential ISD-200 ASIC Datasheet Appendix A – Example EEPROM or FBh Data Contents Address Field Name Description Example SROM / FBh Data 0x00 Data Signature (LSB) 0x01 Data Signature (MSB) 0x02 Event Notification 0x03 DPLL Parameters 0x04 ATA Initialization Timeout 0x05 Reserved – Bits [7:6] Master/Slave Selection – Bit [5] 0x06 This field specifies the least significant byte of the Serial ROM/FBh signature. This register does not exist in HW (no POR values) This field specifies the most significant byte of the Serial ROM/FBh signature. This register does not exist in HW (no POR values) This field specifies the ATA event notification command. Setting this field to 0x00 disables this feature. POR configuration default of 0x00 This field denotes the parameters used by the internal DPLL. The original clock source is 12 MHz. 5 bits M (7:3), 2 bits N (2:1), 1 bit Enable (0). When enabled, multiply the original clock source by M, divided by N M: 00000 => M=1 00001 => M=1 00010 => M=2 00011 => M=3 …. 11111 => M=31 N: 00 => N=1 01 => N=3 10 => N=2 11 => N=4 Enable: 0 => CLK_N disabled 1 => CLK_N enabled POR configuration default of 0x00 This field specifies the time in multiples of 128 ms (0x19 = 3.2s) before the ISD-200 stops polling the Alternate Status device register for reset complete and restarts the reset process. NOTE: The ROM contents ATA Initialization Timeout value must be large enough to accommodate I_MODE operation during the first device initialization sequence (before FBh configuration data load) POR configuration default of 0x02 Reserved; set to ‘0’ This bit specifies device number selection. “0” - Drive 0 “1” - Drive 1 ATAPI DEVICE RESET – Bit [4] This bit specifies that the ISD-200 perform a ATAPI DEVICE RESET command during a full initialization sequence. ATA Timing – Bits [3:0] This field determines ATA Bus data access cycle times. 0000 reserved 0001 Mode 2 (292 ns) 0010 Mode 2 (333 ns) 0011 Mode 2 (375 ns) 0100 Mode 1 (458 ns) 0101 Mode 1 (500 ns) 0110 Mode 1 (542 ns) 0111 Mode 1 (583 ns) 1000 Mode 0 (625 ns) 1001 Mode 0 (666 ns) 1010 Mode 0 (708 ns) 1011 Mode 0 (750 ns) 1100 reserved 1101 reserved 1110 reserved 1111 reserved POR configuration default of 0x0B This field specifies the value in CBW CB field that designates if the CB is decoded as ATA commands instead of the ATAPI command block. POR configuration default of 0x00 ATA Command Designator (Byte 0, LSB) In-System Design Confidential 0x52 0x48 0xFC 0x43 0x02 0x01 0x24 55 ISD-200 ASIC Datasheet Address Field Name Description Example SROM / FBh Data 0x07 ATA Command Designator (Byte 1, MSB) 0x08 Initialization Status – Bit[7] Configuration Descriptor 2 Present – Bit[6] Skip ATA / ATAPI Device Initialization – Bit[5] ATA HIGH POWER Device for USB Bus Powered Devices – Bit[4] This field specifies the value in CBW CB field that designates if the CB is decoded as ATA commands instead of the ATAPI command block. POR configuration default of 0x00 This (Read Only) bit denotes the Device Initialization Status. If set, indicates the device initialization sequence is active. 0x24 0x40 This bit specifies that a second Configuration Descriptor is present. See “BUS_POWER pin” under the “Power Management” section. “0” - not present “1” - present This bit specifies that the ISD-200 skip device initialization. “0” - normal operation “1” - only reset the device prior to allowing USB enumeration. The function of this bit is overridden (0) if I_MODE is set. Notification command, descriptor override, SRST enable, ATAPI DEVICE RESET settings are irrelevant. Setting this bit indicates that when USB Bus powered, the system’s ATA interface is only powered when the NPWR500 pin is active (not controlled by NPWR100). “0” – normal operation Descriptor Override – Bit[3] “1” – If (BUS_POWER = 1) and (USB configuration = 0) then ATA pads are put into low power mode, ATA control lines (RESET-, DIOR-, DIOW-) are 3-stated to hi-Z, and the remainder of the ATA lines(NCS(1:0), DA(2:0), DD(15:0), and IORDY_PU_EN) are driven low. (See Power Management) Last LUN Identifier – Bits[2:0] Setting this bit causes the ISD-200 to override the USB Descriptors for ATA devices. Not compatible with setting BUS_POWER=1. If set, (I_MODE = 0), AND (ATA device identified or device initialization fails), bDeviceClass returned as 0xFF bDeviceSubClass returned as 0x00 bDeviceProtocol returned as 0xFF bInterfaceClass returned as 0xFF bInterfaceSubClass returned as 0x00 bInterfaceProtocol returned as 0xFF idProduct bit 0 is replaced with a ‘1’ (Suggested: even idProduct for ATAPI devices, odd numbers for ATA devices) else USB descriptor information unaltered This field denotes the (zero-based) maximum number of LUNs supported. 0x09 Reserved – Bits[7:2] Report One Configuration – Bit[1] This bit determines whether one or two configuration descriptors are made available to the host. This bit should not be set if the Configuration Descriptor 2 Present configuration bit is not set. “0” - Both descriptors are reported to the host if BUS_POWER=0 “1” - Report only the configuration descriptor that corresponds to state of the BUS_POWER input. Configuration 1 is returned when BUS_POWER=1, configuration 2 is returned when BUS_POWER=0 SRST Enable – Bit[0] Setting this bit enables the SRST reset algorithm in the ISD-200. POR configuration default of 0x00 Address location for LANGID string (divided by 2). This index must be set to 0x00 if the string is not present. Address location for iManufacturer string (divided by 2). This index must be set to 0x00 if the string is not present. 0x0A Language ID String (0) 0x0B Manufacturer String (1) 56 POR configuration default of 0x30 Reserved; set to ‘0’ In-System Design Confidential 0x02 0x28 0x2A ISD-200 ASIC Datasheet Address Field Name Description Example SROM / FBh Data 0x0C Product String (2) Interface 2 String (8) Address location for iProduct string (divided by 2). This index must be set to 0x00 if the string is not present. Address location for iConfiguration string (divided by 2). This index must be set to 0x00 if the string is not present. Address location for iInterface string (divided by 2). This index must be set to 0x00 if the string is not present. Address location for iSerialNumber string (divided by 2). This index must be set to 0x00 if the string is not present. The USB Mass Storage Class Bulk Only Transport Specification requires a unique serial number. Address location for second iConfiguration 2 string (divided by 2). This index must be set to 0x00 if the string is not present. Address location for second iInterface 2 string (divided by 2). 0x0D Configuration 1 String (3) 0x0E Interface 1 String (4) 0x0F Serial Number String (5) 0x10 Configuration 2 String (7) 0x11 0x30 0x6B 0x12 bLength Length of device descriptor in bytes. 0x12 0x13 bDescriptor Type Descriptor type. 0x01 0x14 bcdUSB (LSB) USB Specification release number in BCD. 0x10 0x37 0x3F 0x4C 0x61 0x15 bcdUSB (MSB) 0x16 bDeviceClass Device class. 0x01 0x00 0x17 bDeviceSubClass Device subclass. 0x00 0x18 bDeviceProtocol Device protocol. 0x00 0x19 bMaxPacketSize Maximum USB packet size supported 0x40 0x1A idVendor (LSB) Vendor ID. 0xAB 0x1B idVendor (MSB) 0x1C idProduct (LSB) 0x05 0x1D idProduct (MSB) 0x1E bcdDevice (LSB) 0x1F bcdDevice (MSB) 0x20 iManufacturer Index to manufacturer string. 0x21 iProduct Index to product string. 0x02 0x22 iSerialNumber Index to serial number string. 0x05 Product ID. 0x30 0x00 Device release number in BCD. 0x00 0x01 0x01 0x23 bNumConfigurations Number of configurations supported. 0x01 0x24 bConfiguration Value 2 0x00 0x25 iConfiguration 2 The value to use as an argument to Set Configuration to select the configuration. Index to second configuration string. 0x26 bMaxPower 2 Maximum power consumption for the second configuration. 0x00 0x27 iInterface 2 0x00 0x00 0x28 bLength Index to interface string associated with the second configuration descriptor. Length of configuration descriptor in bytes. 0x29 bDescriptorType Descriptor type. 0x02 0x2A bTotalLength (LSB) 0x27 0x09 0x2B bTotalLength (MSB) Number of bytes returned in this configuration. This includes the configuration descriptor plus all the interface and endpoint descriptors. 0x2C bNumInterfaces Number of interfaces supported. 0x01 0x2D bConfiguration Value 1 0x01 0x00 0x2E iConfiguration 1 The value to use as an argument to Set Configuration to select the configuration. Index to first configuration string. 0x2F bmAttributes Device attributes for this configuration. 0x30 bMaxPower 1 Maximum power consumption for the second configuration. 0xE0 0x31 0x31 bLength Length of interface descriptor in bytes. 0x09 0x32 bDescriptorType Descriptor type. 0x04 0x33 bInterfaceNumber Interface number. 0x00 0x34 bAlternateSettings Alternate settings 0x00 0x35 bNumEndpoints Number of endpoints 0x03 0x36 bInterfaceClass Interface class. 0x08 In-System Design Confidential 0x00 57 ISD-200 ASIC Datasheet Address Field Name Description Example SROM / FBh Data 0x37 bInterfaceSubClass Interface subclass. 0x06 0x38 bInterfaceProtocol Interface protocol. 0x50 0x39 iInterface 1 Index to interface string associated with the first configuration descriptor. 0x00 0x3A bLength Length of this descriptor in bytes. 0x07 0x3B bDescriptorType Endpoint descriptor type. 0x05 0x3C bEndpointAddress This is an Out endpoint, endpoint number 1. 0x01 0x3D bmAttributes This is a bulk endpoint. 0x02 0x3E wMaxPacketSize (LSB) Max data transfer size. 0x40 0x3F wMaxPacketSize (MSB) 0x40 bInterval Does not apply to bulk endpoints. 0x00 0x41 bLength Length of this descriptor in bytes. 0x07 0x42 bDescriptorType Endpoint descriptor type. 0x05 0x43 bEndpointAddress This is an In endpoint, endpoint number 2. 0x82 0x44 bmAttributes This is a bulk endpoint. 0x02 0x45 wMaxPacketSize (LSB) Max data transfer size. 0x40 0x46 wMaxPacketSize (MSB) 0x47 bInterval Does not apply to bulk endpoints. 0x48 bLength Length of this descriptor in bytes. 0x07 0x49 bDescriptorType Endpoint descriptor type. 0x05 0x4A bEndpointAddress This is an Interrupt endpoint, endpoint number 3. 0x83 0x4B bmAttributes This is an interrupt endpoint. 0x03 0x4C wMaxPacketSize (LSB) Max data transfer size. 0x4D wMaxPacketSize (MSB) 0x4E bInterval This is the polling interval. 0x4F Not used Not used since starting address must be even. 0x00 0x50 bLength LANGID string descriptor length in bytes. 0x04 0x51 bDescriptorType Descriptor type. 0x03 0x52 LANGID (LSB) Language supported. 0x09 0x0C 0x00 0x00 0x00 0x02 0x00 0x02 0x53 LANGID (MSB) 0x54 bLength 0x55 bDescriptorType Manufacturer string descriptor length in bytes (restricted to 63 bytes or less). Descriptor type. 0x04 0x56 bString “M” 0x4D 0x57 bString “NUL” 0x00 0x58 bString “f” 0x66 0x03 0x59 bString “NUL” 0x00 0x5A bString “g” 0x67 0x5B bString “NUL” 0x00 0x5C bString “” 0x20 0x5D bString “NUL” 0x00 0x5E bString “X” 0x58 0x5F bString “NUL” 0x00 0x60 bLength Product string descriptor length in bytes (restricted to 63 bytes or less). 0x0E 0x61 bDescriptorType Descriptor type 0x03 0x62 bString “P” 0x50 0x63 bString “NUL” 0x00 0x64 bString “r” 0x72 0x65 bString “NUL” 0x00 58 In-System Design Confidential ISD-200 ASIC Datasheet Address Field Name Description Example SROM / FBh Data 0x66 bString “o” 0x6F 0x67 bString “NUL” 0x00 0x68 bString “d” 0x64 0x69 bString “NUL” 0x00 0x6A bString “” 0x20 0x6B bString “NUL” 0x00 0x6C bString “Y” 0x59 0x6D bString “NUL” 0x00 0x6E bLength 0x0E 0x6F bDescriptorType Configuration 1 string descriptor length in bytes (restricted to 63 bytes or less). Descriptor type 0x70 bString “D” 0x44 0x71 bString “NUL” 0x00 0x72 bString “e” 0x65 0x73 bString “NUL” 0x00 0x74 bString “f” 0x66 0x75 bString “NUL” 0x00 0x76 bString “a” 0x61 0x77 bString “NUL” 0x00 0x78 bString “u” 0x75 0x03 0x79 bString “NUL” 0x00 0x7A bString “l” 0x6C 0x7B bString “NUL” 0x00 0x7C bString “t” 0x74 0x7D bString “NUL” 0x00 0x7E bLength 0x1A 0x7F bDescriptorType Interface 1 (Configuration 1) string descriptor length in bytes (restricted to 63 bytes or less). Descriptor type 0x80 bString “M” 0x4D 0x81 bString “NUL” 0x00 0x82 bString “a” 0x61 0x83 bString “NUL” 0x00 0x84 bString “s” 0x73 0x85 bString “NUL” 0x00 0x86 bString “s” 0x73 0x87 bString “NUL” 0x00 0x88 bString “” 0x20 0x03 0x89 bString “NUL” 0x00 0x8A bString “S” 0x53 0x8B bString “NUL” 0x00 0x8C bString “t” 0x74 0x8D bString “NUL” 0x00 0x8E bString “o” 0x6F 0x8F bString “NUL” 0x00 0x90 bString “r” 0x72 0x91 bString “NUL” 0x00 0x92 bString “a” 0x61 0x93 bString “NUL” 0x00 In-System Design Confidential 59 ISD-200 ASIC Datasheet Address Field Name Description Example SROM / FBh Data 0x94 bString “g” 0x67 0x95 bString “NUL” 0x00 0x96 bString “e” 0x65 0x97 bString “NUL” 0x00 0x98 bLength 0x2A 0x99 bDescriptorType Serial Number string descriptor length in bytes (restricted to 63 bytes or less). Descriptor type 0x9A bString “0” 0x30 0x9B bString “NUL” 0x00 0x9C bString “1” 0x31 0x9D bString “NUL” 0x00 0x9E bString “2” 0x32 0x03 0x9F bString “NUL” 0x00 0xA0 bString “3” 0x33 0xA1 bString “NUL” 0x00 0xA2 bString “4” 0x34 0xA3 bString “NUL” 0x00 0xA4 bString “5” 0x35 0xA5 bString “NUL” 0x00 0xA6 bString “6” 0x36 0xA7 bString “NUL” 0x00 0xA8 bString “7” 0x37 0xA9 bString “NUL” 0x00 0xAA bString “8” 0x38 0xAB bString “NUL” 0x00 0xAC bString “9” 0x39 0xAD bString “NUL” 0x00 0xAE bString “0” 0x30 0xAF bString “NUL” 0x00 0xB0 bString “1” 0x31 0xB1 bString “NUL” 0x00 0xB2 bString “2” 0x32 0xB3 bString “NUL” 0x00 0xB4 bString “3” 0x33 0xB5 bString “NUL” 0x00 0xB6 bString “4” 0x34 0xB7 bString “NUL” 0x00 0xB8 bString “5” 0x35 0xB9 bString “NUL” 0x00 0xBA bString “6” 0x36 0xBB bString “NUL” 0x00 0xBC bString “7” 0x37 0xBD bString “NUL” 0x00 0xBE bString “8” 0x38 0xBF bString “NUL” 0x00 0xC0 bString “9” 0x39 0xC1 bString “NUL” 0x00 60 In-System Design Confidential ISD-200 ASIC Datasheet Address Field Name Description Example SROM / FBh Data 0xC2 bLength 0x0E bDescriptorType Configuration 2 string descriptor length in bytes (restricted to 63 bytes or less). Descriptor type 0xC3 0xC4 bString “L” 0x4C 0xC5 bString “NUL” 0x00 0xC6 bString “o” 0x6F 0xC7 bString “NUL” 0x00 0xC8 bString “w” 0x77 0x00 0x03 0xC9 bString “NUL” 0xCA bString “” 0x20 0xCB bString “NUL” 0x00 0xCC bString “P” 0x50 0xCD bString “NUL” 0x00 0xCE bString “o” 0x6F 0xCF bString “NUL” 0x00 0xD0 bString “w” 0x77 0xD1 bString “NUL” 0x00 0xD2 bString “e” 0x65 0xD3 bString “NUL” 0x00 0xD4 bString “r” 0x72 0xD5 bString “NUL” 0x00 0xD6 bLength 0x0E 0xD7 bDescriptorType Interface 2 (Configuration 2) string descriptor length in bytes (restricted to 63 bytes or less). Descriptor type 0xD8 bString “B” 0x42 0xD9 bString “NUL” 0x00 0xDA bString “u” 0x75 0xDB bString “NUL” 0x00 0xDC bString “s” 0x73 0xDD bString “NUL” 0x00 0xDE bString “” 0x20 0xDF bString “NUL” 0x00 0xE0 bString “P” 0x50 0xE1 bString “NUL” 0x00 0xE2 bString “o” 0x6F 0xE3 bString “NUL” 0x00 0xE4 bString “w” 0x77 0xE5 bString “NUL” 0x00 0xE6 bString “e” 0x65 0xE7 bString “NUL” 0x00 0xE8 bString “r” 0x72 0x03 0xE9 bString “NUL” 0x00 0xEA bString “e” 0x65 0xEB bString “NUL” 0x00 0xEC bString “d” 0x64 0xED bString “NUL” 0x00 In-System Design Confidential 61 ISD-200 ASIC Datasheet Address Field Name Description Example SROM / FBh Data 0xEE – 0x1FF (SROM), 0x13F (FBh) Not used Available SROM space / unused FBh space Table 20 – Example Serial ROM / FBh Data 62 In-System Design Confidential 0xXX