]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/Atapi.h
MdePkg: add missing #defines for decoding PCIe 2.1 extended capability structures
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Atapi.h
index 4c4588042a1fafe1d7a75ce36869fd8718357ed8..28c810814e9875b40d4bdd3755416c6825cd1689 100644 (file)
@@ -2,7 +2,7 @@
   This file contains just some basic definitions that are needed by drivers\r
   that dealing with ATA/ATAPI interface.\r
 \r
-Copyright (c) 2007 - 2010, Intel Corporation.  All rights reserved<BR>\r
+Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials are licensed and made available under \r
 the terms and conditions of the BSD License that accompanies this distribution.  \r
 The full text of the license may be found at\r
@@ -102,7 +102,7 @@ typedef struct {
   UINT16  obsolete_51_52[2];           \r
   UINT16  field_validity;     \r
   UINT16  obsolete_54_58[5];     \r
-  UINT16  multi_sector_setting;     \r
+  UINT16  multi_sector_setting;\r
   UINT16  user_addressable_sectors_lo; \r
   UINT16  user_addressable_sectors_hi; \r
   UINT16  obsolete_62;     \r
@@ -112,9 +112,14 @@ typedef struct {
   UINT16  rec_multi_word_dma_cycle_time; \r
   UINT16  min_pio_cycle_time_without_flow_control; \r
   UINT16  min_pio_cycle_time_with_flow_control; \r
-  UINT16  reserved_69_74[6]; \r
+  UINT16  additional_supported;                    ///< word 69\r
+  UINT16  reserved_70;\r
+  UINT16  reserved_71_74[4];                       ///< Reserved for IDENTIFY PACKET DEVICE cmd.\r
   UINT16  queue_depth;     \r
-  UINT16  reserved_76_79[4];                       ///< Reserved for Serial ATA.\r
+  UINT16  serial_ata_capabilities;\r
+  UINT16  reserved_77;                             ///< Reserved for Serial ATA\r
+  UINT16  serial_ata_features_supported;\r
+  UINT16  serial_ata_features_enabled;\r
   UINT16  major_version_no; \r
   UINT16  minor_version_no; \r
   UINT16  command_set_supported_82;                ///< word 82\r
@@ -129,14 +134,14 @@ typedef struct {
   UINT16  advanced_power_management_level;\r
   UINT16  master_password_identifier;\r
   UINT16  hardware_configuration_test_result;\r
-  UINT16  acoustic_management_value;\r
+  UINT16  obsolete_94;\r
   UINT16  stream_minimum_request_size;\r
   UINT16  streaming_transfer_time_for_dma;\r
   UINT16  streaming_access_latency_for_dma_and_pio;\r
   UINT16  streaming_performance_granularity[2];    ///< word 98~99\r
   UINT16  maximum_lba_for_48bit_addressing[4];     ///< word 100~103\r
   UINT16  streaming_transfer_time_for_pio;\r
-  UINT16  reserved_105;\r
+  UINT16  max_no_of_512byte_blocks_per_data_set_cmd;\r
   UINT16  phy_logic_sector_support;                ///< word 106\r
   UINT16  interseek_delay_for_iso7779;\r
   UINT16  world_wide_name[4];                      ///< word 108~111\r
@@ -151,7 +156,11 @@ typedef struct {
   UINT16  security_status;                         ///< word 128\r
   UINT16  vendor_specific_129_159[31]; \r
   UINT16  cfa_power_mode;                          ///< word 160\r
-  UINT16  reserved_for_compactflash_161_175[15];\r
+  UINT16  reserved_for_compactflash_161_167[7];\r
+  UINT16  device_nominal_form_factor;\r
+  UINT16  is_data_set_cmd_supported;\r
+  CHAR8   additional_product_identifier[8];\r
+  UINT16  reserved_174_175[2];\r
   CHAR8   media_serial_number[60];                 ///< word 176~205\r
   UINT16  sct_command_transport;                   ///< word 206\r
   UINT16  reserved_207_208[2];\r
@@ -161,14 +170,15 @@ typedef struct {
   UINT16  nv_cache_capabilities;\r
   UINT16  nv_cache_size_in_logical_block_lsw;      ///< word 215\r
   UINT16  nv_cache_size_in_logical_block_msw;      ///< word 216\r
-  UINT16  nv_cache_read_speed;\r
-  UINT16  nv_cache_write_speed;\r
+  UINT16  nominal_media_rotation_rate;\r
+  UINT16  reserved_218;\r
   UINT16  nv_cache_options;                        ///< word 219\r
   UINT16  write_read_verify_mode;                  ///< word 220\r
   UINT16  reserved_221;\r
   UINT16  transport_major_revision_number;\r
   UINT16  transport_minor_revision_number;\r
-  UINT16  reserved_224_233[10];\r
+  UINT16  reserved_224_229[6];\r
+  UINT64  extended_no_of_addressable_sectors;\r
   UINT16  min_number_per_download_microcode_mode3; ///< word 234\r
   UINT16  max_number_per_download_microcode_mode3; ///< word 235\r
   UINT16  reserved_236_254[19];\r
@@ -206,8 +216,11 @@ typedef struct {
   UINT16  reserved_69_70[2];\r
   UINT16  obsolete_71_72[2];\r
   UINT16  reserved_73_74[2];\r
-  UINT16  queue_depth;\r
-  UINT16  reserved_76_79[4];\r
+  UINT16  obsolete_75;\r
+  UINT16  serial_ata_capabilities;\r
+  UINT16  reserved_77;                             ///< Reserved for Serial ATA\r
+  UINT16  serial_ata_features_supported;\r
+  UINT16  serial_ata_features_enabled;\r
   UINT16  major_version_no;                        ///< word 80\r
   UINT16  minor_version_no;                        ///< word 81\r
   UINT16  cmd_set_support_82;\r
@@ -219,21 +232,26 @@ typedef struct {
   UINT16  ultra_dma_select;\r
   UINT16  time_required_for_sec_erase;             ///< word 89\r
   UINT16  time_required_for_enhanced_sec_erase;    ///< word 90\r
-  UINT16  reserved_91;\r
+  UINT16  advanced_power_management_level;\r
   UINT16  master_pwd_revison_code;\r
   UINT16  hardware_reset_result;                   ///< word 93\r
-  UINT16  current_auto_acoustic_mgmt_value;\r
+  UINT16  obsolete_94;\r
   UINT16  reserved_95_107[13];\r
   UINT16  world_wide_name[4];                      ///< word 108~111\r
   UINT16  reserved_for_128bit_wwn_112_115[4];\r
-  UINT16  reserved_116_124[9];\r
+  UINT16  reserved_116_118[3];  \r
+  UINT16  command_and_feature_sets_supported;      ///< word 119\r
+  UINT16  command_and_feature_sets_supported_enabled;\r
+  UINT16  reserved_121_124[4];\r
   UINT16  atapi_byte_count_0_behavior;             ///< word 125\r
-  UINT16  obsolete_126;\r
-  UINT16  removable_media_status_notification_support;\r
+  UINT16  obsolete_126_127[2];\r
   UINT16  security_status;\r
-  UINT16  reserved_129_160[32];\r
-  UINT16  cfa_reserved_161_175[15];\r
-  UINT16  reserved_176_254[79];\r
+  UINT16  reserved_129_159[31];\r
+  UINT16  cfa_reserved_160_175[16];\r
+  UINT16  reserved_176_221[46];\r
+  UINT16  transport_major_version;\r
+  UINT16  transport_minor_version;\r
+  UINT16  reserved_224_254[31];\r
   UINT16  integrity_word;\r
 } ATAPI_IDENTIFY_DATA;\r
 \r
@@ -472,6 +490,18 @@ typedef union {
 #define ATA_CMD_READ_CAPACITY               0x25   ///< defined in ATAPI Removable Rewritable Media Devcies\r
 #define ATA_CMD_READ_10                     0x28   ///< defined in ATAPI Removable Rewritable Media Devcies\r
 #define ATA_CMD_WRITE_10                    0x2A   ///< defined in ATAPI Removable Rewritable Media Devcies\r
+#define ATA_CMD_READ_12                     0xA8   ///< defined in ATAPI Removable Rewritable Media Devcies\r
+#define ATA_CMD_WRITE_12                    0xAA   ///< defined in ATAPI Removable Rewritable Media Devcies\r
+#define ATA_CMD_START_STOP_UNIT             0x1B   ///< defined in ATAPI Removable Rewritable Media Devcies\r
+///\r
+/// Start/Stop and Eject Operations\r
+///\r
+///@{\r
+#define   ATA_CMD_SUBOP_STOP_DISC           0x00   ///< Stop the Disc\r
+#define   ATA_CMD_SUBOP_START_DISC          0x01   ///< Start the Disc and acquire the format type\r
+#define   ATA_CMD_SUBOP_EJECT_DISC          0x02   ///< Eject the Disc if possible\r
+#define   ATA_CMD_SUBOP_CLOSE_TRAY          0x03   ///< Load the Disc (Close Tray)\r
+///@}\r
 \r
 //\r
 // ATA Commands Code\r