This message is from the T13 list server.


Rather than a specific CDB proposal, I prefer to stick to a rough list
of design goals and constraints.  The SCSI experts can figure out the
details :)

Definitions:
"HOB taskfile" -- ATA shadow register contents, with two bytes stored
for each shadow register, "current" and "previous" bytes.  This matches
the 2-byte ATA FIFO used in standard ATA when supporting the LBA48
feature.

Or in other words, a taskfile is the ATA version of a SCSI CDB.

"non-HOB taskfile" -- ATA shadow register contents, with one byte stored
for each shadow register, the "current" byte.


Design requirements:
1) support for vendor-reserved ATA commands and unspecified (future) ATA
commands is a requirement.

2) command protocol (pio-in, dma-out, dma-tcq-out, no-data,
etc.) must be specified in addition to ATA Command opcode register.
This is required for vendor-reserved ATA commands, and unspecified
(i.e. implemented in the future) ATA commands.

3) support for HOB taskfiles is required (likely implies a
variable-length CDB, as noted below), as this is what most current and
future ATA devices will support.


Observations:
1) it is likely that a variable-length CDB would be required for a 
HOB taskfile

2) it is likely that a 12-byte CDB is sufficient for a non-HOB
taskfile.

2.1) Considering observation #1 with #2, may be desirable to simply
avoid specification of a 12-byte CDB for ATA passthru.  I only mention
the 12-byte CDB because some legacy software is limited to 12-byte
CDBs, and also some ATA host controllers do not support HOB taskfiles.

3) data transfer direction may be inferred from command protocol, or
specified directly.  if data transfer direction is listed in the CDB,
then please make its specification a _requirement_, not optional.  If
specified explicitly (rather than inferred), it _must_ match the
implicit data transfer direction in the command protocol field.

4) historically, OS drivers will give special treatment to the ATA
SET FEATURES - XFER MODE command.  For PATA host controllers, and some SATA
controllers, this requires special synchronization and programming of
host-controller-specific registers.  Sometimes host controllers will
"snoop" this ATA command as well, requiring the OS driver to 

For this reason, a "set features - xfer mode" 1-bit boolean flag
would be useful.  Such a flag MUST be set if the ATA Command register
and Features register indicate a SET FEATURES - XFER MODE command.
Zero otherwise.


Reply via email to