]>
git.proxmox.com Git - mirror_smartmontools-debian.git/blob - atacmdnames.cpp
ecd483bbef39bf7c2e7a657ff1d01d31bce56802
4 * This module is based on the T13/1532D Volume 1 Revision 3 (ATA/ATAPI-7)
5 * specification, which is available from http://www.t13.org/#FTP_site
7 * Home page of code is: http://smartmontools.sourceforge.net
8 * Address of support mailing list: smartmontools-support@lists.sourceforge.net
10 * Copyright (C) 2003-8 Philip Williams
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2, or (at your option)
17 * You should have received a copy of the GNU General Public License
18 * (for example COPYING); if not, write to the Free
19 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #include "atacmdnames.h"
27 #define COMMAND_TABLE_SIZE 256
29 const char *atacmdnames_c_cvsid
="$Id: atacmdnames.cpp,v 1.17 2008/03/29 23:41:28 shattered Exp $" ATACMDNAMES_H_CVSID
;
31 const char cmd_reserved
[] = "[RESERVED]";
32 const char cmd_vendor_specific
[] = "[VENDOR SPECIFIC]";
33 const char cmd_reserved_sa
[] = "[RESERVED FOR SERIAL ATA]";
34 const char cmd_reserved_cf
[] = "[RESERVED FOR COMPACTFLASH ASSOCIATION]";
35 const char cmd_reserved_mcpt
[] = "[RESERVED FOR MEDIA CARD PASS THROUGH]";
36 const char cmd_recalibrate_ret4
[]= "RECALIBRATE [RET-4]";
37 const char cmd_seek_ret4
[] = "SEEK [RET-4]";
39 const char *command_table
[COMMAND_TABLE_SIZE
] = {
40 /*-------------------------------------------------- 00h-0Fh -----*/
44 "CFA REQUEST EXTENDED ERROR CODE",
57 /*-------------------------------------------------- 10h-1Fh -----*/
58 "RECALIBRATE [OBS-4]",
74 /*-------------------------------------------------- 20h-2Fh -----*/
76 "READ SECTOR(S) [OBS-5]",
77 "READ LONG (w/ retry) [OBS-4]",
78 "READ LONG (w/o retry) [OBS-4]",
81 "READ DMA QUEUED EXT",
82 "READ NATIVE MAX ADDRESS EXT",
91 /*-------------------------------------------------- 30h-3Fh -----*/
93 "WRITE SECTOR(S) [OBS-5]",
94 "WRITE LONG(w/ retry) [OBS-4]",
95 "WRITE LONG(w/o retry) [OBS-4]",
96 "WRITE SECTORS(S) EXT",
98 "WRITE DMA QUEUED EXT",
99 "SET MAX ADDRESS EXT",
100 "CFA WRITE SECTORS WITHOUT ERASE",
101 "WRITE MULTIPLE EXT",
104 "WRITE VERIFY [OBS-4]",
106 "WRITE DMA QUEUED FUA EXT",
108 /*-------------------------------------------------- 40h-4Fh -----*/
109 "READ VERIFY SECTOR(S)",
110 "READ VERIFY SECTOR(S) [OBS-5]",
111 "READ VERIFY SECTOR(S) EXT",
125 /*-------------------------------------------------- 50h-5Fh -----*/
126 "FORMAT TRACK [OBS-4]",
142 /*-------------------------------------------------- 60h-6Fh -----*/
144 "WRITE FPDMA QUEUED",
159 /*-------------------------------------------------- 70h-7Fh -----*/
176 /*-------------------------------------------------- 80h-8Fh -----*/
184 "CFA TRANSLATE SECTOR [VS IF NO CFA]",
193 /*-------------------------------------------------- 90h-9Fh -----*/
194 "EXECUTE DEVICE DIAGNOSTIC",
195 "INITIALIZE DEVICE PARAMETERS [OBS-6]",
196 "DOWNLOAD MICROCODE",
198 "STANDBY IMMEDIATE [RET-4]",
199 "IDLE IMMEDIATE [RET-4]",
202 "CHECK POWER MODE [RET-4]",
210 /*-------------------------------------------------- A0h-AFh -----*/
212 "IDENTIFY PACKET DEVICE",
227 /*-------------------------------------------------- B0h-BFh -----*/
229 "DEVICE CONFIGURATION",
244 /*-------------------------------------------------- C0h-CFh -----*/
245 "CFA ERASE SECTORS [VS IF NO CFA]",
258 "CFA WRITE MULTIPLE WITHOUT ERASE",
259 "WRITE MULTIPLE FUA EXT",
261 /*-------------------------------------------------- D0h-DFh -----*/
263 "CHECK MEDIA CARD TYPE",
273 "ACKNOWLEDGE MEDIA CHANGE [RET-4]",
274 "BOOT POST-BOOT [RET-4]",
275 "BOOT PRE-BOOT [RET-4]",
278 /*-------------------------------------------------- E0h-EFh -----*/
288 "WRITE SAME [RET-4]", /* Warning! This command is retired but the value of
289 f_reg is used in look_up_ata_command(). If this
290 command code is reclaimed in a future standard then
291 be sure to update look_up_ata_command(). */
296 "IDENTIFY DEVICE DMA [OBS-4]",
298 /*-------------------------------------------------- F0h-FFh -----*/
300 "SECURITY SET PASSWORD",
302 "SECURITY ERASE PREPARE",
303 "SECURITY ERASE UNIT",
304 "SECURITY FREEZE LOCK",
305 "SECURITY DISABLE PASSWORD",
307 "READ NATIVE MAX ADDRESS",
317 /* Returns the name of the command (and possibly sub-command) with the given
318 command code and feature register values. For most command codes this
319 simply returns the corresponding entry in the command_table array, but for
320 others the value of the feature register specifies a subcommand or
321 distinguishes commands. */
322 const char *look_up_ata_command(unsigned char c_code
, unsigned char f_reg
) {
324 // check that command table not messed up. The compiler will issue
325 // warnings if there are too many array elements, but won't issue
326 // warnings if there are not enough of them.
327 if (sizeof(command_table
) != sizeof(char *)*COMMAND_TABLE_SIZE
){
329 "Problem in atacmdnames.c. Command Table command_table[] does\n"
330 "not have %d entries! It has %d entries. Please fix it.\n",
331 COMMAND_TABLE_SIZE
, (int)(sizeof(command_table
)/sizeof(char *)));
339 return "NOP [Abort queued commands]";
341 return "NOP [Don't abort queued commands]";
343 return "NOP [Reserved subcommand]";
345 case 0x92: /* DOWNLOAD MICROCODE */
348 return "DOWNLOAD MICROCODE [Temporary]";
350 return "DOWNLOAD MICROCODE [Save]";
352 return "DOWNLOAD MICROCODE [Reserved subcommand]";
354 case 0xB0: /* SMART */
357 return "SMART READ DATA";
359 return "SMART READ ATTRIBUTE THRESHOLDS [OBS-4]";
361 return "SMART ENABLE/DISABLE ATTRIBUTE AUTOSAVE";
363 return "SMART SAVE ATTRIBUTE VALUES [OBS-6]";
365 return "SMART EXECUTE OFF-LINE IMMEDIATE";
367 return "SMART READ LOG";
369 return "SMART WRITE LOG";
371 return "SMART WRITE ATTRIBUTE THRESHOLDS [NS, OBS-4]";
373 return "SMART ENABLE OPERATIONS";
375 return "SMART DISABLE OPERATIONS";
377 return "SMART RETURN STATUS";
379 return "SMART EN/DISABLE AUTO OFFLINE [NS (SFF-8035i)]";
382 return "[Vendor specific SMART command]";
384 return "[Reserved SMART command]";
386 case 0xB1: /* DEVICE CONFIGURATION */
389 return "DEVICE CONFIGURATION RESTORE";
391 return "DEVICE CONFIGURATION FREEZE LOCK";
393 return "DEVICE CONFIGURATION IDENTIFY";
395 return "DEVICE CONFIGURATION SET";
397 return "DEVICE CONFIGURATION [Reserved command]";
399 case 0xE9: /* WRITE SAME */
402 return "WRITE SAME [Start specified] [RET-4]";
404 return "WRITE SAME [Start unspecified] [RET-4]";
406 return "WRITE SAME [Invalid subcommand] [RET-4]";
408 case 0xEF: /* SET FEATURES */
411 return "SET FEATURES [Enable 8-bit PIO]";
413 return "SET FEATURES [Enable write cache]";
415 return "SET FEATURES [Set transfer mode]";
417 return "SET FEATURES [Enable auto DR] [OBS-4]";
419 return "SET FEATURES [Enable APM]";
421 return "SET FEATURES [Enable Pwr-Up In Standby]";
423 return "SET FEATURES [Set device spin-up]";
425 return "SET FEATURES [Reserved (address offset)]";
427 return "SET FEATURES [Enable CFA power mode 1]";
429 return "SET FEATURES [Reserved for Serial ATA]";
431 return "SET FEATURES [Set Time-ltd R/W WCT]";
433 return "SET FEATURES [Set Time-ltd R/W EH]";
435 return "SET FEATURES [Disable Media Status Notf]";
437 return "SET FEATURES [Disable retry] [OBS-4]";
439 return "SET FEATURES [Enable AAM]";
441 return "SET FEATURES [Set Max Host I/F S Times]";
443 return "SET FEATURES [Length of VS data] [OBS-4]";
445 return "SET FEATURES [Set cache segs] [OBS-4]";
447 return "SET FEATURES [Disable read look-ahead]";
449 return "SET FEATURES [Enable release interrupt]";
451 return "SET FEATURES [Enable SERVICE interrupt]";
453 return "SET FEATURES [Disable revert defaults]";
455 return "SET FEATURES [Disable ECC] [OBS-4]";
457 return "SET FEATURES [Disable 8-bit PIO]";
459 return "SET FEATURES [Disable write cache]";
461 return "SET FEATURES [Disable auto DR] [OBS-4]";
463 return "SET FEATURES [Disable APM]";
465 return "SET FEATURES [Disable Pwr-Up In Standby]";
467 return "SET FEATURES [Disable ECC] [OBS-4]";
469 return "SET FEATURES [Reserved (address offset)]";
471 return "SET FEATURES [Disable CFA power mode 1]";
473 return "SET FEATURES [Reserved for Serial ATA]";
475 return "SET FEATURES [Enable Media Status Notf]";
477 return "SET FEATURES [Enable retries] [OBS-4]";
479 return "SET FEATURES [Set max avg curr] [OBS-4]";
481 return "SET FEATURES [Enable read look-ahead]";
483 return "SET FEATURES [Set max prefetch] [OBS-4]";
485 return "SET FEATURES [4 bytes VS data] [OBS-4]";
487 return "SET FEATURES [Disable AAM]";
489 return "SET FEATURES [Enable revert to defaults]";
491 return "SET FEATURES [Disable release interrupt]";
493 return "SET FEATURES [Disable SERVICE interrupt]";
495 return "SET FEATURES [Obsolete subcommand]";
498 return "SET FEATURES [Reserved for CFA]";
500 return "SET FEATURES [Reserved subcommand]";
502 case 0xF9: /* SET MAX */
505 return "SET MAX ADDRESS [OBS-6]";
507 return "SET MAX SET PASSWORD";
509 return "SET MAX LOCK";
511 return "SET MAX UNLOCK";
513 return "SET MAX FREEZE LOCK";
515 return "[Reserved SET MAX command]";
518 return command_table
[c_code
];