Home | History | Annotate | Download | only in Guid
      1 /** @file
      2   Guid & data structure used for Delivering Capsules Containing Updates to Firmware
      3   Management Protocol
      4 
      5   Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR>
      6   This program and the accompanying materials
      7   are licensed and made available under the terms and conditions of the BSD License
      8   which accompanies this distribution.  The full text of the license may be found at
      9   http://opensource.org/licenses/bsd-license.php
     10 
     11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14   @par Revision Reference:
     15   GUIDs defined in UEFI 2.4 spec.
     16 
     17 **/
     18 
     19 
     20 #ifndef _FMP_CAPSULE_GUID_H__
     21 #define _FMP_CAPSULE_GUID_H__
     22 
     23 //
     24 // This is the GUID of the capsule for Firmware Management Protocol.
     25 //
     26 #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_ID_GUID \
     27   { \
     28     0x6dcbd5ed, 0xe82d, 0x4c44, {0xbd, 0xa1, 0x71, 0x94, 0x19, 0x9a, 0xd9, 0x2a } \
     29   }
     30 
     31 #pragma pack(1)
     32 
     33 typedef struct {
     34   UINT32 Version;
     35 
     36   ///
     37   /// The number of drivers included in the capsule and the number of corresponding
     38   /// offsets stored in ItemOffsetList array.
     39   ///
     40   UINT16 EmbeddedDriverCount;
     41 
     42   ///
     43   /// The number of payload items included in the capsule and the number of
     44   /// corresponding offsets stored in the ItemOffsetList array.
     45   ///
     46   UINT16 PayloadItemCount;
     47 
     48   ///
     49   /// Variable length array of dimension [EmbeddedDriverCount + PayloadItemCount]
     50   /// containing offsets of each of the drivers and payload items contained within the capsule
     51   ///
     52   // UINT64 ItemOffsetList[];
     53 } EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER;
     54 
     55 typedef struct {
     56   UINT32   Version;
     57 
     58   ///
     59   /// Used to identify device firmware targeted by this update. This guid is matched by
     60   /// system firmware against ImageTypeId field within a EFI_FIRMWARE_IMAGE_DESCRIPTOR
     61   ///
     62   EFI_GUID UpdateImageTypeId;
     63 
     64   ///
     65   /// Passed as ImageIndex in call to EFI_FIRMWARE_MANAGEMENT_PROTOCOL.SetImage()
     66   ///
     67   UINT8    UpdateImageIndex;
     68   UINT8    reserved_bytes[3];
     69 
     70   ///
     71   /// Size of the binary update image which immediately follows this structure
     72   ///
     73   UINT32   UpdateImageSize;
     74 
     75   ///
     76   /// Size of the VendorCode bytes which optionally immediately follow binary update image in the capsule
     77   ///
     78   UINT32   UpdateVendorCodeSize;
     79 
     80   ///
     81   /// The HardwareInstance to target with this update. If value is zero it means match all
     82   /// HardwareInstances. This field allows update software to target only a single device in
     83   /// cases where there are more than one device with the same ImageTypeId GUID.
     84   /// This header is outside the signed data of the Authentication Info structure and
     85   /// therefore can be modified without changing the Auth data.
     86   ///
     87   UINT64   UpdateHardwareInstance;
     88 } EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER;
     89 
     90 #pragma pack()
     91 
     92 
     93 #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER_INIT_VERSION       0x00000001
     94 #define EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION 0x00000002
     95 
     96 extern EFI_GUID gEfiFmpCapsuleGuid;
     97 
     98 #endif
     99