4 * Home page of code is: http://smartmontools.sourceforge.net
6 * Copyright (C) 2003-8 Philip Williams
7 * Copyright (C) 2012 Christian Franke <smartmontools-support@lists.sourceforge.net>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2, or (at your option)
14 * You should have received a copy of the GNU General Public License
15 * (for example COPYING); If not, see <http://www.gnu.org/licenses/>.
19 #include "atacmdnames.h"
23 const char * atacmdnames_cpp_cvsid
= "$Id: atacmdnames.cpp 3670 2012-10-31 22:00:50Z chrfranke $"
26 const char cmd_reserved
[] = "[RESERVED]";
27 const char cmd_vendor_specific
[] = "[VENDOR SPECIFIC]";
28 const char cmd_reserved_sa
[] = "[RESERVED FOR SERIAL ATA]";
29 const char cmd_reserved_cf
[] = "[RESERVED FOR COMPACTFLASH ASSOCIATION]";
30 const char cmd_reserved_mcpt
[] = "[RESERVED FOR MEDIA CARD PASS THROUGH]"; // ACS-3: Reserved
31 const char cmd_recalibrate_ret4
[]= "RECALIBRATE [RET-4]";
32 const char cmd_seek_ret4
[] = "SEEK [RET-4]";
34 // Tables B.3 and B.4 of T13/2161-D (ACS-3) Revision 4, September 4, 2012
36 const char * const command_table
[] = {
37 /*-------------------------------------------------- 00h-0Fh -----*/
41 "CFA REQUEST EXTENDED ERROR",
44 "DATA SET MANAGEMENT", // ACS-2
49 "REQUEST SENSE DATA EXT", // ACS-2
54 /*-------------------------------------------------- 10h-1Fh -----*/
55 "RECALIBRATE [OBS-4]",
71 /*-------------------------------------------------- 20h-2Fh -----*/
73 "READ SECTOR(S) [OBS-5]",
75 "READ LONG (w/o retry) [OBS-4]",
78 "READ DMA QUEUED EXT [OBS-ACS-2]",
79 "READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]",
88 /*-------------------------------------------------- 30h-3Fh -----*/
90 "WRITE SECTOR(S) (w/o retry) [OBS-5]",
92 "WRITE LONG (w/o retry) [OBS-4]",
93 "WRITE SECTORS(S) EXT",
95 "WRITE DMA QUEUED EXT [OBS-ACS-2]",
96 "SET NATIVE MAX ADDRESS EXT [OBS-ACS-3]",
97 "CFA WRITE SECTORS WITHOUT ERASE",
101 "WRITE VERIFY [OBS-4]",
103 "WRITE DMA QUEUED FUA EXT [OBS-ACS-2]",
105 /*-------------------------------------------------- 40h-4Fh -----*/
106 "READ VERIFY SECTOR(S)",
107 "READ VERIFY SECTOR(S) (w/o retry) [OBS-5]",
108 "READ VERIFY SECTOR(S) EXT",
111 "WRITE UNCORRECTABLE EXT", // ATA-8
113 "READ LOG DMA EXT", // ATA-8
122 /*-------------------------------------------------- 50h-5Fh -----*/
123 "FORMAT TRACK [OBS-4]",
130 "WRITE LOG DMA EXT", // ATA-8
134 "TRUSTED NON-DATA", // ATA-8
135 "TRUSTED RECEIVE", // ATA-8
136 "TRUSTED RECEIVE DMA", // ATA-8
137 "TRUSTED SEND", // ATA-8
138 "TRUSTED SEND DMA", // ATA-8
139 /*-------------------------------------------------- 60h-6Fh -----*/
140 "READ FPDMA QUEUED", // ATA-8
141 "WRITE FPDMA QUEUED", // ATA-8
143 "NCQ QUEUE MANAGEMENT", // ACS-3
144 "SEND FPDMA QUEUED", // ACS-3
145 "RECEIVE FPDMA QUEUED", // ACS-3
156 /*-------------------------------------------------- 70h-7Fh -----*/
164 "SET DATE & TIME EXT", // ACS-3
165 "ACCESSIBLE MAX ADDRESS CONFIGURATION", // ACS-3
173 /*-------------------------------------------------- 80h-8Fh -----*/
181 "CFA TRANSLATE SECTOR [VS IF NO CFA]",
190 /*-------------------------------------------------- 90h-9Fh -----*/
191 "EXECUTE DEVICE DIAGNOSTIC",
192 "INITIALIZE DEVICE PARAMETERS [OBS-6]",
193 "DOWNLOAD MICROCODE",
194 "DOWNLOAD MICROCODE DMA", // ACS-2
195 "STANDBY IMMEDIATE [RET-4]",
196 "IDLE IMMEDIATE [RET-4]",
199 "CHECK POWER MODE [RET-4]",
207 /*-------------------------------------------------- A0h-AFh -----*/
209 "IDENTIFY PACKET DEVICE",
210 "SERVICE [OBS-ACS-2]",
224 /*-------------------------------------------------- B0h-BFh -----*/
226 "DEVICE CONFIGURATION [OBS-ACS-3]",
229 "SANITIZE DEVICE", // ACS-2
231 "NV CACHE [OBS-ACS-3]", // ATA-8
241 /*-------------------------------------------------- C0h-CFh -----*/
242 "CFA ERASE SECTORS [VS IF NO CFA]",
249 "READ DMA QUEUED [OBS-ACS-2]",
251 "READ DMA (w/o retry) [OBS-5]",
253 "WRITE DMA (w/o retry) [OBS-5]",
254 "WRITE DMA QUEUED [OBS-ACS-2]",
255 "CFA WRITE MULTIPLE WITHOUT ERASE",
256 "WRITE MULTIPLE FUA EXT",
258 /*-------------------------------------------------- D0h-DFh -----*/
260 "CHECK MEDIA CARD TYPE [OBS-ACS-2]",
269 "GET MEDIA STATUS [OBS-8]",
270 "ACKNOWLEDGE MEDIA CHANGE [RET-4]",
271 "BOOT POST-BOOT [RET-4]",
272 "BOOT PRE-BOOT [RET-4]",
273 "MEDIA LOCK [OBS-8]",
274 "MEDIA UNLOCK [OBS-8]",
275 /*-------------------------------------------------- E0h-EFh -----*/
285 "READ BUFFER DMA", // ACS-2 (was: WRITE SAME [RET-4])
287 "WRITE BUFFER DMA", // ACS-2
289 "MEDIA EJECT [OBS-8]",
290 "IDENTIFY DEVICE DMA [OBS-4]",
292 /*-------------------------------------------------- F0h-FFh -----*/
294 "SECURITY SET PASSWORD",
296 "SECURITY ERASE PREPARE",
297 "SECURITY ERASE UNIT",
298 "SECURITY FREEZE LOCK",
299 "SECURITY DISABLE PASSWORD",
301 "READ NATIVE MAX ADDRESS [OBS-ACS-3]",
302 "SET MAX ADDRESS [OBS-ACS-3]",
311 typedef char ASSERT_command_table_size
[
312 sizeof(command_table
)/sizeof(command_table
[0]) == 256 ? 1 : -1];
314 /* Returns the name of the command (and possibly sub-command) with the given
315 command code and feature register values. For most command codes this
316 simply returns the corresponding entry in the command_table array, but for
317 others the value of the feature register specifies a subcommand or
318 distinguishes commands. */
319 const char *look_up_ata_command(unsigned char c_code
, unsigned char f_reg
) {
325 return "NOP [Abort queued commands]";
327 return "NOP [Don't abort queued commands] [OBS-ACS-2]";
329 return "NOP [Reserved subcommand] [OBS-ACS-2]";
331 case 0x92: /* DOWNLOAD MICROCODE */
334 return "DOWNLOAD MICROCODE [Temporary] [OBS-8]";
336 return "DOWNLOAD MICROCODE [Save with offsets]"; // ATA-8
338 return "DOWNLOAD MICROCODE [Save]";
340 return "DOWNLOAD MICROCODE [Save for future use]"; // ACS-3
342 return "DOWNLOAD MICROCODE [Activate]"; // ACS-3
344 return "DOWNLOAD MICROCODE [Reserved subcommand]";
346 case 0xB0: /* SMART */
349 return "SMART READ DATA";
351 return "SMART READ ATTRIBUTE THRESHOLDS [OBS-4]";
353 return "SMART ENABLE/DISABLE ATTRIBUTE AUTOSAVE";
355 return "SMART SAVE ATTRIBUTE VALUES [OBS-6]";
357 return "SMART EXECUTE OFF-LINE IMMEDIATE";
359 return "SMART READ LOG";
361 return "SMART WRITE LOG";
363 return "SMART WRITE ATTRIBUTE THRESHOLDS [NS, OBS-4]";
365 return "SMART ENABLE OPERATIONS";
367 return "SMART DISABLE OPERATIONS";
369 return "SMART RETURN STATUS";
371 return "SMART EN/DISABLE AUTO OFFLINE [NS (SFF-8035i)]";
374 return "SMART [Vendor specific subcommand]";
376 return "SMART [Reserved subcommand]";
378 case 0xB1: /* DEVICE CONFIGURATION */
381 return "DEVICE CONFIGURATION RESTORE [OBS-ACS-3]";
383 return "DEVICE CONFIGURATION FREEZE LOCK [OBS-ACS-3]";
385 return "DEVICE CONFIGURATION IDENTIFY [OBS-ACS-3]";
387 return "DEVICE CONFIGURATION SET [OBS-ACS-3]";
389 return "DEVICE CONFIGURATION [Reserved subcommand] [OBS-ACS-3]";
391 case 0xEF: /* SET FEATURES */
394 return "SET FEATURES [Enable 8-bit PIO] [OBS-3]"; // Now CFA
396 return "SET FEATURES [Enable write cache]";
398 return "SET FEATURES [Set transfer mode]";
400 return "SET FEATURES [Enable auto DR] [OBS-4]";
402 return "SET FEATURES [Enable APM]";
404 return "SET FEATURES [Enable Pwr-Up In Standby]";
406 return "SET FEATURES [Set device spin-up]";
408 return "SET FEATURES [Reserved (address offset)] [OPS-ACS-3]";
410 return "SET FEATURES [Enable CFA power mode 1]";
412 return "SET FEATURES [Enable SATA feature]"; // ACS-3
414 return "SET FEATURES [Set Time-ltd R/W WCT]";
416 return "SET FEATURES [Set Time-ltd R/W EH]";
418 return "SET FEATURES [Disable Media Status Notf] [OBS-8]";
420 return "SET FEATURES [Disable retry] [OBS-4]";
422 return "SET FEATURES [Enable Free-fall Control]"; // ATA-8
424 return "SET FEATURES [Enable AAM] [OBS-ACS-2]";
426 return "SET FEATURES [Set Max Host I/F S Times]";
428 return "SET FEATURES [Length of VS data] [OBS-4]";
430 return "SET FEATURES [Ext. Power Conditions]"; // ACS-2
432 return "SET FEATURES [Set cache segs] [OBS-4]";
434 return "SET FEATURES [Disable read look-ahead]";
436 return "SET FEATURES [Enable release interrupt] [OBS-ACS-2]";
438 return "SET FEATURES [Enable SERVICE interrupt] [OBS-ACS-2]";
440 return "SET FEATURES [Disable revert defaults]";
442 return "SET FEATURES [LPS Error Reporting Control]"; // ACS-2
444 return "SET FEATURES [Disable ECC] [OBS-4]";
446 return "SET FEATURES [Disable 8-bit PIO] [OBS-3]"; // Now CFA
448 return "SET FEATURES [Disable write cache]";
450 return "SET FEATURES [Disable auto DR] [OBS-4]";
452 return "SET FEATURES [Disable APM]";
454 return "SET FEATURES [Disable Pwr-Up In Standby]";
456 return "SET FEATURES [Disable ECC] [OBS-4]";
458 return "SET FEATURES [Reserved (address offset)]";
460 return "SET FEATURES [Disable CFA power mode 1]";
462 return "SET FEATURES [Disable SATA feature]"; // ACS-3
464 return "SET FEATURES [Enable Media Status Notf] [OBS-8]";
466 return "SET FEATURES [Enable retries] [OBS-4]";
468 return "SET FEATURES [Set max avg curr] [OBS-4]";
470 return "SET FEATURES [Enable read look-ahead]";
472 return "SET FEATURES [Set max prefetch] [OBS-4]";
474 return "SET FEATURES [4 bytes VS data] [OBS-4]";
476 return "SET FEATURES [Disable Free-fall Control]"; // ATA-8
478 return "SET FEATURES [Disable AAM] [OBS-ACS-2]";
480 return "SET FEATURES [Sense Data Reporting]"; // ACS-2
482 return "SET FEATURES [Enable revert to defaults]";
484 return "SET FEATURES [Disable release interrupt] [OBS-ACS-2]";
486 return "SET FEATURES [Disable SERVICE interrupt] [OBS-ACS-2]";
488 return "SET FEATURES [Vendor specific] [OBS-7]";
491 return "SET FEATURES [Reserved for CFA]";
493 return "SET FEATURES [Reserved subcommand]";
495 case 0xF9: /* SET MAX */
498 return "SET MAX ADDRESS [OBS-6]";
500 return "SET MAX SET PASSWORD [OBS-ACS-3]";
502 return "SET MAX LOCK [OBS-ACS-3]";
504 return "SET MAX UNLOCK [OBS-ACS-3]";
506 return "SET MAX FREEZE LOCK [OBS-ACS-3]";
508 return "SET MAX [Reserved subcommand] [OBS-ACS-3]";
511 return command_table
[c_code
];