]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/ElTorito.h
MdePkg: Fix ACPI NFIT GUID definitions
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / ElTorito.h
index d26200a80a1a4ac281570ade861ec9adc0b4a337..97618b2cc05b79b0af43c84a6f323f79a55fc2c3 100644 (file)
@@ -1,8 +1,12 @@
 /** @file\r
-  ElTorito Partitions Format Definition.\r
-\r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
+  ElTorito Partitions Format Definition. \r
+  This file includes some defintions from \r
+  1. "El Torito" Bootable CD-ROM Format Specification, Version 1.0.\r
+  2. Volume and File Structure of CDROM for Information Interchange, \r
+     Standard ECMA-119. (IS0 9660)\r
+\r
+Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
+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
 http://opensource.org/licenses/bsd-license.php                                            \r
@@ -10,13 +14,13 @@ http://opensource.org/licenses/bsd-license.php
 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
---*/\r
+**/\r
 \r
 #ifndef _ELTORITO_H_\r
 #define _ELTORITO_H_\r
 \r
 //\r
-// CDROM_VOLUME_DESCRIPTOR.Types\r
+// CDROM_VOLUME_DESCRIPTOR.Types, defined in ISO 9660\r
 //\r
 #define CDVOL_TYPE_STANDARD 0x0\r
 #define CDVOL_TYPE_CODED    0x1\r
@@ -53,24 +57,44 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #pragma pack(1)\r
 \r
-///\r
-/// El Torito Volume Descriptor\r
-/// Note that the CDROM_VOLUME_DESCRIPTOR does not match the ISO-9660\r
-/// descriptor.  For some reason descriptor used by El Torito is\r
-/// different, but they start the same.   The El Torito descriptor\r
-/// is left shifted 1 byte starting with the SystemId.  (Note this\r
-/// causes the field to get unaligned)\r
-///\r
-typedef struct {\r
-  UINT8   Type;\r
-  CHAR8   Id[5];  // CD001\r
-  UINT8   Version;\r
-  CHAR8   SystemId[26];\r
-  CHAR8   Unused[38];\r
-  UINT8   EltCatalog[4];\r
-  CHAR8   Unused2[5];\r
-  UINT32  VolSpaceSize[2];\r
-} CDROM_VOLUME_DESCRIPTOR;\r
+/// \r
+/// CD-ROM Volume Descriptor\r
+/// \r
+typedef union { \r
+  struct {\r
+    UINT8   Type;     \r
+    CHAR8   Id[5];           ///< "CD001"    \r
+    CHAR8   Reserved[82];\r
+  } Unknown;\r
+\r
+  ///\r
+  /// Boot Record Volume Descriptor, defined in "El Torito" Specification.\r
+  ///\r
+  struct {\r
+    UINT8   Type;            ///< Must be 0\r
+    CHAR8   Id[5];           ///< "CD001" \r
+    UINT8   Version;         ///< Must be 1 \r
+    CHAR8   SystemId[32];    ///< "EL TORITO SPECIFICATION" \r
+    CHAR8   Unused[32];      ///< Must be 0 \r
+    UINT8   EltCatalog[4];   ///< Absolute pointer to first sector of Boot Catalog\r
+    CHAR8   Unused2[13];     ///< Must be 0\r
+  } BootRecordVolume;\r
\r
+  ///\r
+  /// Primary Volumn Descriptor, defined in ISO 9660.\r
+  ///\r
+  struct {\r
+    UINT8   Type; \r
+    CHAR8   Id[5];           ///< "CD001"\r
+    UINT8   Version; \r
+    UINT8   Unused;          ///< Must be 0\r
+    CHAR8   SystemId[32];    \r
+    CHAR8   VolumeId[32];    \r
+    UINT8   Unused2[8];      ///< Must be 0 \r
+    UINT32  VolSpaceSize[2]; ///< the number of Logical Blocks\r
+  } PrimaryVolume;\r
+\r
+} CDROM_VOLUME_DESCRIPTOR; \r
 \r
 ///\r
 /// Catalog Entry\r
@@ -84,7 +108,7 @@ typedef union {
   /// Catalog validation entry (Catalog header)\r
   ///\r
   struct {\r
-    UINT8   Indicator;\r
+    UINT8   Indicator;       ///< Must be 01\r
     UINT8   PlatformId;\r
     UINT16  Reserved;\r
     CHAR8   ManufacId[24];\r
@@ -96,12 +120,12 @@ typedef union {
   /// Initial/Default Entry or Section Entry\r
   ///\r
   struct {\r
-    UINT8   Indicator;\r
+    UINT8   Indicator;       ///< 88 = Bootable, 00 = Not Bootable\r
     UINT8   MediaType : 4;\r
-    UINT8   Reserved1 : 4;\r
+    UINT8   Reserved1 : 4;   ///< Must be 0\r
     UINT16  LoadSegment;\r
     UINT8   SystemType;\r
-    UINT8   Reserved2;\r
+    UINT8   Reserved2;       ///< Must be 0\r
     UINT16  SectorCount;\r
     UINT32  Lba;\r
   } Boot;\r
@@ -110,9 +134,9 @@ typedef union {
   /// Section Header Entry\r
   ///\r
   struct {\r
-    UINT8   Indicator;\r
+    UINT8   Indicator;       ///< 90 - Header, more header follw, 91 - Final Header\r
     UINT8   PlatformId;\r
-    UINT16  SectionEntries;\r
+    UINT16  SectionEntries;  ///< Number of section entries following this header\r
     CHAR8   Id[28];\r
   } Section;\r
 \r