PCI IDE Controller. Specification. Revision 1.0



Similar documents
PCI-to-PCI Bridge Architecture Specification. Revision 1.1

Programming Interface. for. Bus Master IDE Controller. Revision 1.0

PCI-SIG ENGINEERING CHANGE NOTICE

miniflash User Manual

Microprocessor & Assembly Language

EHCI: Enhanced Host Controller Interface For USB 2.0

2-Serial/1-Parallel Port PCI Adapter RC303 User Manual

ALL-USB-RS422/485. User Manual. USB to Serial Converter RS422/485. ALLNET GmbH Computersysteme Alle Rechte vorbehalten

A+ Guide to Managing and Maintaining Your PC, 7e. Chapter 1 Introducing Hardware

21152 PCI-to-PCI Bridge

2. THE PCI EXPRESS BUS

IDE2410 ATA-100 IDE RAID Card. Version 1.0

Volume FORENSIC COMPUTERS. Tableau T35i SATA/IDE Bridge USER GUIDE

isppac-powr1220at8 I 2 C Hardware Verification Utility User s Guide

Chapter 2 Logic Gates and Introduction to Computer Architecture

Low Profile Ultra ATA-133 RAID PCI Host

Connecting AMD Flash Memory to a System Address Bus

Intel RAID Controller Troubleshooting Guide

1-Port R422/485 Serial PCIe Card

PCI BIOS SPECIFICATION. Revision 2.1

FM75 Low-Voltage Two-Wire Digital Temperature Sensor with Thermal Alarm

PC Boot Considerations for Devices >8GB

The Answer to the 14 Most Frequently Asked Modbus Questions

WHQL Certification Approval...2 User Interface...3 SUNIX s COMLab..4

Using Altera MAX Series as Microcontroller I/O Expanders

USB2.0 <=> I2C V4.4. Konverter Kabel und Box mit Galvanischetrennung

SERIAL ATA HOST CONTROLLER CARD USER MANUAL SATA R SATA I WARNING

Modbus and ION Technology

ADVANCED PROCESSOR ARCHITECTURES AND MEMORY ORGANISATION Lesson-17: Memory organisation, and types of memory

The Secrets of RS-485 Half-duplex Communication

UMBC. ISA is the oldest of all these and today s computers still have a ISA bus interface. in form of an ISA slot (connection) on the main board.

Onboard-RAID. Onboard-RAID supports striping (RAID 0), mirroring (RAID 1), striping/mirroring (RAID 0+1), or spanning (JBOD) operation, respectively.

Manual Serial PCI Cards

Configuration Variables For Digital Command Control, All Scales

Intel Desktop Board DP35DP. MLP Report. Motherboard Logo Program (MLP) 6/17/2008

SD Specifications Part A2 SD Host Controller Simplified Specification

IDE/ATA Interface. Objectives. IDE Interface. IDE Interface

PCI Hot-Plug Specification

4+1 SATA II 300 IDE/PATA PCI-E. Combo Host Card w/ RAID & Port. Multiplier

ATTO ExpressSAS Troubleshooting Guide for Windows

Microcontroller Based Low Cost Portable PC Mouse and Keyboard Tester

Intel N440BX Server System Event Log (SEL) Error Messages

3 Address Spaces & Transaction Routing. The Previous Chapter. This Chapter. The Next Chapter

Smarthome SELECT Bluetooth Wireless Stereo Audio Receiver and Amplifier INTRODUCTION

SOFTWARE INSTALLATION MANUAL

PCI-to-SATA RAID Adapter AEC-6890M. User s Manual Version:1.0

PCAN-ISA. CAN Interface for ISA. User Manual

PMC-XM-DIFF & EADIN/MODBUS Virtex Design

Eliminate Risk of Contention and Data Corruption in RS-485 Communications

ATA-133 IDE RAID Card. Version 1.1

PCI Express 2.0 SATA III RAID Controller Card with Internal Mini-SAS SFF-8087 Connector

SATA II PCIe RAID Quick Installation Guide

Intel Desktop Board DG45ID. MLP Report. Motherboard Logo Program (MLP) 9/29/2009

RAID installation guide for ITE8212F

Hot and Surprise Plug Recommendations for Enterprise PCIe Switches in the Data Center (Short Form)

SATA II PCIe RAID Quick Installation Guide

SD21-21 Channel Servo Driver Module Power Servo's

Intel 8255x 10/100 Mbps Ethernet Controller Family

Programming Flash Microcontrollers through the Controller Area Network (CAN) Interface

SATA II-150 PCI Quick Installation Guide

Advanced x86: BIOS and System Management Mode Internals SPI Flash. Xeno Kovah && Corey Kallenberg LegbaCore, LLC

NB3H5150 I2C Programming Guide. I2C/SMBus Custom Configuration Application Note

LINDY ELECTRONICS LIMITED & LINDY-ELEKTRONIK GMBH - SECOND EDITION

In-System Programming Design TM. Guidelines for ispjtag Devices. Introduction. Device-specific Connections. isplsi 1000EA Family.

SATA II-150 PCI RAID

2 Port PCI Express 2.0 SATA III 6Gbps RAID Controller Card w/ 2 msata Slots and HyperDuo SSD Tiering

The SATA II PCIe RAID is an ultra high-speed two channel Serial ATA Generation II RAID controller for use in PCI Express enabled systems.

PACKAGE OUTLINE DALLAS DS2434 DS2434 GND. PR 35 PACKAGE See Mech. Drawings Section

Intel Desktop Board D925XECV2 Specification Update

Chapter 8: Installing Linux The Complete Guide To Linux System Administration Modified by M. L. Malone, 11/05

Mother Board Component

4 Port PCI Express 2.0 SATA III 6Gbps RAID Controller Card with HyperDuo SSD Tiering

ATTO ThunderLink Thunderbolt to SAS/SATA Troubleshooting Guide

WHQL Certification Approval...2 User Interface K software FIFO 4 Universal PCI Interface...5 Ready for 64-bit System...5

How to setup a serial Bluetooth adapter Master Guide

Date: March Reference No. RTS-CB 018

RAID installation guide for Silicon Image SiI3114

Set Up Your MXI -Express x4 System

INTRODUCTION INSTALLING THE SCSI CARD 2940UW PRO

VSCOM USB PRO Series Industrial I/O Adapters

SATA 150 RAID. user. Model MAN UM

Table 1 below is a complete list of MPTH commands with descriptions. Table 1 : MPTH Commands. Command Name Code Setting Value Description

PCI Express SATA III RAID Controller Card with Mini-SAS Connector (SFF-8087) - HyperDuo SSD Tiering

Chapter 5 Cubix XP4 Blade Server

How to setup the UCW232C Serial WiFi adapter

MICROPROCESSOR. Exclusive for IACE Students iacehyd.blogspot.in Ph: /422 Page 1

6-Port SATA II 150 PCI Host Card w/raid

Single 2.5V - 3.6V or 2.7V - 3.6V supply Atmel RapidS serial interface: 66MHz maximum clock frequency. SPI compatible modes 0 and 3

AN10866 LPC1700 secondary USB bootloader

Serial ATA PCI Quick Installation Guide

Configuration Maximums VMware vsphere 4.0

Quick Installation. A Series of Intelligent Bar Code Reader with NeuroFuzzy Decoding. Quick Installation

Chapter 02: Computer Organization. Lesson 04: Functional units and components in a computer organization Part 3 Bus Structures

1. Computer System Structure and Components

Production Flash Programming Best Practices for Kinetis K- and L-series MCUs

UEFI on Dell BizClient Platforms

- Advanced IOS Functions -

PCMCIA 1 Port RS EDITION OCTOBER 1999

PROGRAMMABLE LOGIC CONTROLLERS Unit code: A/601/1625 QCF level: 4 Credit value: 15 TUTORIAL OUTCOME 2 Part 1

Transcription:

PCI IDE Controller Specification Revision 1.0 3/4/94

1.0. Introduction This document defines the necessary characteristics of a PCI-based IDE controller so that device independent software (i.e.; BIOSes) can identify and properly configure the device. The document should be viewed as a set of guidelines or rules that PCI IDE controllers should follow when they are used on PCI add-in cards. Devices that follow these guidelines are assured that they will fit cleanly in the 'Plug and Play' model of PCI, will be recognized by BIOSes on PCI machines, and will be properly configured in the system. IDE controllers are one of a small set of 'compatibility' devices, that have well known programming interfaces at fixed addresses and typically using fixed IRQs. Most OS's contain code that deal directly with compatibility devices (IDE included) and this becomes a strong force to maintain the 'compatibility' programming models. Newer OS's allow devices to maintain the same register level programming interface (i.e.; the same meanings for register), while addressing the registers at non-standard locations and using non-standard IRQs. This helps avoid resource conflicts and allows multiple controllers of the same type to be in a system. The guidelines in the document allow an IDE controller to be: 1. 'compatibility' only, 2. 'compatibility' or native-pci (i.e.; fully-relocatable), 3. or native-pci only. The recommended implementation for add-in IDE controllers is number 2 ('compatibility' or native-pci), or number 3 (native-pci only). 2.0. PCI IDE Controller The PCI IDE controller is capable of supporting upto two IDE channels (primary and secondary) with two devices per channel for a total of four IDE devices. The two channels in the IDE controller are independent and do not effect each others operation. The control registers for each channel follow the AT Attachment (ATA) Interface Standard with one exception defined below. The PCI IDE controller (supporting two channels) is a single PCI function. A PCI device supporting four IDE channels would be a multifunction device (actually two functions) where each function is a PCI IDE controller supporting two channels. PCI IDE controllers (like all PCI devices) must implement and respond to PCI Configuration Space. The ATA Standard defines two sets of registers known as Control Block Registers and Command Block Registers. The Command Block Registers consist of eight IO ports providing various command/status functions for the IDE device. The Control Block registers consist of two bytes used for control/status of the IDE device. The second byte of this pair is read-only and has the interesting quirk where the top bit of this byte is shared with the floppy controller when the IDE device is mapped at 'compatibility' locations. It turns out that software controlling IDE devices (BIOS, drivers, etc.) does not use this register at all. The exception for PCI IDE controllers to the ATA Standard is that only the first of the two bytes defined in the Control Block registers is implemented. This byte provides Alternate Status on reads and Device Control on writes. Accesses to the second byte of the Control Block registers (Drive Address) should be ignored by the PCI IDE controller. The ATA Standard defines an interrupt for the IDE channel. Since the PCI IDE controller supports two IDE channels it has to deal with two interrupts. When the PCI IDE controller is operating in 'compatibility' mode it uses the standard interrupts defined for compatibility. When the controller is operating in native- PCI mode the interrupts from the channels are collapsed and shared on a single PCI interrupt line. Global control (i.e.; enable/disable) of the PCI IDE controller is done by manipulating the 'IO enable' bit in the controller's Configuration Space Command register. Controllers must implement this bit as read-write and the bit must be set to zero (disabled) on reset. Note that this bit effects both IDE channels. 2.1. PCI IDE Controller in 'Compatibility' mode This section defines the characteristics of a PCI IDE controller when it is operating in the 'compatibility' mode. The main characteristics are that the controller registers are hardwired to fixed IO locations and 1

fixed IRQs are used. Hardwired assignments are shown in the Table 1 below. When a channel is operating in 'compatibility' mode it must decode the addresses shown in the Table 1 and use the specified IRQ. When the device is disabled (using the IO Enable bit in the Command register), the device must not respond to any IO addresses, and must tristate it's IRQ connections. Channel Command Block Control Block IRQ Registers Register Primary 1F0h - 1F7h 3F6h 14 Secondary 170h - 177h 376h 15 Table 1. Compatibility resource mappings When a channel is operating in 'compatibility' mode and it's Control Block register is addressed with more than one byte enable asserted (i.e.; a WORD access to 3F6h or 176h) the PCI IDE controller may either return both bytes of data (with the high-order byte returning device specific data) or terminate the access with Target-Abort. 2.2. PCI IDE Controller in Native-PCI mode This section defines the characteristics of a PCI IDE controller when it is operating in native-pci mode. In this mode the registers of the IDE channels are completely relocatable in IO space. Base Address Registers in the PCI IDE controller's Configuration Space registers are used to map the IDE registers into IO space. Specific base address registers are used to map the different register blocks as defined in Table 2 (below). Base address registers are identified by providing their offset in configuration space. Channel Command Block Registers Control Block Register Primary BA at offset 0x10 BA at offset 0x14 Secondary BA at offset 0x18 BA at offset 0x1C Table 2. Base Address Registers for Register Mapping Base registers used to map Command Block registers must ask for 8 bytes of IO space. Base registers used to map Control Block registers must ask for 4 bytes of IO space. 1 In this four byte allocation the byte at offset 02h is where the Alternate Status/Device Control byte is located. Other bytes in the four byte allocation (bytes at offsets 0,1 and 3) are undefined and may be used for device specific purposes. Device independent software should only access the byte at offset 02h; Accessing other bytes may cause errors. Interrupt signals from the IDE channels must be connected to the appropriate PCI interrupt pin and converted to the appropriate polarity. The Interrupt Pin and Interrupt Line registers must be implemented in the controller's configuration space. 2.3. PCI IDE Controller Identification and Control The Class Code field in the controllers configuration space is used by software to determine and control the mode that PCI IDE controller is operating in. In the three byte Class Code field, the upper byte (Base Class) has the value 01h, the middle byte (Sub-Class) has the value 01h, and the low byte (Programming Interface) can have several values depending on the functionality of the controller (see Figure 1.). In the Programming Interface byte there are two bits allocated for each IDE channel that determine and control what mode the channel is operating in. Table 3 provides the definitions for those bits. Bit Description 1 This is the smallest amount of IO space that a Base Register can request. 2

0 Determines the mode that the primary IDE channel is operating in. Zero corresponds to 'compatibility', one means native-pci mode. This bit is implemented as read-only if the channel supports only one mode, or readwrite if both modes are supported. The powerup state for this bit (when writable) can be either 0 or 1. 1 This bit indicates whether or not the primary channel has a fixed mode of operation. If this bit is zero, the mode is fixed and is determined by the (readonly) value of bit 0. If this bit is one, the channel supports both modes and may be set to either mode by writing bit 0. 2 Determines the mode that the secondary IDE channel is operating in. Zero corresponds to 'compatibility', one means native-pci mode. This bit is implemented as read-only if the channel supports only one mode, or readwrite if both modes are supported. The powerup state for this bit (when writable) can be either 0 or 1. 3 This bit indicates whether or not the secondary channel has a fixed mode of operation. If this bit is zero, the mode is fixed and is determined by the (readonly) value of bit 0. If this bit is one, the channel supports both modes and may be set to either mode by writing bit 0. Table 3. Bit definitions in Programming Interface byte 2.4. Both Modes Controller Figure 1. PCI IDE Controller Class Code PCI IDE controllers that support both modes ('compatibility' and native-pci) and software configuring these devices must be aware of the following points. When a channel is in 'compatibility' mode, the controller does hard decodes of the compatibility addresses. Any values in the associated Base Address registers are ignored. Conversely, when a channel is in native-pci mode decodes are done using the values in the associated Base Address registers and no 'compatibility' addresses should be used. When a channel is in 'compatibility' mode, the controller can either disable the first four Base Address registers (i.e.; make them not writable and return 0's when read) or leave them fully programmable. In either case the values in these registers are ignored as long as the channel is in 'compatibility' mode. When a channel is in compatibility mode the IRQ used by the channel must be the 'compatibility' IRQ. PCI interrupt lines must not be effected by that channel's interrupt. Conversely, when the channel is in native-pci mode the channel's interrupt should be connected to the appropriate INTx#. Compatibility IRQs should not be effected (i.e.; they should be tristated). Connections of channel interrupt signals to the 'compatibility' IRQs should be disabled (i.e.; tristated) until the PCI IDE controller is enabled via the Command register in Configuration Space. The controller is enabled when a '1' is written to the IO enable bit (bit 0) in the Command register. 3

3.0. BIOS Implications BIOSes are expected to recognize and properly configure PCI IDE controllers. This means examining the Class Code fields for all PCI IDE controllers to determine their capabilities (i.e.; relocatability), choosing which controllers/channels will be 'compatibility' primary and secondary, and configuring or disabling all others. The BIOS must take into account non-pci IDE controllers when doing the configuration. BIOSes should also consider adding the capability of booting from native-pci IDE controllers. Guidelines for the BIOS interpretation of the Programming Interface byte of the PCI IDE controller class code are given in Table 4. This table shows the interesting combinations of the lower four bits of the Programming Interface byte. Lower 4 bits of Programming Description Interface byte 0000 Indicates a 'compatibility'-only device. BIOS must assume that both channels are implemented (even if device actually supports only one). Device must be used for both 'compatibility' channels or not used at all (disabled). 0001 Primary channel is native-pci only. Secondary channel is 'compatibility'-only. If controller is not going to be used for secondary 'compatibility' channel then both channels cannot be used. 001x Primary channel can operate in either mode. Secondary channel is 'compatibility'-only. If controller is not going to be used for secondary 'compatibility' channel then both channels cannot be used. 0100 Secondary channel is native-pci only. Primary channel is 'compatibility'-only. If controller is not going to be used for primary 'compatibility' channel then both channels cannot be used. 0101 Both primary and secondary channels operate in native-pci mode only. 011x Primary channel can operate in either mode. Secondary channel is native-pci only. 1x00 Secondary channel can operate in either mode. Primary channel is 'compatibility'-only. If controller is not going to be used for primary 'compatibility' channel then both channels cannot be used. 1x01 Secondary channel can operate in either mode. Primary channel is native-pci only. 1x1x This is the most general case. Both channels support both modes. Table 4. BIOS interpretation of Programming Interface byte. 3.1. Device Operation with Older BIOSes PCI IDE controllers that follow this specification and are added into a system that has an older BIOS that is not aware of this specification will behave as follows: If the device defaults to 'compatibility' mode, it will hard decode the compatibility addresses and use the compatibility IRQs. If the system already contains an IDE controller some unusual behavior will occur. The end-user will have to deal with the problem. If the device defaults to native-pci mode, it will be configured like any other PCI device and will operate (with the appropriate drivers) without end-user involvement. 4.0. Compatibility Interrupt Connection This document does not define how a PCI IDE controller on an add-in card gets connected to the 'compatibility' IRQs (14 and 15) needed to operate in 'compatibility' mode. It is unlikely that these IRQs will ever be made available on the standard PCI connector. However, it is the responsibility of the add-in card to provide these connections in some manner. 4

5.0. Operation with PCI-to-PCI Bridges PCI IDE controllers operating in 'compatibility' mode are not supported behind a PCI to PCI bridge. PCI to PCI bridges (and secondary Host Bus Bridges) do not support the forwarding of IDE 'compatibility' addresses to their secondary bus. To operate in 'compatibility' mode the controller must reside on the primary PCI bus of the system. PCI IDE controllers operating in native-pci mode can be used on any PCI bus in the system. 5