This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TUSB9261: Is 'ATA Status Return' supported?

Part Number: TUSB9261

I'm trying to implement ATA Pass-Through commands for the TUSB9261DEMO board based on the SCSI/ATA Translation - 4 (SAT-4) document (revision 05 from 11 March 2016). According to this specification document all devices supporting ATA Pass-Through commands shall support the ATA Status Return descriptor. Based on my testing so far, the demo board supports ATA Pass-Through (12 and 16) commands, but does not appear to support the ATA Status Return descriptor. Can you confirm if the ATA Status Return descriptor should be supported? Note, our demo board is running firmware v1.05.

  • Hello Mike,

    I am checking this with the firmware developer.
    We will be providing an answer soon.

    Regards,
    Jorge
  • Mike,

    It should be supported.  It is set if there is a SATA error or the check condition flag is set.   What is the error on the SATA device? Are you reading descriptor format sense info?

  • Thanks for the response. Since my initial post I have made some progress. I am issuing an ATA Pass-Through command with the Protocol field set to Fh (Return Response Information). I am trying to use this to check the ATA registers following a previously successful ATA Pass-Through command. The command is successful, but the Return Response Information only has the first two bytes set (i.e. the descriptor code and descriptor length fields). The remaining bytes (i.e. registers) are all zero. I assume there must be something I'm missing?
  • Did you set the CHECK_CONDITION bit in the original command before checking status?   We only populate the status data if the command completes with an error or CHECK_CONDITION is set.  I believe this is per spec.  We only expect the status to be checked under those conditions. 

  • This wasn't necessarily how I interpreted the spec (mainly based on one statement: "If the PROTOCOL field contains Fh (i.e., Return Response Information), then the SATL shall: ignore all fields in the CDB except for the PROTOCOL field..."), but regardless is only a small change. Based on initial testing this looks to work. I will report back if more testing shows an issue or any new problems.
  • See Table 175 in the spec. "No error, successful completion or command in progress. The SATL shall return GOOD status." It's only the other cases where it says to populate the ATA status return descriptor.  It's inefficient for the firmware to populate the ATA return descriptor data for commands that completed successfully.  I didn't see any use case for needing that information other than the CK_COND being set or the command failing, but let me know otherwise.