diff options
Diffstat (limited to 'sys/doc/ata/ata-8')
| -rw-r--r-- | sys/doc/ata/ata-8 | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/sys/doc/ata/ata-8 b/sys/doc/ata/ata-8 new file mode 100644 index 000000000000..f651b6b49326 --- /dev/null +++ b/sys/doc/ata/ata-8 @@ -0,0 +1,143 @@ +8. Programming Requirements + +8.1 Reset Response + +A reset is accepted within 400 nsec after the negation of RESET- or within 400 +nsec after SRST has been set in the Device Control Register. + +When the drive is reset by RESET-, Drive 1 shall indicate it is present by +asserting DASP- within 400 msec, and DASP- shall remain asserted for 30 +seconds or until Drive 1 accepts the first command. See also 6.3.4 and 6.3.13. + +When the drive is reset by SRST, the drive shall set BSY=1. + +See also 7.2.6. + +When a reset is accepted, and with BSY set: + + a) Both drives perform any necessary hardware initialization + b) Both drives clear any previously programmed drive parameters + c) Both drives may revert to the default condition + d) Both drives load the Command Block Registers with their default values + e) If a hardware reset, Drive 0 waits for DASP- to be asserted by Drive 1 + f) If operational, Drive 1 asserts DASP- + g) Drive 0 waits for PDIAG- to be asserted if Drive 1 asserts DASP- + h) If operational, Drive 1 clears BSY + i) If operational, Drive 1 asserts PDIAG- + j) Drive 0 clears BSY + +No interrupt is generated when initialization is complete. + +The default values for the Command Block Registers if no self-tests are +performed or if no errors occurred are: + + Error = 01h Cylinder Low = 00h + Sector Count = 01h Cylinder High = 00h + Sector Number = 01h Drive/Head = 00h + +The Error Register shall contain a Diagnostic Code (see Table 9.2) if a self- +test is performed. + +Following any reset, the host should issue an Initialize Drive Parameters +command to ensure the drive is initialized as desired. + +There are three types of reset in ATA. The following is a suggested method of +classifying reset actions: + + - Power On Reset: the drive executes a series of electrical circuitry + diagnostics, spins up the HDA, tests speed and other mechanical + parametrics, and sets default values. + - Hardware Reset: the drive executes a series of electrical circuitry + diagnostics, and resets to default values. + - Software Reset: the drive resets the interface circuitry to default values. + +8.2 Translate Mode + +The cylinder, head and sector geometry of the drive as presented to the host +may differ from the actual physical geometry. Translate mode is an optional +and device specific means of mapping between the two. + +8.3 Power Conditions + +Optional power commands permit the host to modify the behavior of the drive in +a manner which reduces the power required to operate. + + TABLE 8-1: POWER CONDITIONS + +----------+----+----+----+------------------+-----+ + | Mode |SRST| BSY|DRDY| Interface Active |Media| + +----------+----+----+----+------------------+-----+ + | Sleep | 1 | x | x | No | 0 | + | | | | | | | + | Standby | x | 0 | 1 | Yes | 0 | + | | | | | | | + | Idle | x | 0 | 1 | Yes | 1 | + | | | | | | | + | Active | x | x | x | Yes | 1 | + +----------+----+----+----+------------------+-----+ + | 1 = Active 0 = Inactive | + +--------------------------------------------------+ + +The lowest power consumption occurs in Sleep mode. When in Sleep mode, the +drive needs a Software Reset to be activated (see 9.18). The time to respond +could be as long as 30 seconds or more. + +In Standby mode the drive interface is capable of accepting commands, but as +the media is not immediately accessible, it could take the drive as long as 30 +seconds or more to respond. + +In Idle mode the drive is capable of responding immediately to media access +requests. A drive in Idle mode may take longer to complete the execution of a +command because it may have to activate some circuitry. + +In Active mode the drive is capable of responding immediately to media access +requests, and commands complete execution in the shortest possible time. + +Ready is not a power condition. A drive may post ready at the interface even +though the media may not be accessible. + +See specific power-related commands. + +8.4 Error Posting + +The errors that are valid for each command are defined in Table 8-1. It is not +a requirement that all valid conditions be implemented. See 7.2.9 and 7.2.13 +for the definition of the Error Register and Status Register bits. + + TABLE 8-2: REGISTER CONTENTS + +----------------------------+---------------------+ + | Error Register | Status Register | + |BBK|UNC|IDNF|ABRT|TK0NF|AMNF|DRDY|DWF|DSC|CORR|ERR| + +------------------------+---+---+----+----+-----+----+----+---+---+----+---+ + | Check Power Mode | | | | V | | | V | V | V | | V | + | Execute Drive Diags | See 9.2 | | | | | V | + | Format Track | | | V | V | | | V | V | V | | V | + | Identify Drive | | | | V | | | V | V | V | | V | + | Idle | | | | V | | | V | V | V | | V | + | Idle Immediate | | | | V | | | V | V | V | | V | + | Initialize Drive Parms | | | | | | | V | V | V | | | + | Recalibrate | | | | V | V | | V | V | V | | V | + | Read Buffer | | | | V | | | V | V | V | | V | + | Read DMA | V | V | V | V | | V | V | V | V | V | V | + | Read Long | V | V | V | V | | V | V | V | V | V | V | + | Read Multiple | V | V | V | V | | V | V | V | V | V | V | + | Read Sector(s) | V | V | V | V | | V | V | V | V | V | V | + | Read Verify Sector(s) | V | V | V | V | | V | V | V | V | V | V | + | Seek | | | V | V | | | V | V | V | | V | + | Set Features | | | | V | | | V | V | V | | V | + | Set Multiple Mode | | | | V | | | V | V | V | | V | + | Sleep | | | | V | | | V | V | V | | V | + | Standby | | | | V | | | V | V | V | | V | + | Standby Immediate | | | | V | | | V | V | V | | V | + | Write Buffer | | | | V | | | V | V | V | | V | + | Write DMA | V | | V | V | | | V | V | V | | V | + | Write Long | V | | V | V | | | V | V | V | | V | + | Write Multiple | V | | V | V | | | V | V | V | | V | + | Write Same | V | | V | V | | | V | V | V | | V | + | Write Sector(s) | V | | V | V | | | V | V | V | | V | + | Write Verify | V | V | V | V | | V | V | V | V | V | V | + +------------------------+---+---+----+----+-----+----+----+---+---+----+---+ + | Invalid Command Code | | | | V | | | V | V | V | | V | + +------------------------+---+---+----+----+-----+----+----+---+---+----+---+ + | V = valid on this command | + +---------------------------------------------------------------------------+ + |
