]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update IndustryStandard according to code review comments.
authorxli24 <xli24@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 20 Oct 2008 15:16:32 +0000 (15:16 +0000)
committerxli24 <xli24@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 20 Oct 2008 15:16:32 +0000 (15:16 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6155 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Include/IndustryStandard/Sal.h
MdePkg/Include/IndustryStandard/Scsi.h
MdePkg/Include/IndustryStandard/SdramSpd.h
MdePkg/Include/IndustryStandard/SerialPortConsoleRedirectionTable.h
MdePkg/Include/IndustryStandard/SmBios.h
MdePkg/Include/IndustryStandard/SmBus.h
MdePkg/Include/IndustryStandard/Tpm12.h
MdePkg/Include/IndustryStandard/Usb.h
MdePkg/Include/IndustryStandard/WatchdogActionTable.h
MdePkg/Include/IndustryStandard/WatchdogResourceTable.h

index 77518321ad30d40f5dfcc61bfa82ad991c23d9d2..18225ba7b83bad88d98b1c7f0b16adc6535576c4 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
-  Main SAL API's defined in SAL 3.0 specification. \r
+  Main SAL API's defined in Intel Itanium Processor Family System Abstraction\r
+  Layer Specification Revision 3.2 (December 2003)\r
 \r
-  Copyright (c) 2006, Intel Corporation                                                         \r
+  Copyright (c) 2006 - 2008, Intel Corporation                                                         \r
   All rights reserved. This program and the accompanying materials                          \r
   are licensed and made available under the terms and conditions of the BSD License         \r
   which accompanies this distribution.  The full text of the license may be found at        \r
 #define __SAL_API_H__\r
 \r
 ///\r
-/// FIT Types \r
-/// Table 2-2 of Intel Itanium Processor Family System Abstraction Layer Specification December 2003\r
+/// SAL return status type \r
 ///\r
-#define EFI_SAL_FIT_FIT_HEADER_TYPE 0x00\r
-#define EFI_SAL_FIT_PAL_B_TYPE      0x01\r
+typedef UINTN EFI_SAL_STATUS;\r
 \r
 ///\r
-/// type from 0x02 to 0x0E is reserved.\r
+/// Call completed without error. \r
 ///\r
-#define EFI_SAL_FIT_PAL_A_TYPE  0x0F\r
-\r
+#define EFI_SAL_SUCCESS               ((EFI_SAL_STATUS) 0)\r
 ///\r
-/// OEM-defined type range is from 0x10 to 0x7E. Here we defined the PEI_CORE type as 0x10\r
+/// Call completed without error but some information was lost due to overflow. \r
 ///\r
-#define EFI_SAL_FIT_PEI_CORE_TYPE 0x10\r
-#define EFI_SAL_FIT_UNUSED_TYPE   0x7F\r
-\r
+#define EFI_SAL_OVERFLOW              ((EFI_SAL_STATUS) 1)\r
 ///\r
-/// EFI_SAL_STATUS \r
+/// Call completed without error; effect a warm boot of the system to complete the update.\r
+///\r
+#define EFI_SAL_WARM_BOOT_NEEDED      ((EFI_SAL_STATUS) 2)\r
+///\r
+/// More information is available for retrieval. \r
 ///\r
-typedef UINTN EFI_SAL_STATUS;\r
-\r
-#define EFI_SAL_SUCCESS               ((EFI_SAL_STATUS) 0)\r
 #define EFI_SAL_MORE_RECORDS          ((EFI_SAL_STATUS) 3)\r
+///\r
+/// Not implemented.\r
+///\r
 #define EFI_SAL_NOT_IMPLEMENTED       ((EFI_SAL_STATUS) - 1)\r
+///\r
+/// Invalid Argument.\r
+///\r
 #define EFI_SAL_INVALID_ARGUMENT      ((EFI_SAL_STATUS) - 2)\r
+///\r
+/// Call completed without error. \r
+///\r
 #define EFI_SAL_ERROR                 ((EFI_SAL_STATUS) - 3)\r
+///\r
+/// Virtual address not registered. \r
+///\r
 #define EFI_SAL_VIRTUAL_ADDRESS_ERROR ((EFI_SAL_STATUS) - 4)\r
+///\r
+/// No information available. \r
+///\r
 #define EFI_SAL_NO_INFORMATION        ((EFI_SAL_STATUS) - 5)\r
+///\r
+/// Scratch buffer required.\r
+///\r
 #define EFI_SAL_NOT_ENOUGH_SCRATCH    ((EFI_SAL_STATUS) - 9)\r
 \r
-//\r
-//  Return values from SAL\r
-//\r
+///\r
+/// Return registers from SAL\r
+///\r
 typedef struct {\r
-  EFI_SAL_STATUS  Status; // register r8\r
+  ///\r
+  /// SAL return status value in r8\r
+  ///\r
+  EFI_SAL_STATUS  Status;\r
+  ///\r
+  /// SAL returned value in r9\r
+  ///\r
   UINTN           r9;\r
+  ///\r
+  /// SAL returned value in r10\r
+  ///\r
   UINTN           r10;\r
+  ///\r
+  /// SAL returned value in r11\r
+  ///\r
   UINTN           r11;\r
 } SAL_RETURN_REGS;\r
 \r
-///\r
-///  Delivery Mode of IPF CPU.\r
-///\r
-typedef enum {\r
-  EFI_DELIVERY_MODE_INT,\r
-  EFI_DELIVERY_MODE_MPreserved1,\r
-  EFI_DELIVERY_MODE_PMI,\r
-  EFI_DELIVERY_MODE_MPreserved2,\r
-  EFI_DELIVERY_MODE_NMI,\r
-  EFI_DELIVERY_MODE_INIT,\r
-  EFI_DELIVERY_MODE_MPreserved3,\r
-  EFI_DELIVERY_MODE_ExtINT\r
-} EFI_DELIVERY_MODE;\r
-\r
-typedef SAL_RETURN_REGS (EFIAPI *SAL_PROC)\r
-  (\r
-    IN UINT64 FunctionId,\r
-    IN UINT64 Arg2,\r
-    IN UINT64 Arg3,\r
-    IN UINT64 Arg4,\r
-    IN UINT64 Arg5,\r
-    IN UINT64 Arg6,\r
-    IN UINT64 Arg7,\r
-    IN UINT64 Arg8\r
+/**\r
+  Prototype of SAL procedures.\r
+\r
+  @param  Arg0               Functional identifier.\r
+                             The upper 32 bits are ignored and only the lower 32 bits\r
+                             are used. The following functional identifiers are defined:\r
+                             0x01XXXXXX \96 Architected SAL functional group.\r
+                             0x02XXXXXX to 0x03XXXXXX \96 OEM SAL functional group. Each OEM is\r
+                             allowed to use the entire range in the 0x02XXXXXX to 0x03XXXXXX range.\r
+                             0x04XXXXXX to 0xFFFFFFFF \96 Reserved.\r
+  @param  Arg1               The first parameter of the architected/OEM specific SAL functions.\r
+  @param  Arg2               The second parameter of the architected/OEM specific SAL functions.\r
+  @param  Arg3               The third parameter passed to the ESAL function based\r
+  @param  Arg4               The fourth parameter passed to the ESAL function based\r
+  @param  Arg5               The fifth parameter passed to the ESAL function based\r
+  @param  Arg6               The sixth parameter passed to the ESAL function\r
+  @param  Arg7               The seventh parameter passed to the ESAL function based\r
+\r
+  @return r8                 Return status: positive number indicates successful,\r
+                             negative number indicates failure.\r
+          r9                 Other return parameter in r9.\r
+          r10                Other return parameter in r10.\r
+          r11                Other return parameter in r11.\r
+\r
+**/\r
+typedef\r
+SAL_RETURN_REGS\r
+(EFIAPI *SAL_PROC) (\r
+  IN UINT64 FunctionId,\r
+  IN UINT64 Arg2,\r
+  IN UINT64 Arg3,\r
+  IN UINT64 Arg4,\r
+  IN UINT64 Arg5,\r
+  IN UINT64 Arg6,\r
+  IN UINT64 Arg7,\r
+  IN UINT64 Arg8\r
   );\r
 \r
 //\r
 // SAL Procedure FunctionId definition\r
 //\r
+\r
+///\r
+/// Register software code locations with SAL.\r
+///\r
 #define EFI_SAL_SET_VECTORS             0x01000000\r
+///\r
+/// Return Machine State information obtained by SAL.\r
+///\r
 #define EFI_SAL_GET_STATE_INFO          0x01000001\r
+///\r
+/// Obtain size of Machine State information.\r
+///\r
 #define EFI_SAL_GET_STATE_INFO_SIZE     0x01000002\r
+///\r
+/// Clear Machine State information.\r
+///\r
 #define EFI_SAL_CLEAR_STATE_INFO        0x01000003\r
+///\r
+/// Cause the processor to go into a spin loop within SAL.\r
+///\r
 #define EFI_SAL_MC_RENDEZ               0x01000004\r
+///\r
+/// Register the machine check interface layer with SAL.\r
+///\r
 #define EFI_SAL_MC_SET_PARAMS           0x01000005\r
+///\r
+/// Register the physical addresses of locations needed by SAL.\r
+///\r
 #define EFI_SAL_REGISTER_PHYSICAL_ADDR  0x01000006\r
+///\r
+/// Flush the instruction or data caches.\r
+///\r
 #define EFI_SAL_CACHE_FLUSH             0x01000008\r
+///\r
+/// Initialize the instruction and data caches.\r
+///\r
 #define EFI_SAL_CACHE_INIT              0x01000009\r
+///\r
+/// Read from the PCI configuration space.\r
+///\r
 #define EFI_SAL_PCI_CONFIG_READ         0x01000010\r
+///\r
+/// Write to the PCI configuration space.\r
+///\r
 #define EFI_SAL_PCI_CONFIG_WRITE        0x01000011\r
+///\r
+/// Return the base frequency of the platform.\r
+///\r
 #define EFI_SAL_FREQ_BASE               0x01000012\r
+///\r
+/// Returns information on the physical processor mapping within the platform.\r
+///\r
 #define EFI_SAL_PHYSICAL_ID_INFO        0x01000013\r
+///\r
+/// Update the contents of firmware blocks.\r
+///\r
 #define EFI_SAL_UPDATE_PAL              0x01000020\r
 \r
 #define EFI_SAL_FUNCTION_ID_MASK        0x0000ffff\r
@@ -109,12 +191,18 @@ typedef SAL_RETURN_REGS (EFIAPI *SAL_PROC)
 // Not much point in using typedefs or enums because all params\r
 // are UINT64 and the entry point is common\r
 //\r
-// EFI_SAL_SET_VECTORS\r
+\r
+//\r
+// Parameter of EFI_SAL_SET_VECTORS\r
+//\r
+// Vector type\r
 //\r
 #define EFI_SAL_SET_MCA_VECTOR          0x0\r
 #define EFI_SAL_SET_INIT_VECTOR         0x1\r
 #define EFI_SAL_SET_BOOT_RENDEZ_VECTOR  0x2\r
-\r
+///\r
+/// Format of length_cs_n argument.\r
+///\r
 typedef struct {\r
   UINT64  Length : 32;\r
   UINT64  ChecksumValid : 1;\r
@@ -124,8 +212,9 @@ typedef struct {
 } SAL_SET_VECTORS_CS_N;\r
 \r
 //\r
-// EFI_SAL_GET_STATE_INFO, EFI_SAL_GET_STATE_INFO_SIZE,\r
-// EFI_SAL_CLEAR_STATE_INFO\r
+// Parameter of EFI_SAL_GET_STATE_INFO, EFI_SAL_GET_STATE_INFO_SIZE, and EFI_SAL_CLEAR_STATE_INFO\r
+// \r
+// Type of information\r
 //\r
 #define EFI_SAL_MCA_STATE_INFO  0x0\r
 #define EFI_SAL_INIT_STATE_INFO 0x1\r
@@ -133,22 +222,31 @@ typedef struct {
 #define EFI_SAL_CP_STATE_INFO   0x3\r
 \r
 //\r
-// EFI_SAL_MC_SET_PARAMS\r
+// Parameter of EFI_SAL_MC_SET_PARAMS\r
+//\r
+// Unsigned 64-bit integer value for the parameter type of the machine check interface\r
 //\r
 #define EFI_SAL_MC_SET_RENDEZ_PARAM 0x1\r
 #define EFI_SAL_MC_SET_WAKEUP_PARAM 0x2\r
 #define EFI_SAL_MC_SET_CPE_PARAM    0x3\r
-\r
+//\r
+// Unsigned 64-bit integer value indicating whether interrupt vector or\r
+// memory address is specified\r
+//\r
 #define EFI_SAL_MC_SET_INTR_PARAM   0x1\r
 #define EFI_SAL_MC_SET_MEM_PARAM    0x2\r
 \r
 //\r
-// EFI_SAL_REGISTER_PAL_PHYSICAL_ADDR\r
+// Parameter of EFI_SAL_REGISTER_PAL_PHYSICAL_ADDR\r
+//\r
+// The encoded value of the entity whose physical address is registered\r
 //\r
 #define EFI_SAL_REGISTER_PAL_ADDR 0x0\r
 \r
 //\r
-// EFI_SAL_CACHE_FLUSH\r
+// Parameter of EFI_SAL_CACHE_FLUSH\r
+//\r
+// Unsigned 64-bit integer denoting type of cache flush operation\r
 //\r
 #define EFI_SAL_FLUSH_I_CACHE       0x01\r
 #define EFI_SAL_FLUSH_D_CACHE       0x02\r
@@ -156,12 +254,21 @@ typedef struct {
 #define EFI_SAL_FLUSH_MAKE_COHERENT 0x04\r
 \r
 //\r
-// EFI_SAL_PCI_CONFIG_READ, EFI_SAL_PCI_CONFIG_WRITE\r
+// Parameter of EFI_SAL_PCI_CONFIG_READ and EFI_SAL_PCI_CONFIG_WRITE\r
+//\r
+// PCI config size\r
 //\r
 #define EFI_SAL_PCI_CONFIG_ONE_BYTE   0x1\r
 #define EFI_SAL_PCI_CONFIG_TWO_BYTES  0x2\r
 #define EFI_SAL_PCI_CONFIG_FOUR_BYTES 0x4\r
-\r
+//\r
+// The type of PCI configuration address\r
+//\r
+#define EFI_SAL_PCI_COMPATIBLE_ADDRESS         0x0\r
+#define EFI_SAL_PCI_EXTENDED_REGISTER_ADDRESS  0x1\r
+///\r
+/// Format of PCI Compatible Address\r
+///\r
 typedef struct {\r
   UINT64  Register : 8;\r
   UINT64  Function : 3;\r
@@ -170,16 +277,34 @@ typedef struct {
   UINT64  Segment : 8;\r
   UINT64  Reserved : 32;\r
 } SAL_PCI_ADDRESS;\r
+///\r
+/// Format of Extended Register Address\r
+///\r
+typedef struct {\r
+  UINT64  Register : 8;\r
+  UINT64  ExtendedRegister : 4;\r
+  UINT64  Function : 3;\r
+  UINT64  Device : 5;\r
+  UINT64  Bus : 8;\r
+  UINT64  Segment : 16;\r
+  UINT64  Reserved : 20;\r
+} SAL_PCI_EXTENDED_REGISTER_ADDRESS;\r
 \r
 //\r
-// EFI_SAL_FREQ_BASE\r
+// Parameter of EFI_SAL_FREQ_BASE\r
+//\r
+// Unsigned 64-bit integer specifying the type of clock source\r
 //\r
 #define EFI_SAL_CPU_INPUT_FREQ_BASE     0x0\r
 #define EFI_SAL_PLATFORM_IT_FREQ_BASE   0x1\r
 #define EFI_SAL_PLATFORM_RTC_FREQ_BASE  0x2\r
 \r
 //\r
-// EFI_SAL_UPDATE_PAL\r
+// Parameter and return value of EFI_SAL_UPDATE_PAL\r
+//\r
+// Return parameter provides additional information on the\r
+// failure when the status field contains a value of \963,\r
+// returned in r9.\r
 //\r
 #define EFI_SAL_UPDATE_BAD_PAL_VERSION  ((UINT64) -1)\r
 #define EFI_SAL_UPDATE_PAL_AUTH_FAIL    ((UINT64) -2)\r
@@ -189,7 +314,9 @@ typedef struct {
 #define EFI_SAL_UPDATE_PAL_ERASE_FAIL   ((UINT64) -11)\r
 #define EFI_SAL_UPDATE_PAL_READ_FAIL    ((UINT64) -12)\r
 #define EFI_SAL_UPDATE_PAL_CANT_FIT     ((UINT64) -13)\r
-\r
+///\r
+/// 64-byte header of update data block.\r
+///\r
 typedef struct {\r
   UINT32  Size;\r
   UINT32  MmddyyyyDate;\r
@@ -198,7 +325,12 @@ typedef struct {
   UINT8   Reserved[5];\r
   UINT64  FwVendorId;\r
 } SAL_UPDATE_PAL_DATA_BLOCK;\r
-\r
+///\r
+/// Data structure pointed by parameter param_buf.\r
+/// It is a 16-byte aligned data structure in memory with a length of 32 bytes\r
+/// that describes the new firmware. This information is organized in the form\r
+/// of a linked list with each element describing one firmware component.\r
+///\r
 typedef struct _SAL_UPDATE_PAL_INFO_BLOCK {\r
   struct _SAL_UPDATE_PAL_INFO_BLOCK *Next;\r
   struct SAL_UPDATE_PAL_DATA_BLOCK  *DataBlock;\r
@@ -206,27 +338,64 @@ typedef struct _SAL_UPDATE_PAL_INFO_BLOCK {
   UINT8                             Reserved[15];\r
 } SAL_UPDATE_PAL_INFO_BLOCK;\r
 \r
-//\r
-// SAL System Table Definitions\r
-//\r
+///\r
+/// SAL System Table Definitions\r
+///\r
 #pragma pack(1)\r
 typedef struct {\r
+  ///\r
+  /// The ASCII string representation of \93SST_\94, which confirms the presence of the table.\r
+  ///\r
   UINT32  Signature;\r
+  ///\r
+  /// The length of the entire table in bytes, starting from offset zero and including the\r
+  /// header and all entries indicated by the EntryCount field.\r
+  ///\r
   UINT32  Length;\r
+  ///\r
+  /// The revision number of the Itanium Processor Family System Abstraction Layer\r
+  /// Specification supported by the SAL implementation in binary coded decimal (BCD) format.\r
+  ///\r
   UINT16  SalRevision;\r
+  ///\r
+  /// The number of entries in the variable portion of the table.\r
+  ///\r
   UINT16  EntryCount;\r
+  ///\r
+  /// A modulo checksum of the entire table and the entries following this table.\r
+  ///\r
   UINT8   CheckSum;\r
+  ///\r
+  /// Unused, must be zero.\r
+  ///\r
   UINT8   Reserved[7];\r
+  ///\r
+  /// Version Number of the SAL_A firmware implementation in BCD format.\r
+  ///\r
   UINT16  SalAVersion;\r
+  ///\r
+  /// Version Number of the SAL_B firmware implementation in BCD format.\r
+  ///\r
   UINT16  SalBVersion;\r
+  ///\r
+  /// An ASCII identification string which uniquely identifies the manufacturer\r
+  /// of the system hardware.\r
+  ///\r
   UINT8   OemId[32];\r
+  ///\r
+  /// An ASCII identification string which uniquely identifies a family of\r
+  /// compatible products from the manufacturer.\r
+  ///\r
   UINT8   ProductId[32];\r
+  ///\r
+  /// Unused, must be zero.\r
+  ///\r
   UINT8   Reserved2[8];\r
 } SAL_SYSTEM_TABLE_HEADER;\r
 #pragma pack()\r
 \r
 #define EFI_SAL_ST_HEADER_SIGNATURE "SST_"\r
-#define EFI_SAL_REVISION            0x0300\r
+#define EFI_SAL_REVISION            0x0320\r
 //\r
 // SAL System Types\r
 //\r
@@ -248,8 +417,11 @@ typedef struct {
 #define EFI_SAL_ST_AP_WAKEUP_SIZE          16\r
 \r
 #pragma pack(1)\r
+///\r
+/// Format Entrypoint Descriptor Entry\r
+///\r
 typedef struct {\r
-  UINT8   Type; //  Type == 0\r
+  UINT8   Type;         ///< Type here should be 0\r
   UINT8   Reserved[7];\r
   UINT64  PalProcEntry;\r
   UINT64  SalProcEntry;\r
@@ -258,20 +430,28 @@ typedef struct {
 } SAL_ST_ENTRY_POINT_DESCRIPTOR;\r
 \r
 #pragma pack(1)\r
+///\r
+/// Format Platform Features Descriptor Entry\r
+///\r
 typedef struct {\r
-  UINT8 Type;                     // Type == 2\r
+  UINT8 Type;           ///< Type here should be 2\r
   UINT8 PlatformFeatures;\r
   UINT8 Reserved[14];\r
 } SAL_ST_PLATFORM_FEATURES;\r
 #pragma pack()\r
-\r
+//\r
+// Value of Platform Feature List\r
+//\r
 #define SAL_PLAT_FEAT_BUS_LOCK      0x01\r
 #define SAL_PLAT_FEAT_PLAT_IPI_HINT 0x02\r
 #define SAL_PLAT_FEAT_PROC_IPI_HINT 0x04\r
 \r
 #pragma pack(1)\r
+///\r
+/// Format of Translation Register Descriptor Entry\r
+///\r
 typedef struct {\r
-  UINT8   Type;                   // Type == 3\r
+  UINT8   Type;         ///< Type here should be 3\r
   UINT8   TRType;\r
   UINT8   TRNumber;\r
   UINT8   Reserved[5];\r
@@ -280,11 +460,16 @@ typedef struct {
   UINT64  Reserved1;\r
 } SAL_ST_TR_DECRIPTOR;\r
 #pragma pack()\r
-\r
+//\r
+// Type of Translation Register\r
+//\r
 #define EFI_SAL_ST_TR_USAGE_INSTRUCTION 00\r
 #define EFI_SAL_ST_TR_USAGE_DATA        01\r
 \r
 #pragma pack(1)\r
+///\r
+/// Definition of Coherence Domain Information\r
+///\r
 typedef struct {\r
   UINT64  NumberOfProcessors;\r
   UINT64  LocalIDRegister;\r
@@ -292,8 +477,11 @@ typedef struct {
 #pragma pack()\r
 \r
 #pragma pack(1)\r
+///\r
+/// Format of Purge Translation Cache Coherence Domain Entry\r
+///\r
 typedef struct {\r
-  UINT8                     Type; // Type == 4\r
+  UINT8                     Type;       ///< Type here should be 4\r
   UINT8                     Reserved[3];\r
   UINT32                    NumberOfDomains;\r
   SAL_COHERENCE_DOMAIN_INFO *DomainInformation;\r
@@ -301,20 +489,20 @@ typedef struct {
 #pragma pack()\r
 \r
 #pragma pack(1)\r
+///\r
+/// Format of Application Processor Wake-Up Descriptor Entry\r
+///\r
 typedef struct {\r
-  UINT8   Type;                   // Type == 5\r
+  UINT8   Type;                   ///< Type here should be 5\r
   UINT8   WakeUpType;\r
   UINT8   Reserved[6];\r
   UINT64  ExternalInterruptVector;\r
 } SAL_ST_AP_WAKEUP_DECRIPTOR;\r
 #pragma pack()\r
-//\r
-// FIT Entry\r
-//\r
-#define EFI_SAL_FIT_ENTRY_PTR   (0x100000000 - 32)  // 4GB - 24\r
-#define EFI_SAL_FIT_PALA_ENTRY  (0x100000000 - 48)  // 4GB - 32\r
-#define EFI_SAL_FIT_PALB_TYPE   01\r
 \r
+///\r
+/// Format of Firmware Interface Table (FIT) Entry\r
+///\r
 typedef struct {\r
   UINT64  Address;\r
   UINT8   Size[3];\r
@@ -324,15 +512,37 @@ typedef struct {
   UINT8   CheckSumValid : 1;\r
   UINT8   CheckSum;\r
 } EFI_SAL_FIT_ENTRY;\r
+//\r
+// FIT Types \r
+//\r
+#define EFI_SAL_FIT_FIT_HEADER_TYPE                0x00\r
+#define EFI_SAL_FIT_PAL_B_TYPE                     0x01\r
+//\r
+// Type from 0x02 to 0x0D is reserved.\r
+//\r
+#define EFI_SAL_FIT_PROCESSOR_SPECIFIC_PAL_A_TYPE  0x0E\r
+#define EFI_SAL_FIT_PAL_A_TYPE                     0x0F\r
+//\r
+// OEM-defined type range is from 0x10 to 0x7E.\r
+// Here we defined the PEI_CORE type as 0x10\r
+//\r
+#define EFI_SAL_FIT_PEI_CORE_TYPE                  0x10\r
+#define EFI_SAL_FIT_UNUSED_TYPE                    0x7F\r
 \r
 //\r
-//  SAL Common Record Header\r
+// FIT Entry\r
 //\r
-typedef struct {\r
-  UINT16  Length;\r
-  UINT8   Data[1024];\r
-} SAL_OEM_DATA;\r
+#define EFI_SAL_FIT_ENTRY_PTR   (0x100000000 - 32)  // 4GB - 24\r
+#define EFI_SAL_FIT_PALA_ENTRY  (0x100000000 - 48)  // 4GB - 32\r
+#define EFI_SAL_FIT_PALB_TYPE   01\r
 \r
+//\r
+// Following definitions are for Error Record Structure\r
+//\r
+\r
+///\r
+/// Format of TimeStamp field in Record Header\r
+///\r
 typedef struct {\r
   UINT8 Seconds;\r
   UINT8 Minutes;\r
@@ -343,7 +553,9 @@ typedef struct {
   UINT8 Year;\r
   UINT8 Century;\r
 } SAL_TIME_STAMP;\r
-\r
+///\r
+/// Definition of Record Header\r
+///\r
 typedef struct {\r
   UINT64          RecordId;\r
   UINT16          Revision;\r
@@ -353,29 +565,35 @@ typedef struct {
   SAL_TIME_STAMP  TimeStamp;\r
   UINT8           OemPlatformId[16];\r
 } SAL_RECORD_HEADER;\r
-\r
+///\r
+/// Definition of Section Header\r
+///\r
 typedef struct {\r
-  GUID                 Guid;\r
+  GUID      Guid;\r
   UINT16    Revision;\r
   UINT8     ErrorRecoveryInfo;\r
   UINT8     Reserved;\r
   UINT32    SectionLength;\r
 } SAL_SEC_HEADER;\r
 \r
-//\r
-// SAL Processor Record\r
-//\r
+///\r
+/// GUID of Processor Machine Check Errors\r
+///\r
 #define SAL_PROCESSOR_ERROR_RECORD_INFO \\r
   { \\r
     0xe429faf1, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
   }\r
-\r
+//\r
+// Bit masks for valid bits of MOD_ERROR_INFO\r
+//\r
 #define CHECK_INFO_VALID_BIT_MASK   0x1\r
 #define REQUESTOR_ID_VALID_BIT_MASK 0x2\r
 #define RESPONDER_ID_VALID_BIT_MASK 0x4\r
 #define TARGER_ID_VALID_BIT_MASK    0x8\r
 #define PRECISE_IP_VALID_BIT_MASK   0x10\r
-\r
+///\r
+/// Definition of MOD_ERROR_INFO_STRUCT\r
+///\r
 typedef struct {\r
   UINT64  InfoValid : 1;\r
   UINT64  ReqValid : 1;\r
@@ -389,7 +607,9 @@ typedef struct {
   UINT64  Target;\r
   UINT64  Ip;\r
 } MOD_ERROR_INFO;\r
-\r
+///\r
+/// Definition of CPUID_INFO_STRUCT\r
+///\r
 typedef struct {\r
   UINT8 CpuidInfo[40];\r
   UINT8 Reserved;\r
@@ -399,14 +619,18 @@ typedef struct {
   UINT64  FrLow;\r
   UINT64  FrHigh;\r
 } FR_STRUCT;\r
-\r
+//\r
+// Bit masks for PSI_STATIC_STRUCT.ValidFieldBits\r
+//\r
 #define MIN_STATE_VALID_BIT_MASK  0x1\r
 #define BR_VALID_BIT_MASK         0x2\r
 #define CR_VALID_BIT_MASK         0x4\r
 #define AR_VALID_BIT_MASK         0x8\r
 #define RR_VALID_BIT_MASK         0x10\r
 #define FR_VALID_BIT_MASK         0x20\r
-\r
+///\r
+/// Definition of PSI_STATIC_STRUCT\r
+///\r
 typedef struct {\r
   UINT64    ValidFieldBits;\r
   UINT8     MinStateInfo[1024];\r
@@ -416,13 +640,17 @@ typedef struct {
   UINT64    Rr[8];\r
   FR_STRUCT Fr[128];\r
 } PSI_STATIC_STRUCT;\r
-\r
+//\r
+// Bit masks for SAL_PROCESSOR_ERROR_RECORD.ValidationBits\r
+//\r
 #define PROC_ERROR_MAP_VALID_BIT_MASK       0x1\r
 #define PROC_STATE_PARAMETER_VALID_BIT_MASK 0x2\r
 #define PROC_CR_LID_VALID_BIT_MASK          0x4\r
 #define PROC_STATIC_STRUCT_VALID_BIT_MASK   0x8\r
 #define CPU_INFO_VALID_BIT_MASK             0x1000000\r
-\r
+///\r
+/// Definition of Processor Machine Check Error Record\r
+///\r
 typedef struct {\r
   SAL_SEC_HEADER    SectionHeader;\r
   UINT64            ValidationBits;\r
@@ -438,14 +666,16 @@ typedef struct {
   PSI_STATIC_STRUCT PsiValidData;\r
 } SAL_PROCESSOR_ERROR_RECORD;\r
 \r
-//\r
-//  Sal Platform memory Error Record\r
-//\r
+///\r
+/// GUID of Platform Memory Device Error Info\r
+///\r
 #define SAL_MEMORY_ERROR_RECORD_INFO \\r
   { \\r
     0xe429faf2, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
   }\r
-\r
+//\r
+// Bit masks for SAL_MEMORY_ERROR_RECORD.ValidationBits\r
+//\r
 #define MEMORY_ERROR_STATUS_VALID_BIT_MASK                0x1\r
 #define MEMORY_PHYSICAL_ADDRESS_VALID_BIT_MASK            0x2\r
 #define MEMORY_ADDR_BIT_MASK                              0x4\r
@@ -463,7 +693,9 @@ typedef struct {
 #define MEMORY_PLATFORM_BUS_SPECIFIC_DATA_VALID_BIT_MASK  0x4000\r
 #define MEMORY_PLATFORM_OEM_ID_VALID_BIT_MASK             0x8000\r
 #define MEMORY_PLATFORM_OEM_DATA_STRUCT_VALID_BIT_MASK    0x10000\r
-\r
+///\r
+/// Definition of Platform Memory Device Error Info Record\r
+///\r
 typedef struct {\r
   SAL_SEC_HEADER  SectionHeader;\r
   UINT64          ValidationBits;\r
@@ -485,14 +717,16 @@ typedef struct {
   UINT8           MemPlatformOemId[16];\r
 } SAL_MEMORY_ERROR_RECORD;\r
 \r
-//\r
-//  PCI BUS Errors\r
-//\r
+///\r
+/// GUID of Platform PCI Bus Error Info\r
+///\r
 #define SAL_PCI_BUS_ERROR_RECORD_INFO \\r
   { \\r
     0xe429faf4, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
   }\r
-\r
+//\r
+// Bit masks for SAL_PCI_BUS_ERROR_RECORD.ValidationBits\r
+//\r
 #define PCI_BUS_ERROR_STATUS_VALID_BIT_MASK     0x1\r
 #define PCI_BUS_ERROR_TYPE_VALID_BIT_MASK       0x2\r
 #define PCI_BUS_ID_VALID_BIT_MASK               0x4\r
@@ -509,7 +743,9 @@ typedef struct {
   UINT8 BusNumber;\r
   UINT8 SegmentNumber;\r
 } PCI_BUS_ID;\r
-\r
+///\r
+/// Definition of Platform PCI Bus Error Info Record\r
+///\r
 typedef struct {\r
   SAL_SEC_HEADER  SectionHeader;\r
   UINT64          ValidationBits;\r
@@ -526,21 +762,25 @@ typedef struct {
   UINT8           PciBusOemId[16];\r
 } SAL_PCI_BUS_ERROR_RECORD;\r
 \r
-//\r
-//  PCI Component Errors\r
-//\r
+///\r
+/// GUID of Platform PCI Component Error Info\r
+///\r
 #define SAL_PCI_COMP_ERROR_RECORD_INFO \\r
   { \\r
     0xe429faf6, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
   }\r
-\r
+//\r
+// Bit masks for SAL_PCI_COMPONENT_ERROR_RECORD.ValidationBits\r
+//\r
 #define PCI_COMP_ERROR_STATUS_VALID_BIT_MASK    0x1\r
 #define PCI_COMP_INFO_VALID_BIT_MASK            0x2\r
 #define PCI_COMP_MEM_NUM_VALID_BIT_MASK         0x4\r
 #define PCI_COMP_IO_NUM_VALID_BIT_MASK          0x8\r
 #define PCI_COMP_REG_DATA_PAIR_VALID_BIT_MASK   0x10\r
 #define PCI_COMP_OEM_DATA_STRUCT_VALID_BIT_MASK 0x20\r
-\r
+///\r
+/// Format of PCI Component Information to identify the device\r
+///\r
 typedef struct {\r
   UINT16  VendorId;\r
   UINT16  DeviceId;\r
@@ -551,7 +791,9 @@ typedef struct {
   UINT8   SegmentNumber;\r
   UINT8   Reserved[5];\r
 } PCI_COMP_INFO;\r
-\r
+///\r
+/// Definition of Platform PCI Component Error Info\r
+///\r
 typedef struct {\r
   SAL_SEC_HEADER  SectionHeader;\r
   UINT64          ValidationBits;\r
@@ -562,14 +804,16 @@ typedef struct {
   UINT8           PciBusOemId[16];\r
 } SAL_PCI_COMPONENT_ERROR_RECORD;\r
 \r
-//\r
-//  Sal Device Errors Info.\r
-//\r
-#define SAL_DEVICE_ERROR_RECORD_INFO \\r
+///\r
+/// Platform SEL Device Error Info\r
+///\r
+#define SAL_SEL_DEVICE_ERROR_RECORD_INFO \\r
   { \\r
     0xe429faf3, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
   }\r
-\r
+//\r
+// Bit masks for SAL_SEL_DEVICE_ERROR_RECORD.ValidationBits\r
+//\r
 #define SEL_RECORD_ID_VALID_BIT_MASK      0x1;\r
 #define SEL_RECORD_TYPE_VALID_BIT_MASK    0x2;\r
 #define SEL_GENERATOR_ID_VALID_BIT_MASK   0x4;\r
@@ -580,7 +824,9 @@ typedef struct {
 #define SEL_EVENT_DATA1_VALID_BIT_MASK    0x80;\r
 #define SEL_EVENT_DATA2_VALID_BIT_MASK    0x100;\r
 #define SEL_EVENT_DATA3_VALID_BIT_MASK    0x200;\r
-\r
+///\r
+/// Definition of Platform SEL Device Error Info Record\r
+///\r
 typedef struct {\r
   SAL_SEC_HEADER  SectionHeader;\r
   UINT64          ValidationBits;\r
@@ -595,21 +841,25 @@ typedef struct {
   UINT8           Data1;\r
   UINT8           Data2;\r
   UINT8           Data3;\r
-} SAL_DEVICE_ERROR_RECORD;\r
+} SAL_SEL_DEVICE_ERROR_RECORD;\r
 \r
-//\r
-//  Sal SMBIOS Device Errors Info.\r
-//\r
+///\r
+/// GUID of Platform SMBIOS Device Error Info\r
+///\r
 #define SAL_SMBIOS_ERROR_RECORD_INFO \\r
   { \\r
     0xe429faf5, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
   }\r
-\r
+//\r
+// Bit masks for SAL_SMBIOS_DEVICE_ERROR_RECORD.ValidationBits\r
+//\r
 #define SMBIOS_EVENT_TYPE_VALID_BIT_MASK  0x1\r
 #define SMBIOS_LENGTH_VALID_BIT_MASK      0x2\r
 #define SMBIOS_TIME_STAMP_VALID_BIT_MASK  0x4\r
 #define SMBIOS_DATA_VALID_BIT_MASK        0x8\r
-\r
+///\r
+/// Definition of Platform SMBIOS Device Error Info Record\r
+///\r
 typedef struct {\r
   SAL_SEC_HEADER  SectionHeader;\r
   UINT64          ValidationBits;\r
@@ -619,13 +869,15 @@ typedef struct {
 } SAL_SMBIOS_DEVICE_ERROR_RECORD;\r
 \r
 ///\r
-///  Sal Platform Specific Errors Info.\r
+/// GUID of Platform Specific Error Info\r
 ///\r
 #define SAL_PLATFORM_ERROR_RECORD_INFO \\r
   { \\r
     0xe429faf7, 0x3cb7, 0x11d4, {0xbc, 0xa7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
   }\r
-\r
+//\r
+// Bit masks for SAL_PLATFORM_SPECIFIC_ERROR_RECORD.ValidationBits\r
+//\r
 #define PLATFORM_ERROR_STATUS_VALID_BIT_MASK    0x1\r
 #define PLATFORM_REQUESTOR_ID_VALID_BIT_MASK    0x2\r
 #define PLATFORM_RESPONDER_ID_VALID_BIT_MASK    0x4\r
@@ -634,7 +886,9 @@ typedef struct {
 #define PLATFORM_OEM_ID_VALID_BIT_MASK          0x20\r
 #define PLATFORM_OEM_DATA_STRUCT_VALID_BIT_MASK 0x40\r
 #define PLATFORM_OEM_DEVICE_PATH_VALID_BIT_MASK 0x80\r
-\r
+///\r
+/// Definition of Platform Specific Error Info Record\r
+///\r
 typedef struct {\r
   SAL_SEC_HEADER  SectionHeader;\r
   UINT64          ValidationBits;\r
@@ -647,14 +901,14 @@ typedef struct {
 } SAL_PLATFORM_SPECIFIC_ERROR_RECORD;\r
 \r
 ///\r
-/// Union of all the possible Sal Record Types\r
+/// Union of all the possible SAL Error Record Types\r
 ///\r
 typedef union {\r
   SAL_RECORD_HEADER                   *RecordHeader;\r
   SAL_PROCESSOR_ERROR_RECORD          *SalProcessorRecord;\r
   SAL_PCI_BUS_ERROR_RECORD            *SalPciBusRecord;\r
   SAL_PCI_COMPONENT_ERROR_RECORD      *SalPciComponentRecord;\r
-  SAL_DEVICE_ERROR_RECORD             *ImpiRecord;\r
+  SAL_SEL_DEVICE_ERROR_RECORD         *ImpiRecord;\r
   SAL_SMBIOS_DEVICE_ERROR_RECORD      *SmbiosRecord;\r
   SAL_PLATFORM_SPECIFIC_ERROR_RECORD  *PlatformRecord;\r
   SAL_MEMORY_ERROR_RECORD             *MemoryRecord;\r
index 04bd3b4fb09d74546f70b988f35947735891f4d6..ccb3590bdf28d6a100ad669a71c591c2f269f17d 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
-  support for SCSI-2 standard\r
+  Support for SCSI-2 standard\r
 \r
-  Copyright (c) 2006, Intel Corporation                                                         \r
+  Copyright (c) 2006 - 2008, Intel Corporation                                                         \r
   All rights reserved. This program and the accompanying materials                          \r
   are licensed and made available under the terms and conditions of the BSD License         \r
   which accompanies this distribution.  The full text of the license may be found at        \r
 #define EFI_SCSI_OP_MODE_SEN6         0x1a\r
 #define EFI_SCSI_OP_MODE_SEN10        0x5a\r
 #define EFI_SCSI_OP_READ_BUFFER       0x3c\r
+#define EFI_SCSI_OP_RECEIVE_DIAG      0x1c\r
 #define EFI_SCSI_OP_REQUEST_SENSE     0x03\r
 #define EFI_SCSI_OP_SEND_DIAG         0x1d\r
 #define EFI_SCSI_OP_TEST_UNIT_READY   0x00\r
 #define EFI_SCSI_OP_WRITE_BUFF        0x3b\r
 \r
 //\r
-// Commands unique to Direct Access Devices\r
+// Additional commands for Direct Access Devices\r
 //\r
-#define EFI_SCSI_OP_COMPARE         0x39\r
 #define EFI_SCSI_OP_FORMAT          0x04\r
 #define EFI_SCSI_OP_LOCK_UN_CACHE   0x36\r
 #define EFI_SCSI_OP_PREFETCH        0x34\r
@@ -52,7 +52,6 @@
 #define EFI_SCSI_OP_READ_DEFECT     0x37\r
 #define EFI_SCSI_OP_READ_LONG       0x3e\r
 #define EFI_SCSI_OP_REASSIGN_BLK    0x07\r
-#define EFI_SCSI_OP_RECEIVE_DIAG    0x1c\r
 #define EFI_SCSI_OP_RELEASE         0x17\r
 #define EFI_SCSI_OP_REZERO          0x01\r
 #define EFI_SCSI_OP_SEARCH_DATA_E   0x31\r
@@ -72,7 +71,7 @@
 #define EFI_SCSI_OP_WRITE_SAME      0x41\r
 \r
 //\r
-// Commands unique to Sequential Access Devices\r
+// Additional commands for Sequential Access Devices\r
 //\r
 #define EFI_SCSI_OP_ERASE             0x19\r
 #define EFI_SCSI_OP_LOAD_UNLOAD       0x1b\r
@@ -88,7 +87,7 @@
 #define EFI_SCSI_OP_WRITE_FILEMARK    0x10\r
 \r
 //\r
-// Commands unique to Printer Devices\r
+// Additional commands for Printer Devices\r
 //\r
 #define EFI_SCSI_OP_PRINT       0x0a\r
 #define EFI_SCSI_OP_SLEW_PRINT  0x0b\r
 #define EFI_SCSI_OP_SYNC_BUFF   0x10\r
 \r
 //\r
-// Commands unique to Processor Devices\r
+// Additional commands for Processor Devices\r
 //\r
 #define EFI_SCSI_OP_RECEIVE 0x08\r
 #define EFI_SCSI_OP_SEND    0x0a\r
 \r
 //\r
-// Commands unique to Write-Once Devices\r
+// Additional commands for Write-Once Devices\r
 //\r
 #define EFI_SCSI_OP_MEDIUM_SCAN     0x38\r
 #define EFI_SCSI_OP_SEARCH_DAT_E10  0x31\r
 #define EFI_SCSI_OP_WRITE_VERIFY12  0xae\r
 \r
 //\r
-// Commands unique to CD-ROM Devices\r
+// Additional commands for CD-ROM Devices\r
 //\r
 #define EFI_SCSI_OP_PLAY_AUD_10       0x45\r
 #define EFI_SCSI_OP_PLAY_AUD_12       0xa5\r
 #define EFI_SCSI_OP_READ_TOC          0x43\r
 \r
 //\r
-// Commands unique to Scanner Devices\r
+// Additional commands for Scanner Devices\r
 //\r
 #define EFI_SCSI_OP_GET_DATABUFF_STAT 0x34\r
 #define EFI_SCSI_OP_GET_WINDOW        0x25\r
 #define EFI_SCSI_OP_SET_WINDOW        0x24\r
 \r
 //\r
-// Commands unique to Optical Memory Devices\r
+// Additional commands for Optical Memory Devices\r
 //\r
 #define EFI_SCSI_OP_UPDATE_BLOCK  0x3d\r
 \r
 //\r
-// Commands unique to Medium Changer Devices\r
+// Additional commands for Medium Changer Devices\r
 //\r
 #define EFI_SCSI_OP_EXCHANGE_MEDIUM   0xa6\r
 #define EFI_SCSI_OP_INIT_ELEMENT_STAT 0x07\r
 #define EFI_SCSI_OP_SEND_VOL_TAG      0xb6\r
 \r
 //\r
-// Commands unique to Communition Devices\r
+// Additional commands for Communition Devices\r
 //\r
 #define EFI_SCSI_OP_GET_MESSAGE6    0x08\r
 #define EFI_SCSI_OP_GET_MESSAGE10   0x28\r
 //\r
 // Peripheral Device Type Definitions\r
 //\r
-#define EFI_SCSI_TYPE_DISK          0x00  // Disk device\r
-#define EFI_SCSI_TYPE_TAPE          0x01  // Tape device\r
-#define EFI_SCSI_TYPE_PRINTER       0x02  // Printer\r
-#define EFI_SCSI_TYPE_PROCESSOR     0x03  // Processor\r
-#define EFI_SCSI_TYPE_WORM          0x04  // Write-once read-multiple\r
-#define EFI_SCSI_TYPE_CDROM         0x05  // CD-ROM device\r
-#define EFI_SCSI_TYPE_SCANNER       0x06  // Scanner device\r
-#define EFI_SCSI_TYPE_OPTICAL       0x07  // Optical memory device\r
-#define EFI_SCSI_TYPE_MEDIUMCHANGER 0x08  // Medium Changer device\r
-#define EFI_SCSI_TYPE_COMMUNICATION 0x09  // Communications device\r
-#define EFI_SCSI_TYPE_RESERVED_LOW  0x0A  // Reserved (low)\r
-#define EFI_SCSI_TYPE_RESERVED_HIGH 0x1E  // Reserved (high)\r
-#define EFI_SCSI_TYPE_UNKNOWN       0x1F  // Unknown or no device type\r
+#define EFI_SCSI_TYPE_DISK          0x00  ///< Direct-access device (e.g. magnetic disk)\r
+#define EFI_SCSI_TYPE_TAPE          0x01  ///< Sequential-access device (e.g. magnetic tape)\r
+#define EFI_SCSI_TYPE_PRINTER       0x02  ///< Printer device\r
+#define EFI_SCSI_TYPE_PROCESSOR     0x03  ///< Processor device\r
+#define EFI_SCSI_TYPE_WORM          0x04  ///< Write-once device (e.g. some optical disks)\r
+#define EFI_SCSI_TYPE_CDROM         0x05  ///< CD-ROM device\r
+#define EFI_SCSI_TYPE_SCANNER       0x06  ///< Scanner device\r
+#define EFI_SCSI_TYPE_OPTICAL       0x07  ///< Optical memory device (e.g. some optical disks)\r
+#define EFI_SCSI_TYPE_MEDIUMCHANGER 0x08  ///< Medium changer device (e.g. jukeboxes)\r
+#define EFI_SCSI_TYPE_COMMUNICATION 0x09  ///< Communications device\r
+#define EFI_SCSI_TYPE_ASCIT8_1      0x0A  ///< Defined by ASC IT8 (Graphic arts pre-press devices)\r
+#define EFI_SCSI_TYPE_ASCIT8_2      0x0B  ///< Defined by ASC IT8 (Graphic arts pre-press devices)\r
+//\r
+// 0Ch - 1Eh are reserved\r
+//\r
+#define EFI_SCSI_TYPE_UNKNOWN       0x1F  ///< Unknown or no device type\r
+\r
 #pragma pack(1)\r
-//\r
-// Data structures for scsi command use\r
-//\r
+///\r
+/// Standard INQUIRY data format\r
+///\r
 typedef struct {\r
   UINT8 Peripheral_Type : 5;\r
   UINT8 Peripheral_Qualifier : 3;\r
@@ -203,6 +206,9 @@ typedef struct {
   UINT8 Reserved_5_95[95 - 5 + 1];\r
 } EFI_SCSI_INQUIRY_DATA;\r
 \r
+///\r
+/// Error codes 70h and 71h sense data format\r
+///\r
 typedef struct {\r
   UINT8 Error_Code : 7;\r
   UINT8 Valid : 1;\r
@@ -212,11 +218,11 @@ typedef struct {
   UINT8 ILI : 1;\r
   UINT8 Reserved_22 : 2;\r
   UINT8 Information_3_6[4];\r
-  UINT8 Addnl_Sense_Length;           // n - 7\r
+  UINT8 Addnl_Sense_Length;           ///< Additional sense length (n-7)\r
   UINT8 Vendor_Specific_8_11[4];\r
-  UINT8 Addnl_Sense_Code;             // mandatory\r
-  UINT8 Addnl_Sense_Code_Qualifier;   // mandatory\r
-  UINT8 Field_Replaceable_Unit_Code;  // optional\r
+  UINT8 Addnl_Sense_Code;             ///< Additional sense code\r
+  UINT8 Addnl_Sense_Code_Qualifier;   ///< Additional sense code qualifier\r
+  UINT8 Field_Replaceable_Unit_Code;  ///< Field replaceable unit code\r
   UINT8 Reserved_15_17[3];\r
 } EFI_SCSI_SENSE_DATA;\r
 \r
@@ -232,10 +238,10 @@ typedef struct {
 } EFI_SCSI_DISK_CAPACITY_DATA;\r
 \r
 #pragma pack()\r
+\r
 //\r
 // Sense Key\r
 //\r
-#define EFI_SCSI_REQUEST_SENSE_ERROR  (0x70)\r
 #define EFI_SCSI_SK_NO_SENSE          (0x0)\r
 #define EFI_SCSI_SK_RECOVERY_ERROR    (0x1)\r
 #define EFI_SCSI_SK_NOT_READY         (0x2)\r
@@ -254,9 +260,13 @@ typedef struct {
 #define EFI_SCSI_SK_RESERVED_F        (0xF)\r
 \r
 //\r
-// Additional Sense Codes\r
+// Additional Sense Codes and Sense Code Qualifiers.\r
+// Only some frequently used additional sense codes and qualifiers are\r
+// defined here. Please refer to SCSI standard for full value definition.\r
 //\r
 #define EFI_SCSI_ASC_NOT_READY                    (0x04)\r
+#define   EFI_SCSI_ASCQ_IN_PROGRESS                 (0x01)\r
+\r
 #define EFI_SCSI_ASC_MEDIA_ERR1                   (0x10)\r
 #define EFI_SCSI_ASC_MEDIA_ERR2                   (0x11)\r
 #define EFI_SCSI_ASC_MEDIA_ERR3                   (0x14)\r
@@ -267,19 +277,9 @@ typedef struct {
 #define EFI_SCSI_ASC_INVALID_FIELD                (0x24)\r
 #define EFI_SCSI_ASC_WRITE_PROTECTED              (0x27)\r
 #define EFI_SCSI_ASC_MEDIA_CHANGE                 (0x28)\r
-#define EFI_SCSI_ASC_RESET                        (0x29)  /* Power On Reset or Bus Reset occurred */\r
+#define EFI_SCSI_ASC_RESET                        (0x29)   ///<Power On Reset or Bus Reset occurred\r
 #define EFI_SCSI_ASC_ILLEGAL_FIELD                (0x26)\r
 #define EFI_SCSI_ASC_NO_MEDIA                     (0x3A)\r
 #define EFI_SCSI_ASC_ILLEGAL_MODE_FOR_THIS_TRACK  (0x64)\r
 \r
-///\r
-/// Additional Sense Code Qualifier\r
-///\r
-#define EFI_SCSI_ASCQ_IN_PROGRESS (0x01)\r
-\r
-///\r
-/// Max bytes needed to represent ID of a SCSI device\r
-///\r
-#define EFI_SCSI_TARGET_MAX_BYTES (0x10)\r
-\r
 #endif\r
index 864b465d0e7befeeaa6ff7d57d020075d381cccc..458e63b51fb13ab8c3df3053c11ea49bcd405bc4 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   This file contains definitions for the SPD fields on an SDRAM.\r
     \r
-  Copyright (c) 2007, Intel Corporation\r
+  Copyright (c) 2007 - 2008, Intel Corporation\r
   All rights reserved. This program and the accompanying materials                          \r
   are licensed and made available under the terms and conditions of the BSD License         \r
   which accompanies this distribution.  The full text of the license may be found at        \r
 #define SPD_SDRAM_CAS_LATENCY           18\r
 #define SPD_SDRAM_MODULE_ATTR           21\r
 \r
-#define SPD_SDRAM_TCLK1_PULSE           9   // cycle time for highest cas latency\r
-#define SPD_SDRAM_TAC1_PULSE            10  // access time for highest cas latency\r
-#define SPD_SDRAM_TCLK2_PULSE           23  // cycle time for 2nd highest cas latency\r
-#define SPD_SDRAM_TAC2_PULSE            24  // access time for 2nd highest cas latency\r
-#define SPD_SDRAM_TCLK3_PULSE           25  // cycle time for 3rd highest cas latency\r
-#define SPD_SDRAM_TAC3_PULSE            26  // access time for 3rd highest cas latency\r
+#define SPD_SDRAM_TCLK1_PULSE           9   ///< cycle time for highest cas latency\r
+#define SPD_SDRAM_TAC1_PULSE            10  ///< access time for highest cas latency\r
+#define SPD_SDRAM_TCLK2_PULSE           23  ///< cycle time for 2nd highest cas latency\r
+#define SPD_SDRAM_TAC2_PULSE            24  ///< access time for 2nd highest cas latency\r
+#define SPD_SDRAM_TCLK3_PULSE           25  ///< cycle time for 3rd highest cas latency\r
+#define SPD_SDRAM_TAC3_PULSE            26  ///< access time for 3rd highest cas latency\r
 #define SPD_SDRAM_MIN_PRECHARGE         27\r
 #define SPD_SDRAM_ACTIVE_MIN            28\r
 #define SPD_SDRAM_RAS_CAS               29\r
 //\r
 // Memory Type Definitions\r
 //\r
-#define SPD_VAL_SDR_TYPE  4 // SDR SDRAM memory\r
-#define SPD_VAL_DDR_TYPE  7 // DDR SDRAM memory\r
-#define SPD_VAL_DDR2_TYPE 8 // DDR2 SDRAM memory\r
+#define SPD_VAL_SDR_TYPE  4 ///< SDR SDRAM memory\r
+#define SPD_VAL_DDR_TYPE  7 ///< DDR SDRAM memory\r
+#define SPD_VAL_DDR2_TYPE 8 ///< DDR2 SDRAM memory\r
 //\r
 // ECC Type Definitions\r
 //\r
-#define SPD_ECC_TYPE_NONE   0x00  // No error checking\r
-#define SPD_ECC_TYPE_PARITY 0x01  // No error checking\r
-#define SPD_ECC_TYPE_ECC    0x02  // Error checking only\r
+#define SPD_ECC_TYPE_NONE   0x00  ///< No error checking\r
+#define SPD_ECC_TYPE_PARITY 0x01  ///< No error checking\r
+#define SPD_ECC_TYPE_ECC    0x02  ///< Error checking only\r
 //\r
 // Module Attributes (Bit positions)\r
 //\r
index 0ab0c1592304bebd469ea0f6143c71de909b9ac4..b6f6140ee69acccd69d2e18d11d9ab5820cf6220 100644 (file)
@@ -2,7 +2,7 @@
   ACPI Serial Port Console Redirection Table as defined by Microsoft in\r
   http://www.microsoft.com/whdc/system/platform/server/spcr.mspx\r
     \r
-  Copyright (c) 2007, Intel Corporation\r
+  Copyright (c) 2007 - 2008, Intel Corporation\r
   All rights reserved. This program and the accompanying materials                          \r
   are licensed and made available under the terms and conditions of the BSD License         \r
   which accompanies this distribution.  The full text of the license may be found at        \r
@@ -29,7 +29,7 @@
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION 0x01\r
 \r
 ///\r
-/// SPCR Structure Definition\r
+/// Serial Port Console Redirection Table Format\r
 ///\r
 typedef struct {\r
   EFI_ACPI_DESCRIPTION_HEADER             Header;\r
@@ -64,14 +64,31 @@ typedef struct {
 //\r
 // Interface Type\r
 //\r
+\r
+///\r
+/// Full 16550 interface\r
+///\r
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16550   0\r
+///\r
+/// Full 16450 interface\r
+///\r
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_16450   1\r
 \r
 //\r
 // Interrupt Type\r
 //\r
+\r
+///\r
+/// PC-AT-compatible dual-8259 IRQ interrupt\r
+///\r
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_8259    0x1\r
+///\r
+/// I/O APIC interrupt (Global System Interrupt)\r
+///\r
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_APIC    0x2\r
+///\r
+/// I/O SAPIC interrupt (Global System Interrupt)\r
+///\r
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_SAPIC   0x4\r
 \r
 //\r
@@ -95,8 +112,18 @@ typedef struct {
 //\r
 // Flow Control\r
 //\r
+\r
+///\r
+/// DCD required for transmit\r
+///\r
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_DCD       0x1\r
+///\r
+/// RTS/CTS hardware flow control\r
+///\r
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_RTS_CTS   0x2\r
+///\r
+///  XON/XOFF software control\r
+///\r
 #define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_FLOW_CONTROL_XON_XOFF  0x4\r
 \r
 //\r
index 73b2b09c819a71b79c5c7a1de7582376220a0964..e44e239f6f84c42f984eff4e904184fcce8be096 100644 (file)
@@ -1,8 +1,7 @@
 /** @file\r
-  Industry Standard Definitions of SMBIOS tables.\r
+  Industry Standard Definitions of SMBIOS Table Specification v2.6\r
 \r
-\r
-  Copyright (c) 2006 - 2007, Intel Corporation All rights\r
+  Copyright (c) 2006 - 2008, Intel Corporation All rights\r
   reserved. This program and the accompanying materials are\r
   licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at        \r
   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
 \r
-  @par Revision Reference: SMBIOS 2.0\r
-  \r
 **/\r
 \r
 #ifndef __SMBIOS_STANDARD_H__\r
 #define __SMBIOS_STANDARD_H__\r
-//\r
-// Smbios Table Entry Point Structure\r
-//\r
+///\r
+/// Smbios Table Entry Point Structure\r
+///\r
 #pragma pack(1)\r
 typedef struct {\r
   UINT8   AnchorString[4];\r
@@ -49,6 +46,9 @@ typedef struct {
 \r
 typedef UINT8 SMBIOS_TABLE_STRING;\r
 \r
+///\r
+/// BIOS Information (Type 0)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Vendor;\r
@@ -64,6 +64,9 @@ typedef struct {
   UINT8                 EmbeddedControllerFirmwareMinorRelease;\r
 } SMBIOS_TABLE_TYPE0;\r
 \r
+///\r
+/// System Information (Type 1)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Manufacturer;\r
@@ -76,6 +79,9 @@ typedef struct {
   SMBIOS_TABLE_STRING   Family;\r
 } SMBIOS_TABLE_TYPE1;\r
 \r
+///\r
+/// Base Board (or Module) Information (Type 2)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Manufacturer;\r
@@ -97,6 +103,9 @@ typedef struct {
   UINT8                 ContainedElementMaximum;\r
 } CONTAINED_ELEMENT;\r
 \r
+///\r
+/// System Enclosure or Chassis (Type 3)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Manufacturer;\r
@@ -116,6 +125,9 @@ typedef struct {
   CONTAINED_ELEMENT     ContainedElements[1];\r
 } SMBIOS_TABLE_TYPE3;\r
 \r
+///\r
+/// Processor Information (Type 4)\r
+///\r
 typedef struct { \r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 Socket;\r
@@ -149,6 +161,9 @@ typedef struct {
   UINT16                ProcessorFamily2;\r
 } SMBIOS_TABLE_TYPE4;\r
 \r
+///\r
+/// Memory Controller Information (Type 5, Obsolete)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 ErrDetectMethod;\r
@@ -161,9 +176,11 @@ typedef struct {
   UINT8                 MemoryModuleVoltage;\r
   UINT8                 AssociatedMemorySlotNum;\r
   UINT16                MemoryModuleConfigHandles[1];\r
-//  UINT8                 EnableErrCorrectCapabilities;\r
 } SMBIOS_TABLE_TYPE5;\r
 \r
+///\r
+/// Memory Module Information (Type 6, Obsolete)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   SocketDesignation;\r
@@ -175,6 +192,9 @@ typedef struct {
   UINT8                 ErrorStatus;\r
 } SMBIOS_TABLE_TYPE6;\r
 \r
+///\r
+/// Cache Information (Type 7)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   SocketDesignation;\r
@@ -189,6 +209,9 @@ typedef struct {
   UINT8                 Associativity;\r
 } SMBIOS_TABLE_TYPE7;\r
 \r
+///\r
+/// Port Connector Information (Type 8)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   InternalReferenceDesignator;\r
@@ -198,6 +221,9 @@ typedef struct {
   UINT8                 PortType;\r
 } SMBIOS_TABLE_TYPE8;\r
 \r
+///\r
+/// System Slots (Type 9)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   SlotDesignation;\r
@@ -221,21 +247,33 @@ typedef struct {
   SMBIOS_TABLE_STRING   DescriptionString;\r
 } DEVICE_STRUCT;\r
 \r
+///\r
+/// On Board Devices Information (Type 10, obsolete)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   DEVICE_STRUCT         Device[1];\r
 } SMBIOS_TABLE_TYPE10;\r
 \r
+///\r
+/// OEM Strings (Type 11)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 StringCount;\r
 } SMBIOS_TABLE_TYPE11;\r
 \r
+///\r
+/// System Configuration Options (Type 12)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 StringCount;\r
 } SMBIOS_TABLE_TYPE12;\r
 \r
+///\r
+/// BIOS Language Information (Type 13)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 InstallableLanguages;\r
@@ -249,6 +287,9 @@ typedef struct {
   UINT16                ItemHandle;\r
 } GROUP_STRUCT;\r
 \r
+///\r
+/// Group Associations (Type 14)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   GroupName;\r
@@ -260,6 +301,9 @@ typedef struct {
   UINT8                 DataFormatType;\r
 } EVENT_LOG_TYPE;\r
 \r
+///\r
+/// System Event Log (Type 15)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT16                LogAreaLength;\r
@@ -275,6 +319,9 @@ typedef struct {
   EVENT_LOG_TYPE        EventLogTypeDescriptors[1];\r
 } SMBIOS_TABLE_TYPE15;\r
 \r
+///\r
+/// Physical Memory Array (Type 16)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 Location;\r
@@ -285,6 +332,9 @@ typedef struct {
   UINT16                NumberOfMemoryDevices;\r
 } SMBIOS_TABLE_TYPE16;\r
 \r
+///\r
+/// Memory Device (Type 17)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT16                MemoryArrayHandle;\r
@@ -309,6 +359,9 @@ typedef struct {
   UINT8                 Attributes;\r
 } SMBIOS_TABLE_TYPE17;\r
 \r
+///\r
+/// 32-bit Memory Error Information (Type 18)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 ErrorType;\r
@@ -320,6 +373,9 @@ typedef struct {
   UINT32                ErrorResolution;\r
 } SMBIOS_TABLE_TYPE18;\r
 \r
+///\r
+/// Memory Array Mapped Address (Type 19)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT32                StartingAddress;\r
@@ -328,6 +384,9 @@ typedef struct {
   UINT8                 PartitionWidth;\r
 } SMBIOS_TABLE_TYPE19;\r
 \r
+///\r
+/// Memory Device Mapped Address (Type 20)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT32                StartingAddress;\r
@@ -339,6 +398,9 @@ typedef struct {
   UINT8                 InterleavedDataDepth;\r
 } SMBIOS_TABLE_TYPE20;\r
 \r
+///\r
+/// Built-in Pointing Device (Type 21)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 Type;\r
@@ -346,6 +408,9 @@ typedef struct {
   UINT8                 NumberOfButtons;\r
 } SMBIOS_TABLE_TYPE21;\r
 \r
+///\r
+/// Portable Battery (Type 22)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Location;\r
@@ -365,6 +430,9 @@ typedef struct {
   UINT32                OEMSpecific;\r
 } SMBIOS_TABLE_TYPE22;\r
 \r
+///\r
+/// System Reset (Type 23)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 Capabilities;\r
@@ -374,11 +442,17 @@ typedef struct {
   UINT16                Timeout;\r
 } SMBIOS_TABLE_TYPE23;\r
 \r
+///\r
+/// Hardware Security (Type 24)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 HardwareSecuritySettings;\r
 } SMBIOS_TABLE_TYPE24;\r
 \r
+///\r
+/// System Power Controls (Type 25)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 NextScheduledPowerOnMonth;\r
@@ -388,6 +462,9 @@ typedef struct {
   UINT8                 NextScheduledPowerOnSecond;\r
 } SMBIOS_TABLE_TYPE25;\r
 \r
+///\r
+/// Voltage Probe (Type 26)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Description;\r
@@ -401,6 +478,9 @@ typedef struct {
   UINT16                NominalValue;\r
 } SMBIOS_TABLE_TYPE26;\r
 \r
+///\r
+/// Cooling Device (Type 27)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT16                TemperatureProbeHandle;\r
@@ -410,6 +490,9 @@ typedef struct {
   UINT16                NominalSpeed;\r
 } SMBIOS_TABLE_TYPE27;\r
 \r
+///\r
+/// Temperature Probe (Type 28)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Description;\r
@@ -423,6 +506,9 @@ typedef struct {
   UINT16                NominalValue;\r
 } SMBIOS_TABLE_TYPE28;\r
 \r
+///\r
+/// Electrical Current Probe (Type 29)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Description;\r
@@ -436,12 +522,18 @@ typedef struct {
   UINT16                NominalValue;\r
 } SMBIOS_TABLE_TYPE29;\r
 \r
+///\r
+/// Out-of-Band Remote Access (Type 30)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   ManufacturerName;\r
   UINT8                 Connections;\r
 } SMBIOS_TABLE_TYPE30;\r
 \r
+///\r
+/// Boot Integrity Services (BIS) Entry Point (Type 31)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 Checksum;\r
@@ -453,12 +545,18 @@ typedef struct {
   UINT32                Reserved4;\r
 } SMBIOS_TABLE_TYPE31;\r
 \r
+///\r
+/// System Boot Information (Type 32)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 Reserved[6];\r
   UINT8                 BootStatus[1];\r
 } SMBIOS_TABLE_TYPE32;\r
 \r
+///\r
+/// 64-bit Memory Error Information (Type 33)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 ErrorType;\r
@@ -470,6 +568,9 @@ typedef struct {
   UINT32                ErrorResolution;\r
 } SMBIOS_TABLE_TYPE33;\r
 \r
+///\r
+/// Management Device (Type 34)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Description;\r
@@ -478,6 +579,9 @@ typedef struct {
   UINT8                 AddressType;\r
 } SMBIOS_TABLE_TYPE34;\r
 \r
+///\r
+/// Management Device Component (Type 35)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   SMBIOS_TABLE_STRING   Description;\r
@@ -486,6 +590,9 @@ typedef struct {
   UINT16                ThresholdHandle;\r
 } SMBIOS_TABLE_TYPE35;\r
 \r
+///\r
+/// Management Device Threshold Data (Type 36)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT16                LowerThresholdNonCritical;\r
@@ -501,6 +608,9 @@ typedef struct {
   UINT16                DeviceHandle;\r
 } MEMORY_DEVICE;\r
 \r
+///\r
+/// Memory Channel (Type 37)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 ChannelType;\r
@@ -509,6 +619,9 @@ typedef struct {
   MEMORY_DEVICE         MemoryDevice[1];\r
 } SMBIOS_TABLE_TYPE37;\r
 \r
+///\r
+/// IPMI Device Information (Type 38)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 InterfaceType;\r
@@ -520,6 +633,9 @@ typedef struct {
   UINT8                 InterruptNumber;\r
 } SMBIOS_TABLE_TYPE38;\r
 \r
+///\r
+/// System Power Supply (Type 39)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
   UINT8                 PowerUnitGroup;\r
@@ -537,9 +653,6 @@ typedef struct {
   UINT16                InputCurrentProbeHandle;\r
 } SMBIOS_TABLE_TYPE39;\r
 \r
-//\r
-// Add type 40 and type 41 for smbios 2.6\r
-//\r
 typedef struct {                       \r
   UINT8                   EntryLength; \r
   UINT16                  ReferencedHandle;\r
@@ -548,12 +661,18 @@ typedef struct {
   UINT8                   Value[1];\r
 }ADDITIONAL_INFORMATION_ENTRY;\r
 \r
+///\r
+/// Additional Information (Type 40)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE                      Hdr;\r
   UINT8                                 NumberOfAdditionalInformationEntries;\r
   ADDITIONAL_INFORMATION_ENTRY          AdditionalInfoEntries[1];  \r
 } SMBIOS_TABLE_TYPE40;\r
 \r
+///\r
+/// Onboard Devices Extended Information (Type 41)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE        Hdr;\r
   SMBIOS_TABLE_STRING     ReferenceDesignation;\r
@@ -564,14 +683,23 @@ typedef struct {
   UINT8                   DevFuncNum;  \r
 } SMBIOS_TABLE_TYPE41;\r
 \r
+///\r
+/// Inactive (Type 126)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE   Hdr;\r
 } SMBIOS_TABLE_TYPE126;\r
 \r
+///\r
+/// End-of-Table (Type 127)\r
+///\r
 typedef struct {\r
   SMBIOS_STRUCTURE   Hdr;\r
 } SMBIOS_TABLE_TYPE127;\r
 \r
+///\r
+/// Union of all the possible SMBIOS record types\r
+///\r
 typedef union {\r
   SMBIOS_STRUCTURE      *Hdr;\r
   SMBIOS_TABLE_TYPE0    *Type0;\r
index c4105f258693c83fad1803c4524f6430a629c073..89142c1f85d20d5862c759d784323fd0750275da 100644 (file)
@@ -1,8 +1,7 @@
 /** @file\r
-  This file declares the SMBus definitions defined in SmBus Specifciation\r
-  V2.0.\r
+  This file declares the SMBus definitions defined in SmBus Specifciation V2.0.\r
 \r
-  Copyright (c) 2007, Intel Corporation                                                         \r
+  Copyright (c) 2007 - 2008, Intel Corporation                                                         \r
   All rights reserved. This program and the accompanying materials                          \r
   are licensed and made available under the terms and conditions of the BSD License         \r
   which accompanies this distribution.  The full text of the license may be found at        \r
@@ -11,9 +10,6 @@
   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
 \r
-  @par Revision Reference:\r
-  These definitions are defined in System Management Bus (SmBus) Specification V2.0.\r
-\r
 **/\r
 \r
 #ifndef _SMBUS_H_\r
@@ -35,12 +31,15 @@ typedef struct {
 } EFI_SMBUS_UDID;\r
 \r
 ///\r
-/// Smbus Device Address, Smbus Device Command, Smbus Operations\r
+/// Smbus Device Address\r
 ///\r
 typedef struct {\r
   UINTN SmbusDeviceAddress : 7;\r
 } EFI_SMBUS_DEVICE_ADDRESS;\r
 \r
+///\r
+/// Smbus Operations\r
+///\r
 typedef enum _EFI_SMBUS_OPERATION\r
 {\r
   EfiSmbusQuickRead,\r
index 86eb8e0e1119a4bf4fafee93276ad00450742512..32afb6bc07d264cd4fc9bc2f39f5171f8ef1db68 100644 (file)
@@ -2,7 +2,7 @@
   TPM Specification data structures (TCG TPM Specification Version 1.2 Revision 94)\r
   See http://trustedcomputinggroup.org for latest specification updates\r
 \r
-  Copyright (c) 2006 - 2007, Intel Corporation\r
+  Copyright (c) 2006 - 2008, Intel Corporation\r
   All rights reserved. This program and the accompanying materials                          \r
   are licensed and made available under the terms and conditions of the BSD License         \r
   which accompanies this distribution.  The full text of the license may be found at        \r
@@ -28,7 +28,7 @@
 #pragma pack (1)\r
 \r
 //\r
-// Part 2, section 2.2: Basic types & Helper redefinitions\r
+// Part 2, section 2.2.3: Helper redefinitions\r
 //\r
 typedef UINT8                       TPM_AUTH_DATA_USAGE;\r
 typedef UINT8                       TPM_PAYLOAD_TYPE;\r
@@ -82,7 +82,7 @@ typedef UINT32                      TPM_FAMILY_OPERATION;
 #define TPM_Vendor_Specific8        ((UINT8) 0x80)\r
 \r
 //\r
-// Part 2, section 3.1: Structure TAGs\r
+// Part 2, section 3.1: TPM_STRUCTURE_TAG\r
 //\r
 #define TPM_TAG_CONTEXTBLOB         ((TPM_STRUCTURE_TAG) 0x0001)\r
 #define TPM_TAG_CONTEXT_SENSITIVE   ((TPM_STRUCTURE_TAG) 0x0002)\r
@@ -146,68 +146,68 @@ typedef UINT32                      TPM_FAMILY_OPERATION;
 //\r
 // Part 2, section 4.1: TPM_RESOURCE_TYPE\r
 //\r
-#define TPM_RT_KEY                  ((TPM_RESOURCE_TYPE) 0x00000001) // The handle is a key handle and is the result of a LoadKey type operation\r
-#define TPM_RT_AUTH                 ((TPM_RESOURCE_TYPE) 0x00000002) // The handle is an authorization handle. Auth handles come from TPM_OIAP, TPM_OSAP and TPM_DSAP\r
-#define TPM_RT_HASH                 ((TPM_RESOURCE_TYPE) 0x00000003) // Reserved for hashes\r
-#define TPM_RT_TRANS                ((TPM_RESOURCE_TYPE) 0x00000004) // The handle is for a transport session. Transport handles come from TPM_EstablishTransport\r
-#define TPM_RT_CONTEXT              ((TPM_RESOURCE_TYPE) 0x00000005) // Resource wrapped and held outside the TPM using the context save/restore commands\r
-#define TPM_RT_COUNTER              ((TPM_RESOURCE_TYPE) 0x00000006) // Reserved for counters\r
-#define TPM_RT_DELEGATE             ((TPM_RESOURCE_TYPE) 0x00000007) // The handle is for a delegate row. These are the internal rows held in NV storage by the TPM\r
-#define TPM_RT_DAA_TPM              ((TPM_RESOURCE_TYPE) 0x00000008) // The value is a DAA TPM specific blob\r
-#define TPM_RT_DAA_V0               ((TPM_RESOURCE_TYPE) 0x00000009) // The value is a DAA V0 parameter\r
-#define TPM_RT_DAA_V1               ((TPM_RESOURCE_TYPE) 0x0000000A) // The value is a DAA V1 parameter\r
+#define TPM_RT_KEY                  ((TPM_RESOURCE_TYPE) 0x00000001) ///< The handle is a key handle and is the result of a LoadKey type operation\r
+#define TPM_RT_AUTH                 ((TPM_RESOURCE_TYPE) 0x00000002) ///< The handle is an authorization handle. Auth handles come from TPM_OIAP, TPM_OSAP and TPM_DSAP\r
+#define TPM_RT_HASH                 ((TPM_RESOURCE_TYPE) 0x00000003) ///< Reserved for hashes\r
+#define TPM_RT_TRANS                ((TPM_RESOURCE_TYPE) 0x00000004) ///< The handle is for a transport session. Transport handles come from TPM_EstablishTransport\r
+#define TPM_RT_CONTEXT              ((TPM_RESOURCE_TYPE) 0x00000005) ///< Resource wrapped and held outside the TPM using the context save/restore commands\r
+#define TPM_RT_COUNTER              ((TPM_RESOURCE_TYPE) 0x00000006) ///< Reserved for counters\r
+#define TPM_RT_DELEGATE             ((TPM_RESOURCE_TYPE) 0x00000007) ///< The handle is for a delegate row. These are the internal rows held in NV storage by the TPM\r
+#define TPM_RT_DAA_TPM              ((TPM_RESOURCE_TYPE) 0x00000008) ///< The value is a DAA TPM specific blob\r
+#define TPM_RT_DAA_V0               ((TPM_RESOURCE_TYPE) 0x00000009) ///< The value is a DAA V0 parameter\r
+#define TPM_RT_DAA_V1               ((TPM_RESOURCE_TYPE) 0x0000000A) ///< The value is a DAA V1 parameter\r
 \r
 //\r
 // Part 2, section 4.2: TPM_PAYLOAD_TYPE\r
 //\r
-#define TPM_PT_ASYM                 ((TPM_PAYLOAD_TYPE) 0x01) // The entity is an asymmetric key\r
-#define TPM_PT_BIND                 ((TPM_PAYLOAD_TYPE) 0x02) // The entity is bound data\r
-#define TPM_PT_MIGRATE              ((TPM_PAYLOAD_TYPE) 0x03) // The entity is a migration blob\r
-#define TPM_PT_MAINT                ((TPM_PAYLOAD_TYPE) 0x04) // The entity is a maintenance blob\r
-#define TPM_PT_SEAL                 ((TPM_PAYLOAD_TYPE) 0x05) // The entity is sealed data\r
-#define TPM_PT_MIGRATE_RESTRICTED   ((TPM_PAYLOAD_TYPE) 0x06) // The entity is a restricted-migration asymmetric key\r
-#define TPM_PT_MIGRATE_EXTERNAL     ((TPM_PAYLOAD_TYPE) 0x07) // The entity is a external migratable key\r
-#define TPM_PT_CMK_MIGRATE          ((TPM_PAYLOAD_TYPE) 0x08) // The entity is a CMK migratable blob\r
-#define TPM_PT_VENDOR_SPECIFIC      ((TPM_PAYLOAD_TYPE) 0x80) // 0x80 - 0xFF Vendor specific payloads\r
-\r
-//\r
-// Part 2, section 4.3: TPM_ENTIRY_TYPE\r
-//\r
-#define TPM_ET_KEYHANDLE            ((UINT16) 0x0001) // The entity is a keyHandle or key\r
-#define TPM_ET_OWNER                ((UINT16) 0x0002) // The entity is the TPM Owner\r
-#define TPM_ET_DATA                 ((UINT16) 0x0003) // The entity is some data\r
-#define TPM_ET_SRK                  ((UINT16) 0x0004) // The entity is the SRK\r
-#define TPM_ET_KEY                  ((UINT16) 0x0005) // The entity is a key or keyHandle\r
-#define TPM_ET_REVOKE               ((UINT16) 0x0006) // The entity is the RevokeTrust value\r
-#define TPM_ET_DEL_OWNER_BLOB       ((UINT16) 0x0007) // The entity is a delegate owner blob\r
-#define TPM_ET_DEL_ROW              ((UINT16) 0x0008) // The entity is a delegate row\r
-#define TPM_ET_DEL_KEY_BLOB         ((UINT16) 0x0009) // The entity is a delegate key blob\r
-#define TPM_ET_COUNTER              ((UINT16) 0x000A) // The entity is a counter\r
-#define TPM_ET_NV                   ((UINT16) 0x000B) // The entity is a NV index\r
-#define TPM_ET_RESERVED_HANDLE      ((UINT16) 0x0040) // Reserved. This value avoids collisions with the handle MSB setting.\r
+#define TPM_PT_ASYM                 ((TPM_PAYLOAD_TYPE) 0x01) ///< The entity is an asymmetric key\r
+#define TPM_PT_BIND                 ((TPM_PAYLOAD_TYPE) 0x02) ///< The entity is bound data\r
+#define TPM_PT_MIGRATE              ((TPM_PAYLOAD_TYPE) 0x03) ///< The entity is a migration blob\r
+#define TPM_PT_MAINT                ((TPM_PAYLOAD_TYPE) 0x04) ///< The entity is a maintenance blob\r
+#define TPM_PT_SEAL                 ((TPM_PAYLOAD_TYPE) 0x05) ///< The entity is sealed data\r
+#define TPM_PT_MIGRATE_RESTRICTED   ((TPM_PAYLOAD_TYPE) 0x06) ///< The entity is a restricted-migration asymmetric key\r
+#define TPM_PT_MIGRATE_EXTERNAL     ((TPM_PAYLOAD_TYPE) 0x07) ///< The entity is a external migratable key\r
+#define TPM_PT_CMK_MIGRATE          ((TPM_PAYLOAD_TYPE) 0x08) ///< The entity is a CMK migratable blob\r
+#define TPM_PT_VENDOR_SPECIFIC      ((TPM_PAYLOAD_TYPE) 0x80) ///< 0x80 - 0xFF Vendor specific payloads\r
+\r
+//\r
+// Part 2, section 4.3: TPM_ENTITY_TYPE\r
+//\r
+#define TPM_ET_KEYHANDLE            ((UINT16) 0x0001) ///< The entity is a keyHandle or key\r
+#define TPM_ET_OWNER                ((UINT16) 0x0002) ///< The entity is the TPM Owner\r
+#define TPM_ET_DATA                 ((UINT16) 0x0003) ///< The entity is some data\r
+#define TPM_ET_SRK                  ((UINT16) 0x0004) ///< The entity is the SRK\r
+#define TPM_ET_KEY                  ((UINT16) 0x0005) ///< The entity is a key or keyHandle\r
+#define TPM_ET_REVOKE               ((UINT16) 0x0006) ///< The entity is the RevokeTrust value\r
+#define TPM_ET_DEL_OWNER_BLOB       ((UINT16) 0x0007) ///< The entity is a delegate owner blob\r
+#define TPM_ET_DEL_ROW              ((UINT16) 0x0008) ///< The entity is a delegate row\r
+#define TPM_ET_DEL_KEY_BLOB         ((UINT16) 0x0009) ///< The entity is a delegate key blob\r
+#define TPM_ET_COUNTER              ((UINT16) 0x000A) ///< The entity is a counter\r
+#define TPM_ET_NV                   ((UINT16) 0x000B) ///< The entity is a NV index\r
+#define TPM_ET_RESERVED_HANDLE      ((UINT16) 0x0040) ///< Reserved. This value avoids collisions with the handle MSB setting.\r
 //\r
 // TPM_ENTITY_TYPE MSB Values: The MSB is used to indicate the ADIP encryption sheme when applicable\r
 //\r
-#define TPM_ET_XOR                  ((UINT16) 0x0000) // ADIP encryption scheme: XOR\r
-#define TPM_ET_AES128               ((UINT16) 0x0006) // ADIP encryption scheme: AES 128 bits\r
+#define TPM_ET_XOR                  ((UINT16) 0x0000) ///< ADIP encryption scheme: XOR\r
+#define TPM_ET_AES128               ((UINT16) 0x0006) ///< ADIP encryption scheme: AES 128 bits\r
 \r
 //\r
 // Part 2, section 4.4.1: Reserved Key Handles\r
 //\r
-#define TPM_KH_SRK                  ((TPM_KEY_HANDLE) 0x40000000) // The handle points to the SRK\r
-#define TPM_KH_OWNER                ((TPM_KEY_HANDLE) 0x40000001) // The handle points to the TPM Owner\r
-#define TPM_KH_REVOKE               ((TPM_KEY_HANDLE) 0x40000002) // The handle points to the RevokeTrust value\r
-#define TPM_KH_TRANSPORT            ((TPM_KEY_HANDLE) 0x40000003) // The handle points to the EstablishTransport static authorization\r
-#define TPM_KH_OPERATOR             ((TPM_KEY_HANDLE) 0x40000004) // The handle points to the Operator auth\r
-#define TPM_KH_ADMIN                ((TPM_KEY_HANDLE) 0x40000005) // The handle points to the delegation administration auth\r
-#define TPM_KH_EK                   ((TPM_KEY_HANDLE) 0x40000006) // The handle points to the PUBEK, only usable with TPM_OwnerReadInternalPub\r
+#define TPM_KH_SRK                  ((TPM_KEY_HANDLE) 0x40000000) ///< The handle points to the SRK\r
+#define TPM_KH_OWNER                ((TPM_KEY_HANDLE) 0x40000001) ///< The handle points to the TPM Owner\r
+#define TPM_KH_REVOKE               ((TPM_KEY_HANDLE) 0x40000002) ///< The handle points to the RevokeTrust value\r
+#define TPM_KH_TRANSPORT            ((TPM_KEY_HANDLE) 0x40000003) ///< The handle points to the EstablishTransport static authorization\r
+#define TPM_KH_OPERATOR             ((TPM_KEY_HANDLE) 0x40000004) ///< The handle points to the Operator auth\r
+#define TPM_KH_ADMIN                ((TPM_KEY_HANDLE) 0x40000005) ///< The handle points to the delegation administration auth\r
+#define TPM_KH_EK                   ((TPM_KEY_HANDLE) 0x40000006) ///< The handle points to the PUBEK, only usable with TPM_OwnerReadInternalPub\r
 \r
 //\r
 // Part 2, section 4.5: TPM_STARTUP_TYPE\r
 //\r
-#define TPM_ST_CLEAR                ((TPM_STARTUP_TYPE) 0x0001) // The TPM is starting up from a clean state\r
-#define TPM_ST_STATE                ((TPM_STARTUP_TYPE) 0x0002) // The TPM is starting up from a saved state\r
-#define TPM_ST_DEACTIVATED          ((TPM_STARTUP_TYPE) 0x0003) // The TPM is to startup and set the deactivated flag to TRUE\r
+#define TPM_ST_CLEAR                ((TPM_STARTUP_TYPE) 0x0001) ///< The TPM is starting up from a clean state\r
+#define TPM_ST_STATE                ((TPM_STARTUP_TYPE) 0x0002) ///< The TPM is starting up from a saved state\r
+#define TPM_ST_DEACTIVATED          ((TPM_STARTUP_TYPE) 0x0003) ///< The TPM is to startup and set the deactivated flag to TRUE\r
 \r
 //\r
 // Part 2, section 4.6: TPM_STATUP_EFFECTS\r
@@ -217,65 +217,65 @@ typedef UINT32                      TPM_FAMILY_OPERATION;
 //\r
 // Part 2, section 4.7: TPM_PROTOCOL_ID\r
 //\r
-#define TPM_PID_OIAP                ((TPM_PROTOCOL_ID) 0x0001) // The OIAP protocol.\r
-#define TPM_PID_OSAP                ((TPM_PROTOCOL_ID) 0x0002) // The OSAP protocol.\r
-#define TPM_PID_ADIP                ((TPM_PROTOCOL_ID) 0x0003) // The ADIP protocol.\r
-#define TPM_PID_ADCP                ((TPM_PROTOCOL_ID) 0x0004) // The ADCP protocol.\r
-#define TPM_PID_OWNER               ((TPM_PROTOCOL_ID) 0x0005) // The protocol for taking ownership of a TPM.\r
-#define TPM_PID_DSAP                ((TPM_PROTOCOL_ID) 0x0006) // The DSAP protocol\r
-#define TPM_PID_TRANSPORT           ((TPM_PROTOCOL_ID) 0x0007) // The transport protocol\r
+#define TPM_PID_OIAP                ((TPM_PROTOCOL_ID) 0x0001) ///< The OIAP protocol.\r
+#define TPM_PID_OSAP                ((TPM_PROTOCOL_ID) 0x0002) ///< The OSAP protocol.\r
+#define TPM_PID_ADIP                ((TPM_PROTOCOL_ID) 0x0003) ///< The ADIP protocol.\r
+#define TPM_PID_ADCP                ((TPM_PROTOCOL_ID) 0x0004) ///< The ADCP protocol.\r
+#define TPM_PID_OWNER               ((TPM_PROTOCOL_ID) 0x0005) ///< The protocol for taking ownership of a TPM.\r
+#define TPM_PID_DSAP                ((TPM_PROTOCOL_ID) 0x0006) ///< The DSAP protocol\r
+#define TPM_PID_TRANSPORT           ((TPM_PROTOCOL_ID) 0x0007) ///< The transport protocol\r
 \r
 //\r
 // Part 2, section 4.8: TPM_ALGORITHM_ID\r
 //   The TPM MUST support the algorithms TPM_ALG_RSA, TPM_ALG_SHA, TPM_ALG_HMAC,\r
 //   TPM_ALG_MGF1\r
 //\r
-#define TPM_ALG_RSA                 ((TPM_ALGORITHM_ID) 0x00000001) // The RSA algorithm.\r
-#define TPM_ALG_DES                 ((TPM_ALGORITHM_ID) 0x00000002) // The DES algorithm\r
-#define TPM_ALG_3DES                ((TPM_ALGORITHM_ID) 0x00000003) // The 3DES algorithm in EDE mode\r
-#define TPM_ALG_SHA                 ((TPM_ALGORITHM_ID) 0x00000004) // The SHA1 algorithm\r
-#define TPM_ALG_HMAC                ((TPM_ALGORITHM_ID) 0x00000005) // The RFC 2104 HMAC algorithm\r
-#define TPM_ALG_AES128              ((TPM_ALGORITHM_ID) 0x00000006) // The AES algorithm, key size 128\r
-#define TPM_ALG_MGF1                ((TPM_ALGORITHM_ID) 0x00000007) // The XOR algorithm using MGF1 to create a string the size of the encrypted block\r
-#define TPM_ALG_AES192              ((TPM_ALGORITHM_ID) 0x00000008) // AES, key size 192\r
-#define TPM_ALG_AES256              ((TPM_ALGORITHM_ID) 0x00000009) // AES, key size 256\r
-#define TPM_ALG_XOR                 ((TPM_ALGORITHM_ID) 0x0000000A) // XOR using the rolling nonces\r
+#define TPM_ALG_RSA                 ((TPM_ALGORITHM_ID) 0x00000001) ///< The RSA algorithm.\r
+#define TPM_ALG_DES                 ((TPM_ALGORITHM_ID) 0x00000002) ///< The DES algorithm\r
+#define TPM_ALG_3DES                ((TPM_ALGORITHM_ID) 0x00000003) ///< The 3DES algorithm in EDE mode\r
+#define TPM_ALG_SHA                 ((TPM_ALGORITHM_ID) 0x00000004) ///< The SHA1 algorithm\r
+#define TPM_ALG_HMAC                ((TPM_ALGORITHM_ID) 0x00000005) ///< The RFC 2104 HMAC algorithm\r
+#define TPM_ALG_AES128              ((TPM_ALGORITHM_ID) 0x00000006) ///< The AES algorithm, key size 128\r
+#define TPM_ALG_MGF1                ((TPM_ALGORITHM_ID) 0x00000007) ///< The XOR algorithm using MGF1 to create a string the size of the encrypted block\r
+#define TPM_ALG_AES192              ((TPM_ALGORITHM_ID) 0x00000008) ///< AES, key size 192\r
+#define TPM_ALG_AES256              ((TPM_ALGORITHM_ID) 0x00000009) ///< AES, key size 256\r
+#define TPM_ALG_XOR                 ((TPM_ALGORITHM_ID) 0x0000000A) ///< XOR using the rolling nonces\r
 \r
 //\r
 // Part 2, section 4.9: TPM_PHYSICAL_PRESENCE\r
 //\r
-#define TPM_PHYSICAL_PRESENCE_HW_DISABLE    ((TPM_PHYSICAL_PRESENCE) 0x0200) // Sets the physicalPresenceHWEnable to FALSE\r
-#define TPM_PHYSICAL_PRESENCE_CMD_DISABLE   ((TPM_PHYSICAL_PRESENCE) 0x0100) // Sets the physicalPresenceCMDEnable to FALSE\r
-#define TPM_PHYSICAL_PRESENCE_LIFETIME_LOCK ((TPM_PHYSICAL_PRESENCE) 0x0080) // Sets the physicalPresenceLifetimeLock to TRUE\r
-#define TPM_PHYSICAL_PRESENCE_HW_ENABLE     ((TPM_PHYSICAL_PRESENCE) 0x0040) // Sets the physicalPresenceHWEnable to TRUE\r
-#define TPM_PHYSICAL_PRESENCE_CMD_ENABLE    ((TPM_PHYSICAL_PRESENCE) 0x0020) // Sets the physicalPresenceCMDEnable to TRUE\r
-#define TPM_PHYSICAL_PRESENCE_NOTPRESENT    ((TPM_PHYSICAL_PRESENCE) 0x0010) // Sets PhysicalPresence = FALSE\r
-#define TPM_PHYSICAL_PRESENCE_PRESENT       ((TPM_PHYSICAL_PRESENCE) 0x0008) // Sets PhysicalPresence = TRUE\r
-#define TPM_PHYSICAL_PRESENCE_LOCK          ((TPM_PHYSICAL_PRESENCE) 0x0004) // Sets PhysicalPresenceLock = TRUE\r
+#define TPM_PHYSICAL_PRESENCE_HW_DISABLE    ((TPM_PHYSICAL_PRESENCE) 0x0200) ///< Sets the physicalPresenceHWEnable to FALSE\r
+#define TPM_PHYSICAL_PRESENCE_CMD_DISABLE   ((TPM_PHYSICAL_PRESENCE) 0x0100) ///< Sets the physicalPresenceCMDEnable to FALSE\r
+#define TPM_PHYSICAL_PRESENCE_LIFETIME_LOCK ((TPM_PHYSICAL_PRESENCE) 0x0080) ///< Sets the physicalPresenceLifetimeLock to TRUE\r
+#define TPM_PHYSICAL_PRESENCE_HW_ENABLE     ((TPM_PHYSICAL_PRESENCE) 0x0040) ///< Sets the physicalPresenceHWEnable to TRUE\r
+#define TPM_PHYSICAL_PRESENCE_CMD_ENABLE    ((TPM_PHYSICAL_PRESENCE) 0x0020) ///< Sets the physicalPresenceCMDEnable to TRUE\r
+#define TPM_PHYSICAL_PRESENCE_NOTPRESENT    ((TPM_PHYSICAL_PRESENCE) 0x0010) ///< Sets PhysicalPresence = FALSE\r
+#define TPM_PHYSICAL_PRESENCE_PRESENT       ((TPM_PHYSICAL_PRESENCE) 0x0008) ///< Sets PhysicalPresence = TRUE\r
+#define TPM_PHYSICAL_PRESENCE_LOCK          ((TPM_PHYSICAL_PRESENCE) 0x0004) ///< Sets PhysicalPresenceLock = TRUE\r
 \r
 //\r
 // Part 2, section 4.10: TPM_MIGRATE_SCHEME\r
 //\r
-#define TPM_MS_MIGRATE                      ((TPM_MIGRATE_SCHEME) 0x0001) // A public key that can be used with all TPM migration commands other than 'ReWrap' mode.\r
-#define TPM_MS_REWRAP                       ((TPM_MIGRATE_SCHEME) 0x0002) // A public key that can be used for the ReWrap mode of TPM_CreateMigrationBlob.\r
-#define TPM_MS_MAINT                        ((TPM_MIGRATE_SCHEME) 0x0003) // A public key that can be used for the Maintenance commands\r
-#define TPM_MS_RESTRICT_MIGRATE             ((TPM_MIGRATE_SCHEME) 0x0004) // The key is to be migrated to a Migration Authority.\r
-#define TPM_MS_RESTRICT_APPROVE_DOUBLE      ((TPM_MIGRATE_SCHEME) 0x0005) // The key is to be migrated to an entity approved by a Migration Authority using double wrapping\r
+#define TPM_MS_MIGRATE                      ((TPM_MIGRATE_SCHEME) 0x0001) ///< A public key that can be used with all TPM migration commands other than 'ReWrap' mode.\r
+#define TPM_MS_REWRAP                       ((TPM_MIGRATE_SCHEME) 0x0002) ///< A public key that can be used for the ReWrap mode of TPM_CreateMigrationBlob.\r
+#define TPM_MS_MAINT                        ((TPM_MIGRATE_SCHEME) 0x0003) ///< A public key that can be used for the Maintenance commands\r
+#define TPM_MS_RESTRICT_MIGRATE             ((TPM_MIGRATE_SCHEME) 0x0004) ///< The key is to be migrated to a Migration Authority.\r
+#define TPM_MS_RESTRICT_APPROVE_DOUBLE      ((TPM_MIGRATE_SCHEME) 0x0005) ///< The key is to be migrated to an entity approved by a Migration Authority using double wrapping\r
 \r
 //\r
 // Part 2, section 4.11: TPM_EK_TYPE\r
 //\r
-#define TPM_EK_TYPE_ACTIVATE        ((TPM_EK_TYPE) 0x0001) // The blob MUST be TPM_EK_BLOB_ACTIVATE\r
-#define TPM_EK_TYPE_AUTH            ((TPM_EK_TYPE) 0x0002) // The blob MUST be TPM_EK_BLOB_AUTH\r
+#define TPM_EK_TYPE_ACTIVATE        ((TPM_EK_TYPE) 0x0001) ///< The blob MUST be TPM_EK_BLOB_ACTIVATE\r
+#define TPM_EK_TYPE_AUTH            ((TPM_EK_TYPE) 0x0002) ///< The blob MUST be TPM_EK_BLOB_AUTH\r
 \r
 //\r
 // Part 2, section 4.12: TPM_PLATFORM_SPECIFIC\r
 //\r
-#define TPM_PS_PC_11                ((TPM_PLATFORM_SPECIFIC) 0x0001) // PC Specific version 1.1\r
-#define TPM_PS_PC_12                ((TPM_PLATFORM_SPECIFIC) 0x0002) // PC Specific version 1.2\r
-#define TPM_PS_PDA_12               ((TPM_PLATFORM_SPECIFIC) 0x0003) // PDA Specific version 1.2\r
-#define TPM_PS_Server_12            ((TPM_PLATFORM_SPECIFIC) 0x0004) // Server Specific version 1.2\r
-#define TPM_PS_Mobile_12            ((TPM_PLATFORM_SPECIFIC) 0x0005) // Mobil Specific version 1.2\r
+#define TPM_PS_PC_11                ((TPM_PLATFORM_SPECIFIC) 0x0001) ///< PC Specific version 1.1\r
+#define TPM_PS_PC_12                ((TPM_PLATFORM_SPECIFIC) 0x0002) ///< PC Specific version 1.2\r
+#define TPM_PS_PDA_12               ((TPM_PLATFORM_SPECIFIC) 0x0003) ///< PDA Specific version 1.2\r
+#define TPM_PS_Server_12            ((TPM_PLATFORM_SPECIFIC) 0x0004) ///< Server Specific version 1.2\r
+#define TPM_PS_Mobile_12            ((TPM_PLATFORM_SPECIFIC) 0x0005) ///< Mobil Specific version 1.2\r
 \r
 //\r
 // Part 2, section 5: Basic Structures\r
@@ -311,14 +311,14 @@ typedef struct tdTPM_DIGEST{
   UINT8                             digest[TPM_SHA1_160_HASH_LEN];\r
 } TPM_DIGEST;\r
 \r
-typedef TPM_DIGEST                  TPM_CHOSENID_HASH; // This SHALL be the digest of the chosen identityLabel and privacyCA for a new TPM identity.\r
-typedef TPM_DIGEST                  TPM_COMPOSITE_HASH; // This SHALL be the hash of a list of PCR indexes and PCR values that a key or data is bound to.\r
-typedef TPM_DIGEST                  TPM_DIRVALUE; // This SHALL be the value of a DIR register\r
+typedef TPM_DIGEST                  TPM_CHOSENID_HASH;\r
+typedef TPM_DIGEST                  TPM_COMPOSITE_HASH;\r
+typedef TPM_DIGEST                  TPM_DIRVALUE;\r
 typedef TPM_DIGEST                  TPM_HMAC;\r
-typedef TPM_DIGEST                  TPM_PCRVALUE; // The value inside of the PCR\r
-typedef TPM_DIGEST                  TPM_AUDITDIGEST; // This SHALL be the value of the current internal audit state\r
-typedef TPM_DIGEST                  TPM_DAA_TPM_SEED; // This SHALL be a random value generated by a TPM immediately after the EK is installed in that TPM, whenever an EK is installed in that TPM\r
-typedef TPM_DIGEST                  TPM_DAA_CONTEXT_SEED; // This SHALL be a random value\r
+typedef TPM_DIGEST                  TPM_PCRVALUE;\r
+typedef TPM_DIGEST                  TPM_AUDITDIGEST;\r
+typedef TPM_DIGEST                  TPM_DAA_TPM_SEED;\r
+typedef TPM_DIGEST                  TPM_DAA_CONTEXT_SEED;\r
 \r
 //\r
 // Part 2, section 5.5: TPM_NONCE\r
@@ -347,41 +347,48 @@ typedef struct tdTPM_KEY_HANDLE_LIST {
 //\r
 // Part 2, section 5.8: TPM_KEY_USAGE values\r
 //\r
-\r
+///\r
+/// TPM_KEY_SIGNING SHALL indicate a signing key. The [private] key SHALL be\r
+/// used for signing operations, only. This means that it MUST be a leaf of the\r
+/// Protected Storage key hierarchy.\r
+///\r
 #define TPM_KEY_SIGNING             ((UINT16) 0x0010)\r
-// TPM_KEY_SIGNING SHALL indicate a signing key. The [private] key SHALL be\r
-// used for signing operations, only. This means that it MUST be a leaf of the\r
-// Protected Storage key hierarchy.\r
-\r
+///\r
+/// TPM_KEY_STORAGE SHALL indicate a storage key. The key SHALL be used to wrap\r
+/// and unwrap other keys in the Protected Storage hierarchy\r
+///\r
 #define TPM_KEY_STORAGE             ((UINT16) 0x0011)\r
-// TPM_KEY_STORAGE SHALL indicate a storage key. The key SHALL be used to wrap\r
-// and unwrap other keys in the Protected Storage hierarchy\r
-\r
+///\r
+/// TPM_KEY_IDENTITY SHALL indicate an identity key. The key SHALL be used for\r
+/// operations that require a TPM identity, only.\r
+///\r
 #define TPM_KEY_IDENTITY            ((UINT16) 0x0012)\r
-// TPM_KEY_IDENTITY SHALL indicate an identity key. The key SHALL be used for\r
-// operations that require a TPM identity, only.\r
-\r
+///\r
+/// TPM_KEY_AUTHCHANGE SHALL indicate an ephemeral key that is in use during\r
+/// the ChangeAuthAsym process, only.\r
+///\r
 #define TPM_KEY_AUTHCHANGE          ((UINT16) 0x0013)\r
-// TPM_KEY_AUTHCHANGE SHALL indicate an ephemeral key that is in use during\r
-// the ChangeAuthAsym process, only.\r
-\r
+///\r
+/// TPM_KEY_BIND SHALL indicate a key that can be used for TPM_Bind and\r
+/// TPM_Unbind operations only.\r
+///\r
 #define TPM_KEY_BIND                ((UINT16) 0x0014)\r
-// TPM_KEY_BIND SHALL indicate a key that can be used for TPM_Bind and\r
-// TPM_Unbind operations only.\r
-\r
+///\r
+/// TPM_KEY_LEGACY SHALL indicate a key that can perform signing and binding\r
+/// operations. The key MAY be used for both signing and binding operations.\r
+/// The TPM_KEY_LEGACY key type is to allow for use by applications where both\r
+/// signing and encryption operations occur with the same key. The use of this\r
+/// key type is not recommended TPM_KEY_MIGRATE 0x0016 This SHALL indicate a\r
+/// key in use for TPM_MigrateKey\r
+///\r
 #define TPM_KEY_LEGACY              ((UINT16) 0x0015)\r
-// TPM_KEY_LEGACY SHALL indicate a key that can perform signing and binding\r
-// operations. The key MAY be used for both signing and binding operations.\r
-// The TPM_KEY_LEGACY key type is to allow for use by applications where both\r
-// signing and encryption operations occur with the same key. The use of this\r
-// key type is not recommended TPM_KEY_MIGRATE 0x0016 This SHALL indicate a\r
-// key in use for TPM_MigrateKey\r
-\r
+///\r
+/// TPM_KEY_MIGRAGE SHALL indicate a key in use for TPM_MigrateKey\r
+///\r
 #define TPM_KEY_MIGRATE             ((UINT16) 0x0016)\r
-// TPM_KEY_MIGRAGE SHALL indicate a key in use for TPM_MigrateKey\r
 \r
 //\r
-// Part 2, section 5.8.1: Encryption/Signature schemes\r
+// Part 2, section 5.8.1: Mandatory Key Usage Schemes\r
 //\r
 \r
 #define TPM_ES_NONE                 ((TPM_ENC_SCHEME) 0x0001)\r
@@ -503,11 +510,11 @@ typedef struct tdTPM_CMK_AUTH{
 //\r
 // Part 2, section 5.17: TPM_CMK_DELEGATE\r
 //\r
-#define TPM_CMK_DELEGATE_SIGNING    (((TPM_CMK_DELEGATE)1) << 31)\r
-#define TPM_CMK_DELEGATE_STORAGE    (((TPM_CMK_DELEGATE)1) << 30)\r
-#define TPM_CMK_DELEGATE_BIND       (((TPM_CMK_DELEGATE)1) << 29)\r
-#define TPM_CMK_DELEGATE_LEGACY     (((TPM_CMK_DELEGATE)1) << 28)\r
-#define TPM_CMK_DELEGATE_MIGRATE    (((TPM_CMK_DELEGATE)1) << 27)\r
+#define TPM_CMK_DELEGATE_SIGNING    ((TPM_CMK_DELEGATE) BIT31)\r
+#define TPM_CMK_DELEGATE_STORAGE    ((TPM_CMK_DELEGATE) BIT30)\r
+#define TPM_CMK_DELEGATE_BIND       ((TPM_CMK_DELEGATE) BIT29)\r
+#define TPM_CMK_DELEGATE_LEGACY     ((TPM_CMK_DELEGATE) BIT28)\r
+#define TPM_CMK_DELEGATE_MIGRATE    ((TPM_CMK_DELEGATE) BIT27)\r
 \r
 //\r
 // Part 2, section 5.18: TPM_SELECT_SIZE\r
@@ -581,7 +588,7 @@ typedef struct tdTPM_PERMANENT_FLAGS{
 } TPM_PERMANENT_FLAGS;\r
 \r
 //\r
-// Part 2, section 7.1.1: PERMANENT_FLAGS Subcap for SetCapability\r
+// Part 2, section 7.1.1: Flag Restrictions (of TPM_PERMANENT_FLAGS)\r
 //\r
 #define TPM_PF_DISABLE                      ((TPM_CAPABILITY_AREA) 1)\r
 #define TPM_PF_OWNERSHIP                    ((TPM_CAPABILITY_AREA) 2)\r
@@ -616,7 +623,7 @@ typedef struct tdTPM_STCLEAR_FLAGS{
 } TPM_STCLEAR_FLAGS;\r
 \r
 //\r
-// Part 2, section 7.2.1: STCLEAR_FLAGS Subcap for SetCapability\r
+// Part 2, section 7.2.1: Flag Restrictions (of TPM_STCLEAR_FLAGS)\r
 //\r
 #define TPM_SF_DEACTIVATED          ((TPM_CAPABILITY_AREA) 1)\r
 #define TPM_SF_DISABLEFORCECLEAR    ((TPM_CAPABILITY_AREA) 2)\r
@@ -636,7 +643,7 @@ typedef struct tdTPM_STANY_FLAGS{
 } TPM_STANY_FLAGS;\r
 \r
 //\r
-// Part 2, section 7.3.1: STANY_FLAGS Subcap for SetCapability\r
+// Part 2, section 7.3.1: Flag Restrictions (of TPM_STANY_FLAGS)\r
 //\r
 #define TPM_AF_POSTINITIALISE       ((TPM_CAPABILITY_AREA) 1)\r
 #define TPM_AF_LOCALITYMODIFIER     ((TPM_CAPABILITY_AREA) 2)\r
@@ -644,71 +651,9 @@ typedef struct tdTPM_STANY_FLAGS{
 #define TPM_AF_TOSPRESENT           ((TPM_CAPABILITY_AREA) 4)\r
 \r
 //\r
-// All those structures (section 7.4, 7.5, 7.6) are not normative and \r
+// All those structures defined in section 7.4, 7.5, 7.6 are not normative and \r
 // thus no definitions here\r
 //\r
-// Part 2, section 7.4: TPM_PERMANENT_DATA\r
-//\r
-//#define TPM_MIN_COUNTERS            4   // the minimum number of counters is 4\r
-//#define TPM_DELEGATE_KEY            TPM_KEY\r
-//#define TPM_NUM_PCR                 16\r
-//#define TPM_MAX_NV_WRITE_NOOWNER    64\r
-//typedef struct tdTPM_PERMANENT_DATA\r
-//{\r
-//    TPM_STRUCTURE_TAG               tag;\r
-//    UINT8                           revMajor;\r
-//    UINT8                           revMinor;\r
-//    TPM_NONCE                       tpmProof;\r
-//    TPM_NONCE                       ekReset;\r
-//    TPM_SECRET                      ownerAuth;\r
-//    TPM_SECRET                      operatorAuth;\r
-//    TPM_DIRVALUE                    authDIR[1];\r
-//    TPM_PUBKEY                      manuMaintPub;\r
-//    TPM_KEY                         endorsementKey;\r
-//    TPM_KEY                         srk;\r
-//    TPM_KEY                         contextKey;\r
-//    TPM_KEY                         delegateKey;\r
-//    TPM_COUNTER_VALUE               auditMonotonicCounter;\r
-//    TPM_COUNTER_VALUE               monitonicCounter[TPM_MIN_COUNTERS];\r
-//    TPM_PCR_ATTRIBUTES              pcrAttrib[TPM_NUM_PCR];\r
-//    UINT8                           ordinalAuditStatus[];\r
-//    UINT8                           *rngState;\r
-//    TPM_FAMILY_TABLE                familyTable;\r
-//    TPM_DELEGATE_TABLE              delegateTable;\r
-//    UINT32                          maxNVBufSize;\r
-//    UINT32                          lastFamilyID;\r
-//    UINT32                          noOwnerNVWrite;\r
-//    TPM_CMK_DELEGATE                restrictDelegate;\r
-//    TPM_DAA_TPM_SEED                tpmDAASeed;\r
-//} TPM_PERMANENT_DATA;\r
-\r
-//\r
-// Part 2, section 7.5: TPM_STCLEAR_DATA\r
-//   available inside TPM only\r
-//\r
-//typedef struct tdTPM_STCLEAR_DATA\r
-//{\r
-//    TPM_STRUCTURE_TAG               tag;\r
-//    TPM_NONCE                       contextNonceKey;\r
-//    TPM_COUNT_ID                    countID;\r
-//    UINT32                          ownerReference;\r
-//    BOOLEAN                         disableResetLock;\r
-//} TPM_STCLEAR_DATA;\r
-\r
-//\r
-// Part 2, section 7.6: TPM_STANY_DATA\r
-//   available inside TPM only\r
-//\r
-//typedef struct tdTPM_STANY_DATA\r
-//{\r
-//    TPM_STRUCTURE_TAG               tag;\r
-//    TPM_NONCE                       contextNonceSession;\r
-//    TPM_DIGEST                      auditDigest;\r
-//    TPM_CURRENT_TICKS               currentTicks;\r
-//    UINT32                          contextCount;\r
-//    UINT32                          contextList[TPM_MIN_SESSION_LIST];\r
-//    TPM_SESSION_DATA                sessions[TPM_MIN_SESSIONS];\r
-//} TPM_STANY_DATA;\r
 \r
 //\r
 // Part 2, section 8: PCR Structures\r
@@ -852,6 +797,10 @@ typedef struct tdTPM_BOUND_DATA {
 // Part 2 section 10: TPM_KEY complex\r
 // \r
 \r
+//\r
+// Section 10.1, 10.4, and 10.5 have been defined previously\r
+//\r
+\r
 //\r
 // Part 2, section 10.2: TPM_KEY\r
 //   [size_is(encDataSize)] BYTE* encData;\r
@@ -928,130 +877,154 @@ typedef struct tdTPM_MIGRATE_ASYMKEY {              // pos  len  total
 // Part 2, section 11: Signed Structures\r
 //\r
 \r
-typedef struct tdTPM_CERTIFY_INFO                           \r
-{\r
-    TPM_STRUCT_VER                  version;\r
-    TPM_KEY_USAGE                   keyUsage;\r
-    TPM_KEY_FLAGS                   keyFlags;\r
-    TPM_AUTH_DATA_USAGE             authDataUsage;\r
-    TPM_KEY_PARMS                   algorithmParms;\r
-    TPM_DIGEST                      pubkeyDigest;\r
-    TPM_NONCE                       data;\r
-    BOOLEAN                         parentPCRStatus;\r
-    UINT32                          PCRInfoSize;\r
-    UINT8                           *PCRInfo;\r
+//\r
+// Part 2, section 11.1: TPM_CERTIFY_INFO Structure\r
+//\r
+typedef struct tdTPM_CERTIFY_INFO {\r
+  TPM_STRUCT_VER                  version;\r
+  TPM_KEY_USAGE                   keyUsage;\r
+  TPM_KEY_FLAGS                   keyFlags;\r
+  TPM_AUTH_DATA_USAGE             authDataUsage;\r
+  TPM_KEY_PARMS                   algorithmParms;\r
+  TPM_DIGEST                      pubkeyDigest;\r
+  TPM_NONCE                       data;\r
+  BOOLEAN                         parentPCRStatus;\r
+  UINT32                          PCRInfoSize;\r
+  UINT8                           *PCRInfo;\r
 } TPM_CERTIFY_INFO;\r
 \r
-typedef struct tdTPM_CERTIFY_INFO2\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    UINT8                           fill;\r
-    TPM_PAYLOAD_TYPE                payloadType;\r
-    TPM_KEY_USAGE                   keyUsage;\r
-    TPM_KEY_FLAGS                   keyFlags;\r
-    TPM_AUTH_DATA_USAGE             authDataUsage;\r
-    TPM_KEY_PARMS                   algorithmParms;\r
-    TPM_DIGEST                      pubkeyDigest;\r
-    TPM_NONCE                       data;\r
-    BOOLEAN                         parentPCRStatus;\r
-    UINT32                          PCRInfoSize;\r
-    UINT8                           *PCRInfo;\r
-    UINT32                          migrationAuthoritySize;\r
-    UINT8                           *migrationAuthority;\r
+//\r
+// Part 2, section 11.2: TPM_CERTIFY_INFO2 Structure\r
+//\r
+typedef struct tdTPM_CERTIFY_INFO2 {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  UINT8                           fill;\r
+  TPM_PAYLOAD_TYPE                payloadType;\r
+  TPM_KEY_USAGE                   keyUsage;\r
+  TPM_KEY_FLAGS                   keyFlags;\r
+  TPM_AUTH_DATA_USAGE             authDataUsage;\r
+  TPM_KEY_PARMS                   algorithmParms;\r
+  TPM_DIGEST                      pubkeyDigest;\r
+  TPM_NONCE                       data;\r
+  BOOLEAN                         parentPCRStatus;\r
+  UINT32                          PCRInfoSize;\r
+  UINT8                           *PCRInfo;\r
+  UINT32                          migrationAuthoritySize;\r
+  UINT8                           *migrationAuthority;\r
 } TPM_CERTIFY_INFO2;\r
 \r
-typedef struct tdTPM_QUOTE_INFO                            \r
-{\r
-    TPM_STRUCT_VER                  version;\r
-    UINT8                           fixed[4];\r
-    TPM_COMPOSITE_HASH              digestValue;\r
-    TPM_NONCE                       externalData;\r
+//\r
+// Part 2, section 11.3 TPM_QUOTE_INFO Structure\r
+//\r
+typedef struct tdTPM_QUOTE_INFO {\r
+  TPM_STRUCT_VER                  version;\r
+  UINT8                           fixed[4];\r
+  TPM_COMPOSITE_HASH              digestValue;\r
+  TPM_NONCE                       externalData;\r
 } TPM_QUOTE_INFO;\r
 \r
-typedef struct tdTPM_QUOTE_INFO2\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    UINT8                           fixed[4];\r
-    TPM_NONCE                       externalData;\r
-    TPM_PCR_INFO_SHORT              infoShort;\r
+//\r
+// Part 2, section 11.4 TPM_QUOTE_INFO2 Structure\r
+//\r
+typedef struct tdTPM_QUOTE_INFO2 {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  UINT8                           fixed[4];\r
+  TPM_NONCE                       externalData;\r
+  TPM_PCR_INFO_SHORT              infoShort;\r
 } TPM_QUOTE_INFO2;\r
 \r
 //\r
 // Part 2, section 12: Identity Structures\r
 //\r
 \r
-typedef struct tdTPM_EK_BLOB\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_EK_TYPE                     ekType;\r
-    UINT32                          blobSize;\r
-    UINT8                           *blob;\r
+//\r
+// Part 2, section 12.1 TPM_EK_BLOB\r
+//\r
+typedef struct tdTPM_EK_BLOB {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_EK_TYPE                     ekType;\r
+  UINT32                          blobSize;\r
+  UINT8                           *blob;\r
 } TPM_EK_BLOB;\r
 \r
-typedef struct tdTPM_EK_BLOB_ACTIVATE\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_SYMMETRIC_KEY               sessionKey;\r
-    TPM_DIGEST                      idDigest;\r
-    TPM_PCR_INFO_SHORT              pcrInfo;\r
+//\r
+// Part 2, section 12.2 TPM_EK_BLOB_ACTIVATE\r
+//\r
+typedef struct tdTPM_EK_BLOB_ACTIVATE {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_SYMMETRIC_KEY               sessionKey;\r
+  TPM_DIGEST                      idDigest;\r
+  TPM_PCR_INFO_SHORT              pcrInfo;\r
 } TPM_EK_BLOB_ACTIVATE;\r
 \r
-typedef struct tdTPM_EK_BLOB_AUTH\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_SECRET                      authValue;\r
+//\r
+// Part 2, section 12.3 TPM_EK_BLOB_AUTH\r
+//\r
+typedef struct tdTPM_EK_BLOB_AUTH {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_SECRET                      authValue;\r
 } TPM_EK_BLOB_AUTH;\r
 \r
 \r
-typedef struct tdTPM_IDENTITY_CONTENTS\r
-{\r
-    TPM_STRUCT_VER                  ver;\r
-    UINT32                          ordinal;\r
-    TPM_CHOSENID_HASH               labelPrivCADigest;\r
-    TPM_PUBKEY                      identityPubKey;\r
+//\r
+// Part 2, section 12.5 TPM_IDENTITY_CONTENTS\r
+//\r
+typedef struct tdTPM_IDENTITY_CONTENTS {\r
+  TPM_STRUCT_VER                  ver;\r
+  UINT32                          ordinal;\r
+  TPM_CHOSENID_HASH               labelPrivCADigest;\r
+  TPM_PUBKEY                      identityPubKey;\r
 } TPM_IDENTITY_CONTENTS;\r
 \r
-typedef struct tdTPM_IDENTITY_REQ                          \r
-{\r
-    UINT32                          asymSize;\r
-    UINT32                          symSize;\r
-    TPM_KEY_PARMS                   asymAlgorithm;\r
-    TPM_KEY_PARMS                   symAlgorithm;\r
-    UINT8                           *asymBlob;\r
-    UINT8                           *symBlob;\r
+//\r
+// Part 2, section 12.6 TPM_IDENTITY_REQ\r
+//\r
+typedef struct tdTPM_IDENTITY_REQ {\r
+  UINT32                          asymSize;\r
+  UINT32                          symSize;\r
+  TPM_KEY_PARMS                   asymAlgorithm;\r
+  TPM_KEY_PARMS                   symAlgorithm;\r
+  UINT8                           *asymBlob;\r
+  UINT8                           *symBlob;\r
 } TPM_IDENTITY_REQ;\r
 \r
-typedef struct tdTPM_IDENTITY_PROOF                        \r
-{\r
-    TPM_STRUCT_VER                  ver;\r
-    UINT32                          labelSize;\r
-    UINT32                          identityBindingSize;\r
-    UINT32                          endorsementSize;\r
-    UINT32                          platformSize;\r
-    UINT32                          conformanceSize;\r
-    TPM_PUBKEY                      identityKey;\r
-    UINT8                           *labelArea;\r
-    UINT8                           *identityBinding;\r
-    UINT8                           *endorsementCredential;\r
-    UINT8                           *platformCredential;\r
-    UINT8                           *conformanceCredential;\r
+//\r
+// Part 2, section 12.7 TPM_IDENTITY_PROOF\r
+//\r
+typedef struct tdTPM_IDENTITY_PROOF {\r
+  TPM_STRUCT_VER                  ver;\r
+  UINT32                          labelSize;\r
+  UINT32                          identityBindingSize;\r
+  UINT32                          endorsementSize;\r
+  UINT32                          platformSize;\r
+  UINT32                          conformanceSize;\r
+  TPM_PUBKEY                      identityKey;\r
+  UINT8                           *labelArea;\r
+  UINT8                           *identityBinding;\r
+  UINT8                           *endorsementCredential;\r
+  UINT8                           *platformCredential;\r
+  UINT8                           *conformanceCredential;\r
 } TPM_IDENTITY_PROOF;\r
 \r
-typedef struct tdTPM_ASYM_CA_CONTENTS                      \r
-{\r
-    TPM_SYMMETRIC_KEY               sessionKey;\r
-    TPM_DIGEST                      idDigest;\r
+//\r
+// Part 2, section 12.8 TPM_ASYM_CA_CONTENTS\r
+//\r
+typedef struct tdTPM_ASYM_CA_CONTENTS {\r
+  TPM_SYMMETRIC_KEY               sessionKey;\r
+  TPM_DIGEST                      idDigest;\r
 } TPM_ASYM_CA_CONTENTS;\r
 \r
-typedef struct tdTPM_SYM_CA_ATTESTATION\r
-{\r
-    UINT32                          credSize;\r
-    TPM_KEY_PARMS                   algorithm;\r
-    UINT8                           *credential;\r
+//\r
+// Part 2, section 12.9 TPM_SYM_CA_ATTESTATION\r
+//\r
+typedef struct tdTPM_SYM_CA_ATTESTATION {\r
+  UINT32                          credSize;\r
+  TPM_KEY_PARMS                   algorithm;\r
+  UINT8                           *credential;\r
 } TPM_SYM_CA_ATTESTATION;\r
 \r
 //\r
-// Part 2, section 15: TPM_CURRENT_TICKS\r
+// Part 2, section 15: Tick Structures\r
 //   Placed here out of order because definitions are used in section 13.\r
 //\r
 typedef struct tdTPM_CURRENT_TICKS {\r
@@ -1065,67 +1038,84 @@ typedef struct tdTPM_CURRENT_TICKS {
 // Part 2, section 13: Transport structures\r
 //\r
 \r
+//\r
+// Part 2, section 13.1: TPM _TRANSPORT_PUBLIC\r
+//\r
+typedef struct tdTPM_TRANSPORT_PUBLIC {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_TRANSPORT_ATTRIBUTES        transAttributes;\r
+  TPM_ALGORITHM_ID                algId;\r
+  TPM_ENC_SCHEME                  encScheme;\r
+} TPM_TRANSPORT_PUBLIC;\r
+\r
+//\r
+// Part 2, section 13.1.1 TPM_TRANSPORT_ATTRIBUTES Definitions\r
+//\r
 #define TPM_TRANSPORT_ENCRYPT       ((UINT32)0x00000001)\r
 #define TPM_TRANSPORT_LOG           ((UINT32)0x00000002)\r
 #define TPM_TRANSPORT_EXCLUSIVE     ((UINT32)0x00000004)\r
 \r
-typedef struct tdTPM_TRANSPORT_PUBLIC\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_TRANSPORT_ATTRIBUTES        transAttributes;\r
-    TPM_ALGORITHM_ID                algId;\r
-    TPM_ENC_SCHEME                  encScheme;\r
-} TPM_TRANSPORT_PUBLIC;\r
-\r
-typedef struct tdTPM_TRANSPORT_INTERNAL\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_AUTHDATA                    authData;\r
-    TPM_TRANSPORT_PUBLIC            transPublic;\r
-    TPM_TRANSHANDLE                 transHandle;\r
-    TPM_NONCE                       transNonceEven;\r
-    TPM_DIGEST                      transDigest;\r
+//\r
+// Part 2, section 13.2 TPM_TRANSPORT_INTERNAL\r
+//\r
+typedef struct tdTPM_TRANSPORT_INTERNAL {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_AUTHDATA                    authData;\r
+  TPM_TRANSPORT_PUBLIC            transPublic;\r
+  TPM_TRANSHANDLE                 transHandle;\r
+  TPM_NONCE                       transNonceEven;\r
+  TPM_DIGEST                      transDigest;\r
 } TPM_TRANSPORT_INTERNAL;\r
 \r
-typedef struct tdTPM_TRANSPORT_LOG_IN\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DIGEST                      parameters;\r
-    TPM_DIGEST                      pubKeyHash;\r
+//\r
+// Part 2, section 13.3 TPM_TRANSPORT_LOG_IN structure\r
+//\r
+typedef struct tdTPM_TRANSPORT_LOG_IN {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DIGEST                      parameters;\r
+  TPM_DIGEST                      pubKeyHash;\r
 } TPM_TRANSPORT_LOG_IN;\r
 \r
-typedef struct tdTPM_TRANSPORT_LOG_OUT\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_CURRENT_TICKS               currentTicks;\r
-    TPM_DIGEST                      parameters;\r
-    TPM_MODIFIER_INDICATOR          locality;\r
+//\r
+// Part 2, section 13.4 TPM_TRANSPORT_LOG_OUT structure\r
+//\r
+typedef struct tdTPM_TRANSPORT_LOG_OUT {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_CURRENT_TICKS               currentTicks;\r
+  TPM_DIGEST                      parameters;\r
+  TPM_MODIFIER_INDICATOR          locality;\r
 } TPM_TRANSPORT_LOG_OUT;\r
 \r
-typedef struct tdTPM_TRANSPORT_AUTH\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_AUTHDATA                    authData;\r
+//\r
+// Part 2, section 13.5 TPM_TRANSPORT_AUTH structure\r
+//\r
+typedef struct tdTPM_TRANSPORT_AUTH {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_AUTHDATA                    authData;\r
 } TPM_TRANSPORT_AUTH;\r
 \r
 //\r
 // Part 2, section 14: Audit Structures\r
 //\r
 \r
-typedef struct tdTPM_AUDIT_EVENT_IN\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DIGEST                      inputParms;\r
-    TPM_COUNTER_VALUE               auditCount;\r
+//\r
+// Part 2, section 14.1 TPM_AUDIT_EVENT_IN structure\r
+//\r
+typedef struct tdTPM_AUDIT_EVENT_IN {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DIGEST                      inputParms;\r
+  TPM_COUNTER_VALUE               auditCount;\r
 } TPM_AUDIT_EVENT_IN;\r
 \r
-typedef struct tdTPM_AUDIT_EVENT_OUT\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_COMMAND_CODE                ordinal;\r
-    TPM_DIGEST                      outputParms;\r
-    TPM_COUNTER_VALUE               auditCount;\r
-    TPM_RESULT                      returnCode;\r
+//\r
+// Part 2, section 14.2 TPM_AUDIT_EVENT_OUT structure\r
+//\r
+typedef struct tdTPM_AUDIT_EVENT_OUT {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_COMMAND_CODE                ordinal;\r
+  TPM_DIGEST                      outputParms;\r
+  TPM_COUNTER_VALUE               auditCount;\r
+  TPM_RESULT                      returnCode;\r
 } TPM_AUDIT_EVENT_OUT;\r
 \r
 //\r
@@ -1401,32 +1391,39 @@ typedef struct tdTPM_AUDIT_EVENT_OUT
 // Part 2, section 18: Context structures\r
 //\r
 \r
-typedef struct tdTPM_CONTEXT_BLOB\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_RESOURCE_TYPE               resourceType;\r
-    TPM_HANDLE                      handle;\r
-    UINT8                           label[16];\r
-    UINT32                          contextCount;\r
-    TPM_DIGEST                      integrityDigest;\r
-    UINT32                          additionalSize;\r
-    UINT8                           *additionalData;\r
-    UINT32                          sensitiveSize;\r
-    UINT8                           *sensitiveData;\r
+//\r
+// Part 2, section 18.1: TPM_CONTEXT_BLOB\r
+//\r
+typedef struct tdTPM_CONTEXT_BLOB {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_RESOURCE_TYPE               resourceType;\r
+  TPM_HANDLE                      handle;\r
+  UINT8                           label[16];\r
+  UINT32                          contextCount;\r
+  TPM_DIGEST                      integrityDigest;\r
+  UINT32                          additionalSize;\r
+  UINT8                           *additionalData;\r
+  UINT32                          sensitiveSize;\r
+  UINT8                           *sensitiveData;\r
 } TPM_CONTEXT_BLOB;\r
 \r
-typedef struct tdTPM_CONTEXT_SENSITIVE\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_NONCE                       contextNonce;\r
-    UINT32                          internalSize;\r
-    UINT8                           *internalData;\r
+//\r
+// Part 2, section 18.2 TPM_CONTEXT_SENSITIVE\r
+//\r
+typedef struct tdTPM_CONTEXT_SENSITIVE {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_NONCE                       contextNonce;\r
+  UINT32                          internalSize;\r
+  UINT8                           *internalData;\r
 } TPM_CONTEXT_SENSITIVE;\r
 \r
 //\r
 // Part 2, section 19: NV Structures\r
 //\r
 \r
+//\r
+// Part 2, section 19.1.1: Required TPM_NV_INDEX values\r
+//\r
 #define TPM_NV_INDEX_LOCK              ((UINT32)0xffffffff)\r
 #define TPM_NV_INDEX0                  ((UINT32)0x00000000)\r
 #define TPM_NV_INDEX_DIR               ((UINT32)0x10000001)\r
@@ -1434,7 +1431,9 @@ typedef struct tdTPM_CONTEXT_SENSITIVE
 #define TPM_NV_INDEX_TPM_CC            ((UINT32)0x0000f001)\r
 #define TPM_NV_INDEX_PlatformCert      ((UINT32)0x0000f002)\r
 #define TPM_NV_INDEX_Platform_CC       ((UINT32)0x0000f003)\r
-// The following define ranges of reserved indices.\r
+//\r
+// Part 2, section 19.1.2: Reserved Index values\r
+//\r
 #define TPM_NV_INDEX_TSS_BASE          ((UINT32)0x00011100)\r
 #define TPM_NV_INDEX_PC_BASE           ((UINT32)0x00011200)\r
 #define TPM_NV_INDEX_SERVER_BASE       ((UINT32)0x00011300)\r
@@ -1442,222 +1441,242 @@ typedef struct tdTPM_CONTEXT_SENSITIVE
 #define TPM_NV_INDEX_PERIPHERAL_BASE   ((UINT32)0x00011500)\r
 #define TPM_NV_INDEX_GROUP_RESV_BASE   ((UINT32)0x00010000)\r
 \r
-typedef UINT32 TPM_NV_PER_ATTRIBUTES;\r
+//\r
 // The typedefs TPM_NV_PER_ATTRIBUTES (not present in TPM 1.2 Spec. have been added \r
 // and structure fields that were to hold the following values\r
-#define TPM_NV_PER_READ_STCLEAR        (((UINT32)1)<<31)\r
-#define TPM_NV_PER_AUTHREAD            (((UINT32)1)<<18)\r
-#define TPM_NV_PER_OWNERREAD           (((UINT32)1)<<17)\r
-#define TPM_NV_PER_PPREAD              (((UINT32)1)<<16)\r
-#define TPM_NV_PER_GLOBALLOCK          (((UINT32)1)<<15)\r
-#define TPM_NV_PER_WRITE_STCLEAR       (((UINT32)1)<<14)\r
-#define TPM_NV_PER_WRITEDEFINE         (((UINT32)1)<<13)\r
-#define TPM_NV_PER_WRITEALL            (((UINT32)1)<<12)\r
-#define TPM_NV_PER_AUTHWRITE           (((UINT32)1)<<2)\r
-#define TPM_NV_PER_OWNERWRITE          (((UINT32)1)<<1)\r
-#define TPM_NV_PER_PPWRITE             (((UINT32)1)<<0)\r
-\r
-typedef struct tdTPM_NV_ATTRIBUTES\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_NV_PER_ATTRIBUTES           attributes;\r
-} TPM_NV_ATTRIBUTES;\r
-\r
+//\r
+typedef UINT32 TPM_NV_PER_ATTRIBUTES;\r
 \r
-typedef struct tdTPM_NV_DATA_PUBLIC\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_NV_INDEX                    nvIndex;\r
-    TPM_PCR_INFO_SHORT              pcrInfoRead;\r
-    TPM_PCR_INFO_SHORT              pcrInfoWrite;\r
-    TPM_NV_ATTRIBUTES               permission;\r
-    BOOLEAN                         bReadSTClear;\r
-    BOOLEAN                         bWriteSTClear;\r
-    BOOLEAN                         bWriteDefine;\r
-    UINT32                          dataSize;\r
-} TPM_NV_DATA_PUBLIC;\r
+//\r
+// Part 2, section 19.2: TPM_NV_ATTRIBUTES\r
+//\r
+#define TPM_NV_PER_READ_STCLEAR        (BIT31)\r
+#define TPM_NV_PER_AUTHREAD            (BIT18)\r
+#define TPM_NV_PER_OWNERREAD           (BIT17)\r
+#define TPM_NV_PER_PPREAD              (BIT16)\r
+#define TPM_NV_PER_GLOBALLOCK          (BIT15)\r
+#define TPM_NV_PER_WRITE_STCLEAR       (BIT14)\r
+#define TPM_NV_PER_WRITEDEFINE         (BIT13)\r
+#define TPM_NV_PER_WRITEALL            (BIT12)\r
+#define TPM_NV_PER_AUTHWRITE           (BIT2)\r
+#define TPM_NV_PER_OWNERWRITE          (BIT1)\r
+#define TPM_NV_PER_PPWRITE             (BIT0)\r
 \r
+typedef struct tdTPM_NV_ATTRIBUTES {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_NV_PER_ATTRIBUTES           attributes;\r
+} TPM_NV_ATTRIBUTES;\r
 \r
+//\r
+// Part 2, section 19.3: TPM_NV_DATA_PUBLIC\r
+//\r
+typedef struct tdTPM_NV_DATA_PUBLIC {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_NV_INDEX                    nvIndex;\r
+  TPM_PCR_INFO_SHORT              pcrInfoRead;\r
+  TPM_PCR_INFO_SHORT              pcrInfoWrite;\r
+  TPM_NV_ATTRIBUTES               permission;\r
+  BOOLEAN                         bReadSTClear;\r
+  BOOLEAN                         bWriteSTClear;\r
+  BOOLEAN                         bWriteDefine;\r
+  UINT32                          dataSize;\r
+} TPM_NV_DATA_PUBLIC;\r
 \r
-// Internal to TPM:\r
-//typedef struct tdTPM_NV_DATA_SENSITIVE\r
-//{\r
-//    TPM_STRUCTURE_TAG               tag;\r
-//    TPM_NV_DATA_PUBLIC              pubInfo;\r
-//   TPM_AUTHDATA                    authValue;\r
-//    UINT8                           *data;\r
-//} TPM_NV_DATA_SENSITIVE;\r
-\r
-\r
-//\r
-// Part 2, section 20: Delegation\r
-//\r
-\r
-//\r
-// Part 2, section 20.3: Owner Permissions Settings for per1 bits\r
-//\r
-#define TPM_DELEGATE_SetOrdinalAuditStatus          (((UINT32)1)<<30)\r
-#define TPM_DELEGATE_DirWriteAuth                   (((UINT32)1)<<29)\r
-#define TPM_DELEGATE_CMK_ApproveMA                  (((UINT32)1)<<28)\r
-#define TPM_DELEGATE_CMK_CreateTicket               (((UINT32)1)<<26)\r
-#define TPM_DELEGATE_Delegate_LoadOwnerDelegation   (((UINT32)1)<<24)\r
-#define TPM_DELEGATE_DAA_Join                       (((UINT32)1)<<23)\r
-#define TPM_DELEGATE_AuthorizeMigrationKey          (((UINT32)1)<<22)\r
-#define TPM_DELEGATE_CreateMaintenanceArchive       (((UINT32)1)<<21)\r
-#define TPM_DELEGATE_LoadMaintenanceArchive         (((UINT32)1)<<20)\r
-#define TPM_DELEGATE_KillMaintenanceFeature         (((UINT32)1)<<19)\r
-#define TPM_DELEGATE_OwnerReadInteralPub            (((UINT32)1)<<18)\r
-#define TPM_DELEGATE_ResetLockValue                 (((UINT32)1)<<17)\r
-#define TPM_DELEGATE_OwnerClear                     (((UINT32)1)<<16)\r
-#define TPM_DELEGATE_DisableOwnerClear              (((UINT32)1)<<15)\r
-#define TPM_DELEGATE_OwnerSetDisable                (((UINT32)1)<<13)\r
-#define TPM_DELEGATE_SetCapability                  (((UINT32)1)<<12)\r
-#define TPM_DELEGATE_MakeIdentity                   (((UINT32)1)<<11)\r
-#define TPM_DELEGATE_ActivateIdentity               (((UINT32)1)<<10)\r
-#define TPM_DELEGATE_OwnerReadPubek                 (((UINT32)1)<<9)\r
-#define TPM_DELEGATE_DisablePubekRead               (((UINT32)1)<<8)\r
-#define TPM_DELEGATE_SetRedirection                 (((UINT32)1)<<7)\r
-#define TPM_DELEGATE_FieldUpgrade                   (((UINT32)1)<<6)\r
-#define TPM_DELEGATE_Delegate_UpdateVerification    (((UINT32)1)<<5)\r
-#define TPM_DELEGATE_CreateCounter                  (((UINT32)1)<<4)\r
-#define TPM_DELEGATE_ReleaseCounterOwner            (((UINT32)1)<<3)\r
-#define TPM_DELEGATE_DelegateManage                 (((UINT32)1)<<2)\r
-#define TPM_DELEGATE_Delegate_CreateOwnerDelegation (((UINT32)1)<<1)\r
-#define TPM_DELEGATE_DAA_Sign                       (((UINT32)1)<<0)\r
-\r
-//\r
-// Part 2, section 20.3: Key Permissions Settings for per1 bits\r
-//\r
-#define TPM_KEY_DELEGATE_CMK_ConvertMigration       (((UINT32)1)<<28)\r
-#define TPM_KEY_DELEGATE_TickStampBlob              (((UINT32)1)<<27)\r
-#define TPM_KEY_DELEGATE_ChangeAuthAsymStart        (((UINT32)1)<<26)\r
-#define TPM_KEY_DELEGATE_ChangeAuthAsymFinish       (((UINT32)1)<<25)\r
-#define TPM_KEY_DELEGATE_CMK_CreateKey              (((UINT32)1)<<24)\r
-#define TPM_KEY_DELEGATE_MigrateKey                 (((UINT32)1)<<23)\r
-#define TPM_KEY_DELEGATE_LoadKey2                   (((UINT32)1)<<22)\r
-#define TPM_KEY_DELEGATE_EstablishTransport         (((UINT32)1)<<21)\r
-#define TPM_KEY_DELEGATE_ReleaseTransportSigned     (((UINT32)1)<<20)\r
-#define TPM_KEY_DELEGATE_Quote2                     (((UINT32)1)<<19)\r
-#define TPM_KEY_DELEGATE_Sealx                      (((UINT32)1)<<18)\r
-#define TPM_KEY_DELEGATE_MakeIdentity               (((UINT32)1)<<17)\r
-#define TPM_KEY_DELEGATE_ActivateIdentity           (((UINT32)1)<<16)\r
-#define TPM_KEY_DELEGATE_GetAuditDigestSigned       (((UINT32)1)<<15)\r
-#define TPM_KEY_DELEGATE_Sign                       (((UINT32)1)<<14)\r
-#define TPM_KEY_DELEGATE_CertifyKey2                (((UINT32)1)<<13)\r
-#define TPM_KEY_DELEGATE_CertifyKey                 (((UINT32)1)<<12)\r
-#define TPM_KEY_DELEGATE_CreateWrapKey              (((UINT32)1)<<11)\r
-#define TPM_KEY_DELEGATE_CMK_CreateBlob             (((UINT32)1)<<10)\r
-#define TPM_KEY_DELEGATE_CreateMigrationBlob        (((UINT32)1)<<9)\r
-#define TPM_KEY_DELEGATE_ConvertMigrationBlob       (((UINT32)1)<<8)\r
-#define TPM_KEY_DELEGATE_CreateKeyDelegation        (((UINT32)1)<<7)\r
-#define TPM_KEY_DELEGATE_ChangeAuth                 (((UINT32)1)<<6)\r
-#define TPM_KEY_DELEGATE_GetPubKey                  (((UINT32)1)<<5)\r
-#define TPM_KEY_DELEGATE_UnBind                     (((UINT32)1)<<4)\r
-#define TPM_KEY_DELEGATE_Quote                      (((UINT32)1)<<3)\r
-#define TPM_KEY_DELEGATE_Unseal                     (((UINT32)1)<<2)\r
-#define TPM_KEY_DELEGATE_Seal                       (((UINT32)1)<<1)\r
-#define TPM_KEY_DELEGATE_LoadKey                    (((UINT32)1)<<0)\r
+//\r
+// Part 2, section 20: Delegate Structures\r
+//\r
 \r
-#define TPM_FAMILY_CREATE                 ((UINT32)0x00000001)\r
-#define TPM_FAMILY_ENABLE                 ((UINT32)0x00000002)\r
-#define TPM_FAMILY_ADMIN                  ((UINT32)0x00000003)\r
-#define TPM_FAMILY_INVALIDATE             ((UINT32)0x00000004)\r
+//\r
+// Part 2, section 20.2: Delegate Definitions\r
+//\r
+#define TPM_DEL_OWNER_BITS          ((UINT32)0x00000001)\r
+#define TPM_DEL_KEY_BITS            ((UINT32)0x00000002)\r
 \r
-#define TPM_FAMFLAG_DELEGATE_ADMIN_LOCK   (((UINT32)1)<<1)\r
-#define TPM_FAMFLAG_ENABLE                (((UINT32)1)<<0)\r
+typedef struct tdTPM_DELEGATIONS {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  UINT32                          delegateType;\r
+  UINT32                          per1;\r
+  UINT32                          per2;\r
+} TPM_DELEGATIONS;\r
 \r
-typedef struct tdTPM_FAMILY_LABEL\r
-{\r
-    UINT8                           label;\r
+//\r
+// Part 2, section 20.2.1: Owner Permission Settings\r
+//\r
+#define TPM_DELEGATE_SetOrdinalAuditStatus          (BIT30)\r
+#define TPM_DELEGATE_DirWriteAuth                   (BIT29)\r
+#define TPM_DELEGATE_CMK_ApproveMA                  (BIT28)\r
+#define TPM_DELEGATE_CMK_CreateTicket               (BIT26)\r
+#define TPM_DELEGATE_Delegate_LoadOwnerDelegation   (BIT24)\r
+#define TPM_DELEGATE_DAA_Join                       (BIT23)\r
+#define TPM_DELEGATE_AuthorizeMigrationKey          (BIT22)\r
+#define TPM_DELEGATE_CreateMaintenanceArchive       (BIT21)\r
+#define TPM_DELEGATE_LoadMaintenanceArchive         (BIT20)\r
+#define TPM_DELEGATE_KillMaintenanceFeature         (BIT19)\r
+#define TPM_DELEGATE_OwnerReadInteralPub            (BIT18)\r
+#define TPM_DELEGATE_ResetLockValue                 (BIT17)\r
+#define TPM_DELEGATE_OwnerClear                     (BIT16)\r
+#define TPM_DELEGATE_DisableOwnerClear              (BIT15)\r
+#define TPM_DELEGATE_OwnerSetDisable                (BIT13)\r
+#define TPM_DELEGATE_SetCapability                  (BIT12)\r
+#define TPM_DELEGATE_MakeIdentity                   (BIT11)\r
+#define TPM_DELEGATE_ActivateIdentity               (BIT10)\r
+#define TPM_DELEGATE_OwnerReadPubek                 (BIT9)\r
+#define TPM_DELEGATE_DisablePubekRead               (BIT8)\r
+#define TPM_DELEGATE_SetRedirection                 (BIT7)\r
+#define TPM_DELEGATE_FieldUpgrade                   (BIT6)\r
+#define TPM_DELEGATE_Delegate_UpdateVerification    (BIT5)\r
+#define TPM_DELEGATE_CreateCounter                  (BIT4)\r
+#define TPM_DELEGATE_ReleaseCounterOwner            (BIT3)\r
+#define TPM_DELEGATE_DelegateManage                 (BIT2)\r
+#define TPM_DELEGATE_Delegate_CreateOwnerDelegation (BIT1)\r
+#define TPM_DELEGATE_DAA_Sign                       (BIT0)\r
+\r
+//\r
+// Part 2, section 20.2.3: Key Permission settings\r
+//\r
+#define TPM_KEY_DELEGATE_CMK_ConvertMigration       (BIT28)\r
+#define TPM_KEY_DELEGATE_TickStampBlob              (BIT27)\r
+#define TPM_KEY_DELEGATE_ChangeAuthAsymStart        (BIT26)\r
+#define TPM_KEY_DELEGATE_ChangeAuthAsymFinish       (BIT25)\r
+#define TPM_KEY_DELEGATE_CMK_CreateKey              (BIT24)\r
+#define TPM_KEY_DELEGATE_MigrateKey                 (BIT23)\r
+#define TPM_KEY_DELEGATE_LoadKey2                   (BIT22)\r
+#define TPM_KEY_DELEGATE_EstablishTransport         (BIT21)\r
+#define TPM_KEY_DELEGATE_ReleaseTransportSigned     (BIT20)\r
+#define TPM_KEY_DELEGATE_Quote2                     (BIT19)\r
+#define TPM_KEY_DELEGATE_Sealx                      (BIT18)\r
+#define TPM_KEY_DELEGATE_MakeIdentity               (BIT17)\r
+#define TPM_KEY_DELEGATE_ActivateIdentity           (BIT16)\r
+#define TPM_KEY_DELEGATE_GetAuditDigestSigned       (BIT15)\r
+#define TPM_KEY_DELEGATE_Sign                       (BIT14)\r
+#define TPM_KEY_DELEGATE_CertifyKey2                (BIT13)\r
+#define TPM_KEY_DELEGATE_CertifyKey                 (BIT12)\r
+#define TPM_KEY_DELEGATE_CreateWrapKey              (BIT11)\r
+#define TPM_KEY_DELEGATE_CMK_CreateBlob             (BIT10)\r
+#define TPM_KEY_DELEGATE_CreateMigrationBlob        (BIT9)\r
+#define TPM_KEY_DELEGATE_ConvertMigrationBlob       (BIT8)\r
+#define TPM_KEY_DELEGATE_CreateKeyDelegation        (BIT7)\r
+#define TPM_KEY_DELEGATE_ChangeAuth                 (BIT6)\r
+#define TPM_KEY_DELEGATE_GetPubKey                  (BIT5)\r
+#define TPM_KEY_DELEGATE_UnBind                     (BIT4)\r
+#define TPM_KEY_DELEGATE_Quote                      (BIT3)\r
+#define TPM_KEY_DELEGATE_Unseal                     (BIT2)\r
+#define TPM_KEY_DELEGATE_Seal                       (BIT1)\r
+#define TPM_KEY_DELEGATE_LoadKey                    (BIT0)\r
+\r
+//\r
+// Part 2, section 20.3: TPM_FAMILY_FLAGS\r
+//\r
+#define TPM_DELEGATE_ADMIN_LOCK           (BIT1)\r
+#define TPM_FAMFLAG_ENABLE                (BIT0)\r
+\r
+//\r
+// Part 2, section 20.4: TPM_FAMILY_LABEL\r
+//\r
+typedef struct tdTPM_FAMILY_LABEL {\r
+  UINT8                           label;\r
 } TPM_FAMILY_LABEL;\r
 \r
-typedef struct tdTPM_FAMILY_TABLE_ENTRY\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_FAMILY_LABEL                label;\r
-    TPM_FAMILY_ID                   familyID;\r
-    TPM_FAMILY_VERIFICATION         verificationCount;\r
-    TPM_FAMILY_FLAGS                flags;\r
+//\r
+// Part 2, section 20.5: TPM_FAMILY_TABLE_ENTRY\r
+//\r
+typedef struct tdTPM_FAMILY_TABLE_ENTRY {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_FAMILY_LABEL                label;\r
+  TPM_FAMILY_ID                   familyID;\r
+  TPM_FAMILY_VERIFICATION         verificationCount;\r
+  TPM_FAMILY_FLAGS                flags;\r
 } TPM_FAMILY_TABLE_ENTRY;\r
 \r
-#define TPM_FAMILY_TABLE_ENTRY_MIN 8\r
-//typedef struct tdTPM_FAMILY_TABLE\r
-//{\r
-//    TPM_FAMILY_TABLE_ENTRY          FamTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];\r
-//} TPM_FAMILY_TABLE;\r
+//\r
+// Part 2, section 20.6: TPM_FAMILY_TABLE\r
+//\r
+#define TPM_NUM_FAMILY_TABLE_ENTRY_MIN 8\r
 \r
+typedef struct tdTPM_FAMILY_TABLE{\r
+  TPM_FAMILY_TABLE_ENTRY famTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];\r
+} TPM_FAMILY_TABLE;\r
 \r
-typedef struct tdTPM_DELEGATE_LABEL\r
-{\r
-    UINT8                           label;\r
+//\r
+// Part 2, section 20.7: TPM_DELEGATE_LABEL\r
+//\r
+typedef struct tdTPM_DELEGATE_LABEL {\r
+  UINT8                           label;\r
 } TPM_DELEGATE_LABEL;\r
 \r
-\r
-typedef UINT32 TPM_DELEGATE_TYPE;\r
-#define TPM_DEL_OWNER_BITS          ((UINT32)0x00000001)\r
-#define TPM_DEL_KEY_BITS            ((UINT32)0x00000002)\r
-\r
-typedef struct tdTPM_DELEGATIONS\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DELEGATE_TYPE               delegateType;\r
-    UINT32                          per1;\r
-    UINT32                          per2;\r
-} TPM_DELEGATIONS;\r
-\r
-typedef struct tdTPM_DELEGATE_PUBLIC\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DELEGATE_LABEL              label;\r
-    TPM_PCR_INFO_SHORT              pcrInfo;\r
-    TPM_DELEGATIONS                 permissions;\r
-    TPM_FAMILY_ID                   familyID;\r
-    TPM_FAMILY_VERIFICATION         verificationCount;\r
+//\r
+// Part 2, section 20.8: TPM_DELEGATE_PUBLIC\r
+//\r
+typedef struct tdTPM_DELEGATE_PUBLIC {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DELEGATE_LABEL              label;\r
+  TPM_PCR_INFO_SHORT              pcrInfo;\r
+  TPM_DELEGATIONS                 permissions;\r
+  TPM_FAMILY_ID                   familyID;\r
+  TPM_FAMILY_VERIFICATION         verificationCount;\r
 } TPM_DELEGATE_PUBLIC;\r
 \r
-typedef struct tdTPM_DELEGATE_TABLE_ROW\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DELEGATE_PUBLIC             pub;\r
-    TPM_SECRET                      authValue;\r
+//\r
+// Part 2, section 20.9: TPM_DELEGATE_TABLE_ROW\r
+//\r
+typedef struct tdTPM_DELEGATE_TABLE_ROW {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DELEGATE_PUBLIC             pub;\r
+  TPM_SECRET                      authValue;\r
 } TPM_DELEGATE_TABLE_ROW;\r
 \r
-\r
+//\r
+// Part 2, section 20.10: TPM_DELEGATE_TABLE\r
+//\r
 #define TPM_NUM_DELEGATE_TABLE_ENTRY_MIN 2\r
-//typedef struct tdTPM_DELEGATE_TABLE\r
-//{\r
-//    TPM_DELEGATE_TABLE_ROW          delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];\r
-//} TPM_DELEGATE_TABLE;\r
-\r
-typedef struct tdTPM_DELEGATE_SENSITIVE\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_SECRET                      authValue;\r
+\r
+typedef struct tdTPM_DELEGATE_TABLE{\r
+  TPM_DELEGATE_TABLE_ROW delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];\r
+} TPM_DELEGATE_TABLE;\r
+\r
+//\r
+// Part 2, section 20.11: TPM_DELEGATE_SENSITIVE\r
+//\r
+typedef struct tdTPM_DELEGATE_SENSITIVE {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_SECRET                      authValue;\r
 } TPM_DELEGATE_SENSITIVE;\r
 \r
-typedef struct tdTPM_DELEGATE_OWNER_BLOB\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DELEGATE_PUBLIC             pub;\r
-    TPM_DIGEST                      integrityDigest;\r
-    UINT32                          additionalSize;\r
-    UINT8                           *additionalArea;\r
-    UINT32                          sensitiveSize;\r
-    UINT8                           *sensitiveArea;\r
+//\r
+// Part 2, section 20.12: TPM_DELEGATE_OWNER_BLOB\r
+//\r
+typedef struct tdTPM_DELEGATE_OWNER_BLOB {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DELEGATE_PUBLIC             pub;\r
+  TPM_DIGEST                      integrityDigest;\r
+  UINT32                          additionalSize;\r
+  UINT8                           *additionalArea;\r
+  UINT32                          sensitiveSize;\r
+  UINT8                           *sensitiveArea;\r
 } TPM_DELEGATE_OWNER_BLOB;\r
 \r
-typedef struct tdTPM_DELEGATE_KEY_BLOB\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DELEGATE_PUBLIC             pub;\r
-    TPM_DIGEST                      integrityDigest;\r
-    TPM_DIGEST                      pubKeyDigest;\r
-    UINT32                          additionalSize;\r
-    UINT8                           *additionalArea;\r
-    UINT32                          sensitiveSize;\r
-    UINT8                           *sensitiveArea;\r
+//\r
+// Part 2, section 20.13: TTPM_DELEGATE_KEY_BLOB\r
+//\r
+typedef struct tdTPM_DELEGATE_KEY_BLOB {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DELEGATE_PUBLIC             pub;\r
+  TPM_DIGEST                      integrityDigest;\r
+  TPM_DIGEST                      pubKeyDigest;\r
+  UINT32                          additionalSize;\r
+  UINT8                           *additionalArea;\r
+  UINT32                          sensitiveSize;\r
+  UINT8                           *sensitiveArea;\r
 } TPM_DELEGATE_KEY_BLOB;\r
 \r
+//\r
+// Part 2, section 20.14: TPM_FAMILY_OPERATION Values\r
+//\r
+#define TPM_FAMILY_CREATE                 ((UINT32)0x00000001)\r
+#define TPM_FAMILY_ENABLE                 ((UINT32)0x00000002)\r
+#define TPM_FAMILY_ADMIN                  ((UINT32)0x00000003)\r
+#define TPM_FAMILY_INVALIDATE             ((UINT32)0x00000004)\r
+\r
 //\r
 // Part 2, section 21.1: TPM_CAPABILITY_AREA for GetCapability\r
 //\r
@@ -1736,6 +1755,9 @@ typedef struct tdTPM_CAP_VERSION_INFO {
 // Part 2, section 22: DAA Structures\r
 //\r
 \r
+//\r
+// Part 2, section 22.1: Size definitions\r
+//\r
 #define TPM_DAA_SIZE_r0                (43)\r
 #define TPM_DAA_SIZE_r1                (43)\r
 #define TPM_DAA_SIZE_r2                (128)\r
@@ -1747,66 +1769,80 @@ typedef struct tdTPM_CAP_VERSION_INFO {
 #define TPM_DAA_SIZE_NE                (256)\r
 #define TPM_DAA_SIZE_w                 (256)\r
 #define TPM_DAA_SIZE_issuerModulus     (256)\r
+//\r
+// Part 2, section 22.2: Constant definitions\r
+//\r
 #define TPM_DAA_power0                 (104)\r
 #define TPM_DAA_power1                 (1024)\r
 \r
-typedef struct tdTPM_DAA_ISSUER\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DIGEST                      DAA_digest_R0;\r
-    TPM_DIGEST                      DAA_digest_R1;\r
-    TPM_DIGEST                      DAA_digest_S0;\r
-    TPM_DIGEST                      DAA_digest_S1;\r
-    TPM_DIGEST                      DAA_digest_n;\r
-    TPM_DIGEST                      DAA_digest_gamma;\r
-    UINT8                           DAA_generic_q[26];\r
+//\r
+// Part 2, section 22.3: TPM_DAA_ISSUER\r
+//\r
+typedef struct tdTPM_DAA_ISSUER {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DIGEST                      DAA_digest_R0;\r
+  TPM_DIGEST                      DAA_digest_R1;\r
+  TPM_DIGEST                      DAA_digest_S0;\r
+  TPM_DIGEST                      DAA_digest_S1;\r
+  TPM_DIGEST                      DAA_digest_n;\r
+  TPM_DIGEST                      DAA_digest_gamma;\r
+  UINT8                           DAA_generic_q[26];\r
 } TPM_DAA_ISSUER;\r
 \r
-\r
-typedef struct tdTPM_DAA_TPM\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DIGEST                      DAA_digestIssuer;\r
-    TPM_DIGEST                      DAA_digest_v0;\r
-    TPM_DIGEST                      DAA_digest_v1;\r
-    TPM_DIGEST                      DAA_rekey;\r
-    UINT32                          DAA_count;\r
+//\r
+// Part 2, section 22.4: TPM_DAA_TPM\r
+//\r
+typedef struct tdTPM_DAA_TPM {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DIGEST                      DAA_digestIssuer;\r
+  TPM_DIGEST                      DAA_digest_v0;\r
+  TPM_DIGEST                      DAA_digest_v1;\r
+  TPM_DIGEST                      DAA_rekey;\r
+  UINT32                          DAA_count;\r
 } TPM_DAA_TPM;\r
 \r
-typedef struct tdTPM_DAA_CONTEXT\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_DIGEST                      DAA_digestContext;\r
-    TPM_DIGEST                      DAA_digest;\r
-    TPM_DAA_CONTEXT_SEED            DAA_contextSeed;\r
-    UINT8                           DAA_scratch[256];\r
-    UINT8                           DAA_stage;\r
+//\r
+// Part 2, section 22.5: TPM_DAA_CONTEXT\r
+//\r
+typedef struct tdTPM_DAA_CONTEXT {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_DIGEST                      DAA_digestContext;\r
+  TPM_DIGEST                      DAA_digest;\r
+  TPM_DAA_CONTEXT_SEED            DAA_contextSeed;\r
+  UINT8                           DAA_scratch[256];\r
+  UINT8                           DAA_stage;\r
 } TPM_DAA_CONTEXT;\r
 \r
-typedef struct tdTPM_DAA_JOINDATA\r
-{\r
-    UINT8                           DAA_join_u0[128];\r
-    UINT8                           DAA_join_u1[138];\r
-    TPM_DIGEST                      DAA_digest_n0;\r
+//\r
+// Part 2, section 22.6: TPM_DAA_JOINDATA\r
+//\r
+typedef struct tdTPM_DAA_JOINDATA {\r
+  UINT8                           DAA_join_u0[128];\r
+  UINT8                           DAA_join_u1[138];\r
+  TPM_DIGEST                      DAA_digest_n0;\r
 } TPM_DAA_JOINDATA;\r
 \r
-typedef struct tdTPM_DAA_BLOB\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    TPM_RESOURCE_TYPE               resourceType;\r
-    UINT8                           label[16];\r
-    TPM_DIGEST                      blobIntegrity;\r
-    UINT32                          additionalSize;\r
-    UINT8                           *additionalData;\r
-    UINT32                          sensitiveSize;\r
-    UINT8                           *sensitiveData;\r
+//\r
+// Part 2, section 22.8: TPM_DAA_BLOB\r
+//\r
+typedef struct tdTPM_DAA_BLOB {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_RESOURCE_TYPE               resourceType;\r
+  UINT8                           label[16];\r
+  TPM_DIGEST                      blobIntegrity;\r
+  UINT32                          additionalSize;\r
+  UINT8                           *additionalData;\r
+  UINT32                          sensitiveSize;\r
+  UINT8                           *sensitiveData;\r
 } TPM_DAA_BLOB;\r
 \r
-typedef struct tdTPM_DAA_SENSITIVE\r
-{\r
-    TPM_STRUCTURE_TAG               tag;\r
-    UINT32                          internalSize;\r
-    UINT8                           *internalData;\r
+//\r
+// Part 2, section 22.9: TPM_DAA_SENSITIVE\r
+//\r
+typedef struct tdTPM_DAA_SENSITIVE {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  UINT32                          internalSize;\r
+  UINT8                           *internalData;\r
 } TPM_DAA_SENSITIVE;\r
 \r
 \r
@@ -1814,14 +1850,17 @@ typedef struct tdTPM_DAA_SENSITIVE
 // Part 2, section 23: Redirection\r
 //\r
 \r
-// This section of the TPM spec defines exactly one value but does not\r
+//\r
+// Part 2 section 23.1: TPM_REDIR_COMMAND\r
+// This section defines exactly one value but does not\r
 // give it a name. The definition of TPM_SetRedirection in Part3\r
 // refers to exactly one name but does not give its value. We join\r
 // them here.\r
+//\r
 #define TPM_REDIR_GPIO              (0x00000001)\r
 \r
 //\r
-// TPM Command & Response Headers\r
+// TPM Command & Response Headers defined in Part 3\r
 //\r
 typedef struct tdTPM_RQU_COMMAND_HDR {\r
   TPM_STRUCTURE_TAG                 tag;\r
@@ -1837,4 +1876,4 @@ typedef struct tdTPM_RSP_COMMAND_HDR {
 \r
 #pragma pack ()\r
 \r
-#endif  // _TPM12_H_\r
+#endif\r
index 0d6da311f687b930034c61494dd51ab81e189a1d..ec86d8b794034439f33f6ac1382975083842b321 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
-  Support for USB 1.1 standard.\r
+  Support for USB 2.0 standard.\r
 \r
-  Copyright (c) 2006 - 2007, Intel Corporation\r
+  Copyright (c) 2006 - 2008, Intel Corporation\r
   All rights reserved. This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -17,7 +17,7 @@
 \r
 //\r
 // Standard device request and request type\r
-// By [Spec-USB20/Chapter-9.4]\r
+// USB 2.0 spec, Section 9.4\r
 //\r
 #define USB_DEV_GET_STATUS                  0x00\r
 #define USB_DEV_GET_STATUS_REQ_TYPE_D       0x80 // Receiver : Device\r
 // USB standard descriptors and reqeust\r
 //\r
 #pragma pack(1)\r
+\r
+///\r
+/// Format of Setup Data for USB Device Requests\r
+/// USB 2.0 spec, Section 9.3\r
+///\r
 typedef struct {\r
   UINT8           RequestType;\r
   UINT8           Request;\r
@@ -71,6 +76,10 @@ typedef struct {
   UINT16          Length;\r
 } USB_DEVICE_REQUEST;\r
 \r
+///\r
+/// Standard Device Descriptor\r
+/// USB 2.0 spec, Section 9.6.1\r
+///\r
 typedef struct {\r
   UINT8           Length;\r
   UINT8           DescriptorType;\r
@@ -88,6 +97,10 @@ typedef struct {
   UINT8           NumConfigurations;\r
 } USB_DEVICE_DESCRIPTOR;\r
 \r
+///\r
+/// Standard Configuration Descriptor\r
+/// USB 2.0 spec, Section 9.6.3\r
+///\r
 typedef struct {\r
   UINT8           Length;\r
   UINT8           DescriptorType;\r
@@ -99,6 +112,10 @@ typedef struct {
   UINT8           MaxPower;\r
 } USB_CONFIG_DESCRIPTOR;\r
 \r
+///\r
+/// Standard Interface Descriptor\r
+/// USB 2.0 spec, Section 9.6.5\r
+///\r
 typedef struct {\r
   UINT8           Length;\r
   UINT8           DescriptorType;\r
@@ -111,6 +128,10 @@ typedef struct {
   UINT8           Interface;\r
 } USB_INTERFACE_DESCRIPTOR;\r
 \r
+///\r
+/// Standard Endpoint Descriptor\r
+/// USB 2.0 spec, Section 9.6.6\r
+///\r
 typedef struct {\r
   UINT8           Length;\r
   UINT8           DescriptorType;\r
@@ -120,6 +141,10 @@ typedef struct {
   UINT8           Interval;\r
 } USB_ENDPOINT_DESCRIPTOR;\r
 \r
+///\r
+/// UNICODE String Descriptor\r
+/// USB 2.0 spec, Section 9.6.7\r
+///\r
 typedef struct {\r
   UINT8           Length;\r
   UINT8           DescriptorType;\r
@@ -196,7 +221,8 @@ typedef enum {
 \r
 \r
 //\r
-// HID constants definition, see HID rev1.0\r
+// HID constants definition, see Device Class Definition\r
+// for Human Interface Devices (HID) rev1.11\r
 //\r
 \r
 //\r
@@ -314,6 +340,10 @@ typedef struct hid_class_descriptor {
   UINT16  DescriptorLength;\r
 } EFI_USB_HID_CLASS_DESCRIPTOR;\r
 \r
+///\r
+/// The HID descriptor identifies the length and type\r
+/// of subordinate descriptors for a device.\r
+///\r
 typedef struct hid_descriptor {\r
   UINT8                         Length;\r
   UINT8                         DescriptorType;\r
index d742bd03c1c3f74b85427bd7696f482f73c85d4b..f2026ecd874e78b5ff21e98d4b772ae3381e6d19 100644 (file)
@@ -1,6 +1,6 @@
 /** @file   \r
-  ACPI Watchdog Action Table as defined at\r
-  Microsoft Hardware Watchdog Timer Specification.\r
+  ACPI Watchdog Action Table (WADT) as defined at\r
+  Microsoft Hardware Watchdog Timers Design Specification\r
 \r
   Copyright (c) 2008, Intel Corporation\r
   All rights reserved. This program and the accompanying materials                          \r
@@ -41,6 +41,9 @@ typedef struct {
   UINT32                                  NumberWatchdogInstructionEntries;\r
 } EFI_ACPI_WATCHDOG_ACTION_1_0_TABLE;\r
 \r
+///\r
+/// Watchdog Instruction Entries\r
+///\r
 typedef struct {\r
   UINT8                                   WatchdogAction;\r
   UINT8                                   InstructionFlags;\r
@@ -57,9 +60,9 @@ typedef struct {
 ///\r
 #define EFI_ACPI_WATCHDOG_ACTION_1_0_TABLE_REVISION       0x01\r
 \r
-///\r
-/// WDAT 1.0 Flags\r
-///\r
+//\r
+// WDAT 1.0 Flags\r
+//\r
 #define EFI_ACPI_WDAT_1_0_WATCHDOG_ENABLED                0x1\r
 #define EFI_ACPI_WDAT_1_0_WATCHDOG_STOPPED_IN_SLEEP_STATE 0x80\r
 \r
index 5a0f464dd030f68de800a09431edf4a2f4cd62ca..90154b3d3e1e11f232183ac80797832a30cb640d 100644 (file)
@@ -1,8 +1,8 @@
 /** @file   \r
-  ACPI Watchdog Resource Table as defined at\r
-  Microsoft Hardware Watchdog Timer Specification.\r
+  ACPI Watchdog Resource Table (WDRT) as defined at\r
+  Microsoft Windows Hardware Developer Central.\r
 \r
-  Copyright (c) 2006 - 2007, Intel Corporation\r
+  Copyright (c) 2006 - 2008, Intel Corporation\r
   All rights reserved. This program and the accompanying materials                          \r
   are licensed and made available under the terms and conditions of the BSD License         \r
   which accompanies this distribution.  The full text of the license may be found at        \r
@@ -39,38 +39,12 @@ typedef struct {
   UINT8                                   Units;\r
 } EFI_ACPI_WATCHDOG_RESOURCE_1_0_TABLE;\r
 \r
-typedef struct {\r
-  EFI_ACPI_DESCRIPTION_HEADER             Header;\r
-  UINT32                                  WatchdogHeaderLength;\r
-  UINT8                                   PCISegment;\r
-  UINT8                                   PCIBusNumber;\r
-  UINT8                                   PCIDeviceNumber;\r
-  UINT8                                   PCIFunctionNumber;\r
-  UINT32                                  TimerPeriod;\r
-  UINT32                                  MaxCount;\r
-  UINT32                                  MinCount;\r
-  UINT8                                   WatchdogFlags;  \r
-  UINT8                                   Reserved_57[3];  \r
-  UINT32                                  NumberWatchdogInstructionEntries;\r
-} EFI_ACPI_WATCHDOG_RESOURCE_2_0_TABLE;\r
-\r
-typedef struct {\r
-  UINT8                                   WatchdogAction;\r
-  UINT8                                   InstructionFlags;\r
-  UINT8                                   Reserved_2;\r
-  UINT8                                   RegisterSize;\r
-  EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE  RegisterRegion;\r
-  UINT32                                  Value;\r
-  UINT32                                  Mask;\r
-} EFI_ACPI_WATCHDOG_RESOURCE_2_0_WATCHDOG_ACTION_INSTRUCTION_ENTRY;\r
-\r
 #pragma pack()\r
 \r
 //\r
 // WDRT Revision (defined in spec)\r
 //\r
 #define EFI_ACPI_WATCHDOG_RESOURCE_1_0_TABLE_REVISION  0x01\r
-#define EFI_ACPI_WATCHDOG_RESOURCE_2_0_TABLE_REVISION  0x02\r
 \r
 //\r
 // WDRT 1.0 Count Unit\r
@@ -79,37 +53,4 @@ typedef struct {
 #define EFI_ACPI_WDRT_1_0_COUNT_UNIT_100_MILLISEC_PER_COUNT 2\r
 #define EFI_ACPI_WDRT_1_0_COUNT_UNIT_10_MILLISEC_PER_COUNT  3\r
 \r
-//\r
-// WDRT 2.0 Flags\r
-//\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ENABLED                0x1\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_STOPPED_IN_SLEEP_STATE 0x80\r
-\r
-//\r
-// WDRT 2.0 Watchdog Actions\r
-//\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_RESET                          0x1\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_QUERY_CURRENT_COUNTDOWN_PERIOD 0x4\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_QUERY_COUNTDOWN_PERIOD         0x5\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_SET_COUNTDOWN_PERIOD           0x6\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_QUERY_RUNNING_STATE            0x8\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_SET_RUNNING_STATE              0x9\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_QUERY_STOPPED_STATE            0xA\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_SET_STOPPED_STATE              0xB\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_QUERY_REBOOT                   0x10\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_SET_REBOOT                     0x11\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_QUERY_SHUTDOWN                 0x12\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_SET_SHUTDOWN                   0x13\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_QUERY_WATCHDOG_STATUS          0x20\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_ACTION_SET_WATCHDOG_STATUS            0x21\r
-\r
-//\r
-// WDRT 2.0 Watchdog Action Entry Instruction Flags\r
-//\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_INSTRUCTION_READ_VALUE        0x0\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_INSTRUCTION_READ_COUNTDOWN    0x1\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_INSTRUCTION_WRITE_VALUE       0x2\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_INSTRUCTION_WRITE_COUNTDOWN   0x3\r
-#define EFI_ACPI_WDRT_2_0_WATCHDOG_INSTRUCTION_PRESERVE_REGISTER 0x80\r
-\r
 #endif\r