Home | History | Annotate | Line # | Download | only in protocol
legacyboot.h revision 1.1.1.1.6.2
      1  1.1.1.1.6.2  yamt /*	$NetBSD: legacyboot.h,v 1.1.1.1.6.2 2014/05/22 11:40:57 yamt Exp $	*/
      2  1.1.1.1.6.2  yamt 
      3  1.1.1.1.6.2  yamt /*++
      4  1.1.1.1.6.2  yamt 
      5  1.1.1.1.6.2  yamt Copyright (c) 1999 Intel Corporation
      6  1.1.1.1.6.2  yamt 
      7  1.1.1.1.6.2  yamt Module Name:
      8  1.1.1.1.6.2  yamt 
      9  1.1.1.1.6.2  yamt     legacyboot
     10  1.1.1.1.6.2  yamt 
     11  1.1.1.1.6.2  yamt Abstract:
     12  1.1.1.1.6.2  yamt 
     13  1.1.1.1.6.2  yamt     EFI support for legacy boot
     14  1.1.1.1.6.2  yamt 
     15  1.1.1.1.6.2  yamt 
     16  1.1.1.1.6.2  yamt 
     17  1.1.1.1.6.2  yamt Revision History
     18  1.1.1.1.6.2  yamt 
     19  1.1.1.1.6.2  yamt --*/
     20  1.1.1.1.6.2  yamt 
     21  1.1.1.1.6.2  yamt #ifndef _LEGACY_BOOT_INCLUDE_
     22  1.1.1.1.6.2  yamt #define _LEGACY_BOOT_INCLUDE_
     23  1.1.1.1.6.2  yamt 
     24  1.1.1.1.6.2  yamt #define LEGACY_BOOT_PROTOCOL \
     25  1.1.1.1.6.2  yamt     { 0x376e5eb2, 0x30e4, 0x11d3, { 0xba, 0xe5, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
     26  1.1.1.1.6.2  yamt 
     27  1.1.1.1.6.2  yamt #pragma pack(1)
     28  1.1.1.1.6.2  yamt 
     29  1.1.1.1.6.2  yamt //
     30  1.1.1.1.6.2  yamt // BBS 1.01 (See Appendix A) IPL and BCV Table Entry Data structure.
     31  1.1.1.1.6.2  yamt //  Seg:Off pointers have been converted to EFI pointers in this data structure
     32  1.1.1.1.6.2  yamt //  This is the structure that also maps to the EFI device path for the boot selection
     33  1.1.1.1.6.2  yamt //
     34  1.1.1.1.6.2  yamt typedef struct {
     35  1.1.1.1.6.2  yamt     UINT16  DeviceType;
     36  1.1.1.1.6.2  yamt     UINT16  StatusFlag;
     37  1.1.1.1.6.2  yamt     UINT32  Reserved;
     38  1.1.1.1.6.2  yamt     VOID    *BootHandler;   // Not an EFI entry point
     39  1.1.1.1.6.2  yamt     CHAR8   *DescString;
     40  1.1.1.1.6.2  yamt } BBS_TABLE_ENTRY;
     41  1.1.1.1.6.2  yamt #pragma pack()
     42  1.1.1.1.6.2  yamt 
     43  1.1.1.1.6.2  yamt typedef
     44  1.1.1.1.6.2  yamt EFI_STATUS
     45  1.1.1.1.6.2  yamt (EFIAPI *LEGACY_BOOT_CALL) (
     46  1.1.1.1.6.2  yamt     IN EFI_DEVICE_PATH      *DevicePath
     47  1.1.1.1.6.2  yamt     );
     48  1.1.1.1.6.2  yamt 
     49  1.1.1.1.6.2  yamt 
     50  1.1.1.1.6.2  yamt //
     51  1.1.1.1.6.2  yamt // BBS support functions
     52  1.1.1.1.6.2  yamt //  PnP Call numbers and BiosSelector hidden in implementation
     53  1.1.1.1.6.2  yamt //
     54  1.1.1.1.6.2  yamt 
     55  1.1.1.1.6.2  yamt typedef enum {
     56  1.1.1.1.6.2  yamt     IplRelative,
     57  1.1.1.1.6.2  yamt     BcvRelative
     58  1.1.1.1.6.2  yamt } BBS_TYPE;
     59  1.1.1.1.6.2  yamt 
     60  1.1.1.1.6.2  yamt INTERFACE_DECL(_LEGACY_BOOT_INTERFACE);
     61  1.1.1.1.6.2  yamt 
     62  1.1.1.1.6.2  yamt //
     63  1.1.1.1.6.2  yamt // == PnP Function 0x60 then BbsVersion == 0x0101 if this call fails then BbsVersion == 0x0000
     64  1.1.1.1.6.2  yamt //
     65  1.1.1.1.6.2  yamt 
     66  1.1.1.1.6.2  yamt //
     67  1.1.1.1.6.2  yamt // == PnP Function 0x61
     68  1.1.1.1.6.2  yamt //
     69  1.1.1.1.6.2  yamt typedef
     70  1.1.1.1.6.2  yamt EFI_STATUS
     71  1.1.1.1.6.2  yamt (EFIAPI *GET_DEVICE_COUNT) (
     72  1.1.1.1.6.2  yamt     IN  struct _LEGACY_BOOT_INTERFACE   *This,
     73  1.1.1.1.6.2  yamt     IN  BBS_TYPE        *TableType,
     74  1.1.1.1.6.2  yamt     OUT UINTN           *DeviceCount,
     75  1.1.1.1.6.2  yamt     OUT UINTN           *MaxCount
     76  1.1.1.1.6.2  yamt     );
     77  1.1.1.1.6.2  yamt 
     78  1.1.1.1.6.2  yamt //
     79  1.1.1.1.6.2  yamt // == PnP Function 0x62
     80  1.1.1.1.6.2  yamt //
     81  1.1.1.1.6.2  yamt typedef
     82  1.1.1.1.6.2  yamt EFI_STATUS
     83  1.1.1.1.6.2  yamt (EFIAPI *GET_PRIORITY_AND_TABLE) (
     84  1.1.1.1.6.2  yamt     IN  struct _LEGACY_BOOT_INTERFACE   *This,
     85  1.1.1.1.6.2  yamt     IN  BBS_TYPE        *TableType,
     86  1.1.1.1.6.2  yamt     IN OUT  UINTN       *PrioritySize, // MaxCount * sizeof(UINT8)
     87  1.1.1.1.6.2  yamt     OUT     UINTN       *Priority,
     88  1.1.1.1.6.2  yamt     IN OUT  UINTN       *TableSize,    // MaxCount * sizeof(BBS_TABLE_ENTRY)
     89  1.1.1.1.6.2  yamt     OUT BBS_TABLE_ENTRY *TableEntrySize
     90  1.1.1.1.6.2  yamt     );
     91  1.1.1.1.6.2  yamt 
     92  1.1.1.1.6.2  yamt //
     93  1.1.1.1.6.2  yamt // == PnP Function 0x63
     94  1.1.1.1.6.2  yamt //
     95  1.1.1.1.6.2  yamt typedef
     96  1.1.1.1.6.2  yamt EFI_STATUS
     97  1.1.1.1.6.2  yamt (EFIAPI *SET_PRIORITY) (
     98  1.1.1.1.6.2  yamt     IN  struct _LEGACY_BOOT_INTERFACE   *This,
     99  1.1.1.1.6.2  yamt     IN  BBS_TYPE        *TableType,
    100  1.1.1.1.6.2  yamt     IN OUT  UINTN       *PrioritySize,
    101  1.1.1.1.6.2  yamt     OUT     UINTN       *Priority
    102  1.1.1.1.6.2  yamt     );
    103  1.1.1.1.6.2  yamt 
    104  1.1.1.1.6.2  yamt typedef struct _LEGACY_BOOT_INTERFACE {
    105  1.1.1.1.6.2  yamt     LEGACY_BOOT_CALL    BootIt;
    106  1.1.1.1.6.2  yamt 
    107  1.1.1.1.6.2  yamt     //
    108  1.1.1.1.6.2  yamt     // New functions to allow BBS booting to be configured from EFI
    109  1.1.1.1.6.2  yamt     //
    110  1.1.1.1.6.2  yamt     UINTN                   BbsVersion;     // Currently 0x0101
    111  1.1.1.1.6.2  yamt     GET_DEVICE_COUNT        GetDeviceCount;
    112  1.1.1.1.6.2  yamt     GET_PRIORITY_AND_TABLE  GetPriorityAndTable;
    113  1.1.1.1.6.2  yamt     SET_PRIORITY            SetPriority;
    114  1.1.1.1.6.2  yamt } LEGACY_BOOT_INTERFACE;
    115  1.1.1.1.6.2  yamt 
    116  1.1.1.1.6.2  yamt EFI_STATUS
    117  1.1.1.1.6.2  yamt PlInitializeLegacyBoot (
    118  1.1.1.1.6.2  yamt     VOID
    119  1.1.1.1.6.2  yamt     );
    120  1.1.1.1.6.2  yamt 
    121  1.1.1.1.6.2  yamt #endif
    122