source: bootcd/isolinux/syslinux-6.03/efi32/include/efi/efiprot.h @ e16e8f2

Last change on this file since e16e8f2 was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 21.0 KB
Line 
1#ifndef _EFI_PROT_H
2#define _EFI_PROT_H
3
4/*++
5
6Copyright (c) 1998  Intel Corporation
7
8Module Name:
9
10    efiprot.h
11
12Abstract:
13
14    EFI Protocols
15
16
17
18Revision History
19
20--*/
21
22//
23//  FPSWA library protocol
24//
25#define FPSWA_PROTOCOL          \
26    { 0xc41b6531, 0x97b9, 0x11d3, {0x9a, 0x29, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
27
28//
29// Device Path protocol
30//
31
32#define DEVICE_PATH_PROTOCOL    \
33    { 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
34
35
36//
37// Block IO protocol
38//
39
40#define BLOCK_IO_PROTOCOL \
41    { 0x964e5b21, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
42#define EFI_BLOCK_IO_INTERFACE_REVISION   0x00010000
43#define EFI_BLOCK_IO_INTERFACE_REVISION2  0x00020001
44#define EFI_BLOCK_IO_INTERFACE_REVISION3  ((2<<16) | 31)
45
46INTERFACE_DECL(_EFI_BLOCK_IO);
47
48typedef
49EFI_STATUS
50(EFIAPI *EFI_BLOCK_RESET) (
51    IN struct _EFI_BLOCK_IO     *This,
52    IN BOOLEAN                  ExtendedVerification
53    );
54
55typedef
56EFI_STATUS
57(EFIAPI *EFI_BLOCK_READ) (
58    IN struct _EFI_BLOCK_IO     *This,
59    IN UINT32                   MediaId,
60    IN EFI_LBA                  LBA,
61    IN UINTN                    BufferSize,
62    OUT VOID                    *Buffer
63    );
64
65
66typedef
67EFI_STATUS
68(EFIAPI *EFI_BLOCK_WRITE) (
69    IN struct _EFI_BLOCK_IO     *This,
70    IN UINT32                   MediaId,
71    IN EFI_LBA                  LBA,
72    IN UINTN                    BufferSize,
73    IN VOID                     *Buffer
74    );
75
76
77typedef
78EFI_STATUS
79(EFIAPI *EFI_BLOCK_FLUSH) (
80    IN struct _EFI_BLOCK_IO     *This
81    );
82
83
84
85typedef struct {
86    UINT32              MediaId;
87    BOOLEAN             RemovableMedia;
88    BOOLEAN             MediaPresent;
89
90    BOOLEAN             LogicalPartition;
91    BOOLEAN             ReadOnly;
92    BOOLEAN             WriteCaching;
93
94    UINT32              BlockSize;
95    UINT32              IoAlign;
96
97    EFI_LBA             LastBlock;
98
99    /* revision 2 */
100    EFI_LBA             LowestAlignedLba;
101    UINT32              LogicalBlocksPerPhysicalBlock;
102    /* revision 3 */
103    UINT32              OptimalTransferLengthGranularity;
104} EFI_BLOCK_IO_MEDIA;
105
106typedef struct _EFI_BLOCK_IO {
107    UINT64                  Revision;
108
109    EFI_BLOCK_IO_MEDIA      *Media;
110
111    EFI_BLOCK_RESET         Reset;
112    EFI_BLOCK_READ          ReadBlocks;
113    EFI_BLOCK_WRITE         WriteBlocks;
114    EFI_BLOCK_FLUSH         FlushBlocks;
115
116} EFI_BLOCK_IO;
117
118
119
120//
121// Disk Block IO protocol
122//
123
124#define DISK_IO_PROTOCOL \
125    { 0xce345171, 0xba0b, 0x11d2,  {0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
126#define EFI_DISK_IO_INTERFACE_REVISION   0x00010000
127
128INTERFACE_DECL(_EFI_DISK_IO);
129
130typedef
131EFI_STATUS
132(EFIAPI *EFI_DISK_READ) (
133    IN struct _EFI_DISK_IO      *This,
134    IN UINT32                   MediaId,
135    IN UINT64                   Offset,
136    IN UINTN                    BufferSize,
137    OUT VOID                    *Buffer
138    );
139
140
141typedef
142EFI_STATUS
143(EFIAPI *EFI_DISK_WRITE) (
144    IN struct _EFI_DISK_IO      *This,
145    IN UINT32                   MediaId,
146    IN UINT64                   Offset,
147    IN UINTN                    BufferSize,
148    IN VOID                     *Buffer
149    );
150
151
152typedef struct _EFI_DISK_IO {
153    UINT64              Revision;
154    EFI_DISK_READ       ReadDisk;
155    EFI_DISK_WRITE      WriteDisk;
156} EFI_DISK_IO;
157
158
159//
160// Simple file system protocol
161//
162
163#define SIMPLE_FILE_SYSTEM_PROTOCOL \
164    { 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
165
166INTERFACE_DECL(_EFI_FILE_IO_INTERFACE);
167INTERFACE_DECL(_EFI_FILE_HANDLE);
168
169typedef
170EFI_STATUS
171(EFIAPI *EFI_VOLUME_OPEN) (
172    IN struct _EFI_FILE_IO_INTERFACE    *This,
173    OUT struct _EFI_FILE_HANDLE         **Root
174    );
175
176#define EFI_FILE_IO_INTERFACE_REVISION   0x00010000
177
178typedef struct _EFI_FILE_IO_INTERFACE {
179    UINT64                  Revision;
180    EFI_VOLUME_OPEN         OpenVolume;
181} EFI_FILE_IO_INTERFACE;
182
183//
184//
185//
186
187typedef
188EFI_STATUS
189(EFIAPI *EFI_FILE_OPEN) (
190    IN struct _EFI_FILE_HANDLE  *File,
191    OUT struct _EFI_FILE_HANDLE **NewHandle,
192    IN CHAR16                   *FileName,
193    IN UINT64                   OpenMode,
194    IN UINT64                   Attributes
195    );
196
197// Open modes
198#define EFI_FILE_MODE_READ      0x0000000000000001
199#define EFI_FILE_MODE_WRITE     0x0000000000000002
200#define EFI_FILE_MODE_CREATE    0x8000000000000000
201
202// File attributes
203#define EFI_FILE_READ_ONLY      0x0000000000000001
204#define EFI_FILE_HIDDEN         0x0000000000000002
205#define EFI_FILE_SYSTEM         0x0000000000000004
206#define EFI_FILE_RESERVIED      0x0000000000000008
207#define EFI_FILE_DIRECTORY      0x0000000000000010
208#define EFI_FILE_ARCHIVE        0x0000000000000020
209#define EFI_FILE_VALID_ATTR     0x0000000000000037
210
211typedef
212EFI_STATUS
213(EFIAPI *EFI_FILE_CLOSE) (
214    IN struct _EFI_FILE_HANDLE  *File
215    );
216
217typedef
218EFI_STATUS
219(EFIAPI *EFI_FILE_DELETE) (
220    IN struct _EFI_FILE_HANDLE  *File
221    );
222
223typedef
224EFI_STATUS
225(EFIAPI *EFI_FILE_READ) (
226    IN struct _EFI_FILE_HANDLE  *File,
227    IN OUT UINTN                *BufferSize,
228    OUT VOID                    *Buffer
229    );
230
231typedef
232EFI_STATUS
233(EFIAPI *EFI_FILE_WRITE) (
234    IN struct _EFI_FILE_HANDLE  *File,
235    IN OUT UINTN                *BufferSize,
236    IN VOID                     *Buffer
237    );
238
239typedef
240EFI_STATUS
241(EFIAPI *EFI_FILE_SET_POSITION) (
242    IN struct _EFI_FILE_HANDLE  *File,
243    IN UINT64                   Position
244    );
245
246typedef
247EFI_STATUS
248(EFIAPI *EFI_FILE_GET_POSITION) (
249    IN struct _EFI_FILE_HANDLE  *File,
250    OUT UINT64                  *Position
251    );
252
253typedef
254EFI_STATUS
255(EFIAPI *EFI_FILE_GET_INFO) (
256    IN struct _EFI_FILE_HANDLE  *File,
257    IN EFI_GUID                 *InformationType,
258    IN OUT UINTN                *BufferSize,
259    OUT VOID                    *Buffer
260    );
261
262typedef
263EFI_STATUS
264(EFIAPI *EFI_FILE_SET_INFO) (
265    IN struct _EFI_FILE_HANDLE  *File,
266    IN EFI_GUID                 *InformationType,
267    IN UINTN                    BufferSize,
268    IN VOID                     *Buffer
269    );
270
271typedef
272EFI_STATUS
273(EFIAPI *EFI_FILE_FLUSH) (
274    IN struct _EFI_FILE_HANDLE  *File
275    );
276
277
278
279#define EFI_FILE_HANDLE_REVISION         0x00010000
280typedef struct _EFI_FILE_HANDLE {
281    UINT64                  Revision;
282    EFI_FILE_OPEN           Open;
283    EFI_FILE_CLOSE          Close;
284    EFI_FILE_DELETE         Delete;
285    EFI_FILE_READ           Read;
286    EFI_FILE_WRITE          Write;
287    EFI_FILE_GET_POSITION   GetPosition;
288    EFI_FILE_SET_POSITION   SetPosition;
289    EFI_FILE_GET_INFO       GetInfo;
290    EFI_FILE_SET_INFO       SetInfo;
291    EFI_FILE_FLUSH          Flush;
292} EFI_FILE, *EFI_FILE_HANDLE;
293
294
295//
296// File information types
297//
298
299#define EFI_FILE_INFO_ID   \
300    { 0x9576e92, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
301
302typedef struct {
303    UINT64                  Size;
304    UINT64                  FileSize;
305    UINT64                  PhysicalSize;
306    EFI_TIME                CreateTime;
307    EFI_TIME                LastAccessTime;
308    EFI_TIME                ModificationTime;
309    UINT64                  Attribute;
310    CHAR16                  FileName[1];
311} EFI_FILE_INFO;
312
313//
314// The FileName field of the EFI_FILE_INFO data structure is variable length.
315// Whenever code needs to know the size of the EFI_FILE_INFO data structure, it needs to
316// be the size of the data structure without the FileName field.  The following macro
317// computes this size correctly no matter how big the FileName array is declared.
318// This is required to make the EFI_FILE_INFO data structure ANSI compilant.
319//
320
321#define SIZE_OF_EFI_FILE_INFO EFI_FIELD_OFFSET(EFI_FILE_INFO,FileName)
322
323#define EFI_FILE_SYSTEM_INFO_ID    \
324    { 0x9576e93, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
325
326typedef struct {
327    UINT64                  Size;
328    BOOLEAN                 ReadOnly;
329    UINT64                  VolumeSize;
330    UINT64                  FreeSpace;
331    UINT32                  BlockSize;
332    CHAR16                  VolumeLabel[1];
333} EFI_FILE_SYSTEM_INFO;
334
335//
336// The VolumeLabel field of the EFI_FILE_SYSTEM_INFO data structure is variable length.
337// Whenever code needs to know the size of the EFI_FILE_SYSTEM_INFO data structure, it needs
338// to be the size of the data structure without the VolumeLable field.  The following macro
339// computes this size correctly no matter how big the VolumeLable array is declared.
340// This is required to make the EFI_FILE_SYSTEM_INFO data structure ANSI compilant.
341//
342
343#define SIZE_OF_EFI_FILE_SYSTEM_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_INFO,VolumeLabel)
344
345#define EFI_FILE_SYSTEM_VOLUME_LABEL_INFO_ID    \
346    { 0xDB47D7D3,0xFE81, 0x11d3, {0x9A, 0x35, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }
347
348typedef struct {
349    CHAR16                  VolumeLabel[1];
350} EFI_FILE_SYSTEM_VOLUME_LABEL_INFO;
351
352#define SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL_INFO EFI_FIELD_OFFSET(EFI_FILE_SYSTEM_VOLUME_LABEL_INFO,VolumeLabel)
353
354//
355// Load file protocol
356//
357
358
359#define LOAD_FILE_PROTOCOL \
360    { 0x56EC3091, 0x954C, 0x11d2, {0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B} }
361
362INTERFACE_DECL(_EFI_LOAD_FILE_INTERFACE);
363
364typedef
365EFI_STATUS
366(EFIAPI *EFI_LOAD_FILE) (
367    IN struct _EFI_LOAD_FILE_INTERFACE  *This,
368    IN EFI_DEVICE_PATH                  *FilePath,
369    IN BOOLEAN                          BootPolicy,
370    IN OUT UINTN                        *BufferSize,
371    IN VOID                             *Buffer OPTIONAL
372    );
373
374typedef struct _EFI_LOAD_FILE_INTERFACE {
375    EFI_LOAD_FILE                       LoadFile;
376} EFI_LOAD_FILE_INTERFACE;
377
378
379//
380// Device IO protocol
381//
382
383#define DEVICE_IO_PROTOCOL \
384    { 0xaf6ac311, 0x84c3, 0x11d2, {0x8e, 0x3c, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
385
386INTERFACE_DECL(_EFI_DEVICE_IO_INTERFACE);
387
388typedef enum {
389    IO_UINT8,
390    IO_UINT16,
391    IO_UINT32,
392    IO_UINT64,
393//
394// Specification Change: Copy from MMIO to MMIO vs. MMIO to buffer, buffer to MMIO
395//
396    MMIO_COPY_UINT8,
397    MMIO_COPY_UINT16,
398    MMIO_COPY_UINT32,
399    MMIO_COPY_UINT64
400} EFI_IO_WIDTH;
401
402#define EFI_PCI_ADDRESS(_bus,_dev,_func) \
403    ( (UINT64) ( (((UINTN)_bus) << 24) + (((UINTN)_dev) << 16) + (((UINTN)_func) << 8) ) )
404
405
406typedef
407EFI_STATUS
408(EFIAPI *EFI_DEVICE_IO) (
409    IN struct _EFI_DEVICE_IO_INTERFACE *This,
410    IN EFI_IO_WIDTH                 Width,
411    IN UINT64                       Address,
412    IN UINTN                        Count,
413    IN OUT VOID                     *Buffer
414    );
415
416typedef struct {
417    EFI_DEVICE_IO                   Read;
418    EFI_DEVICE_IO                   Write;
419} EFI_IO_ACCESS;
420
421typedef
422EFI_STATUS
423(EFIAPI *EFI_PCI_DEVICE_PATH) (
424    IN struct _EFI_DEVICE_IO_INTERFACE  *This,
425    IN UINT64                           Address,
426    IN OUT EFI_DEVICE_PATH              **PciDevicePath
427    );
428
429typedef enum {
430    EfiBusMasterRead,
431    EfiBusMasterWrite,
432    EfiBusMasterCommonBuffer
433} EFI_IO_OPERATION_TYPE;
434
435typedef
436EFI_STATUS
437(EFIAPI *EFI_IO_MAP) (
438    IN struct _EFI_DEVICE_IO_INTERFACE  *This,
439    IN EFI_IO_OPERATION_TYPE            Operation,
440    IN EFI_PHYSICAL_ADDRESS             *HostAddress,
441    IN OUT UINTN                        *NumberOfBytes,
442    OUT EFI_PHYSICAL_ADDRESS            *DeviceAddress,
443    OUT VOID                            **Mapping
444    );
445
446typedef
447EFI_STATUS
448(EFIAPI *EFI_IO_UNMAP) (
449    IN struct _EFI_DEVICE_IO_INTERFACE  *This,
450    IN VOID                             *Mapping
451    );
452
453typedef
454EFI_STATUS
455(EFIAPI *EFI_IO_ALLOCATE_BUFFER) (
456    IN struct _EFI_DEVICE_IO_INTERFACE  *This,
457    IN EFI_ALLOCATE_TYPE                Type,
458    IN EFI_MEMORY_TYPE                  MemoryType,
459    IN UINTN                            Pages,
460    IN OUT EFI_PHYSICAL_ADDRESS         *HostAddress
461    );
462
463typedef
464EFI_STATUS
465(EFIAPI *EFI_IO_FLUSH) (
466    IN struct _EFI_DEVICE_IO_INTERFACE  *This
467    );
468
469typedef
470EFI_STATUS
471(EFIAPI *EFI_IO_FREE_BUFFER) (
472    IN struct _EFI_DEVICE_IO_INTERFACE  *This,
473    IN UINTN                            Pages,
474    IN EFI_PHYSICAL_ADDRESS             HostAddress
475    );
476
477typedef struct _EFI_DEVICE_IO_INTERFACE {
478    EFI_IO_ACCESS                       Mem;
479    EFI_IO_ACCESS                       Io;
480    EFI_IO_ACCESS                       Pci;
481    EFI_IO_MAP                          Map;
482    EFI_PCI_DEVICE_PATH                 PciDevicePath;
483    EFI_IO_UNMAP                        Unmap;
484    EFI_IO_ALLOCATE_BUFFER              AllocateBuffer;
485    EFI_IO_FLUSH                        Flush;
486    EFI_IO_FREE_BUFFER                  FreeBuffer;
487} EFI_DEVICE_IO_INTERFACE;
488
489
490//
491// Unicode Collation protocol
492//
493
494#define UNICODE_COLLATION_PROTOCOL \
495    { 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc,  0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
496
497#define UNICODE_BYTE_ORDER_MARK       (CHAR16)(0xfeff)
498
499INTERFACE_DECL(_EFI_UNICODE_COLLATION_INTERFACE);
500
501typedef
502INTN
503(EFIAPI *EFI_UNICODE_STRICOLL) (
504    IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
505    IN CHAR16                         *s1,
506    IN CHAR16                         *s2
507    );
508
509typedef
510BOOLEAN
511(EFIAPI *EFI_UNICODE_METAIMATCH) (
512    IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
513    IN CHAR16                         *String,
514    IN CHAR16                         *Pattern
515    );
516
517typedef
518VOID
519(EFIAPI *EFI_UNICODE_STRLWR) (
520    IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
521    IN OUT CHAR16                       *Str
522    );
523
524typedef
525VOID
526(EFIAPI *EFI_UNICODE_STRUPR) (
527    IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
528    IN OUT CHAR16                       *Str
529    );
530
531typedef
532VOID
533(EFIAPI *EFI_UNICODE_FATTOSTR) (
534    IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
535    IN UINTN                            FatSize,
536    IN CHAR8                            *Fat,
537    OUT CHAR16                          *String
538    );
539
540typedef
541BOOLEAN
542(EFIAPI *EFI_UNICODE_STRTOFAT) (
543    IN struct _EFI_UNICODE_COLLATION_INTERFACE  *This,
544    IN CHAR16                           *String,
545    IN UINTN                            FatSize,
546    OUT CHAR8                           *Fat
547    );
548
549
550typedef struct _EFI_UNICODE_COLLATION_INTERFACE {
551
552    // general
553    EFI_UNICODE_STRICOLL                StriColl;
554    EFI_UNICODE_METAIMATCH              MetaiMatch;
555    EFI_UNICODE_STRLWR                  StrLwr;
556    EFI_UNICODE_STRUPR                  StrUpr;
557
558    // for supporting fat volumes
559    EFI_UNICODE_FATTOSTR                FatToStr;
560    EFI_UNICODE_STRTOFAT                StrToFat;
561
562    CHAR8                               *SupportedLanguages;
563} EFI_UNICODE_COLLATION_INTERFACE;
564
565/* Graphics output protocol */
566#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
567  { \
568    0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \
569  }
570
571typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL;
572
573typedef struct {
574  UINT32            RedMask;
575  UINT32            GreenMask;
576  UINT32            BlueMask;
577  UINT32            ReservedMask;
578} EFI_PIXEL_BITMASK;
579
580typedef enum {
581  PixelRedGreenBlueReserved8BitPerColor,
582  PixelBlueGreenRedReserved8BitPerColor,
583  PixelBitMask,
584  PixelBltOnly,
585  PixelFormatMax
586} EFI_GRAPHICS_PIXEL_FORMAT;
587
588typedef struct {
589  UINT32                     Version;
590  UINT32                     HorizontalResolution;
591  UINT32                     VerticalResolution;
592  EFI_GRAPHICS_PIXEL_FORMAT  PixelFormat;
593  EFI_PIXEL_BITMASK          PixelInformation;
594  UINT32                     PixelsPerScanLine;
595} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
596
597/**
598  Return the current video mode information.
599
600  @param  This       Protocol instance pointer.
601  @param  ModeNumber The mode number to return information on.
602  @param  SizeOfInfo A pointer to the size, in bytes, of the Info buffer.
603  @param  Info       A pointer to callee allocated buffer that returns information about ModeNumber.
604
605  @retval EFI_SUCCESS           Mode information returned.
606  @retval EFI_BUFFER_TOO_SMALL  The Info buffer was too small.
607  @retval EFI_DEVICE_ERROR      A hardware error occurred trying to retrieve the video mode.
608  @retval EFI_NOT_STARTED       Video display is not initialized. Call SetMode ()
609  @retval EFI_INVALID_PARAMETER One of the input args was NULL.
610
611**/
612typedef
613EFI_STATUS
614(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
615  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,
616  IN  UINT32                                ModeNumber,
617  OUT UINTN                                 *SizeOfInfo,
618  OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info
619  )
620;
621
622/**
623  Return the current video mode information.
624
625  @param  This              Protocol instance pointer.
626  @param  ModeNumber        The mode number to be set.
627
628  @retval EFI_SUCCESS       Graphics mode was changed.
629  @retval EFI_DEVICE_ERROR  The device had an error and could not complete the request.
630  @retval EFI_UNSUPPORTED   ModeNumber is not supported by this device.
631
632**/
633typedef
634EFI_STATUS
635(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
636  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
637  IN  UINT32                       ModeNumber
638  );
639
640typedef struct {
641  UINT8 Blue;
642  UINT8 Green;
643  UINT8 Red;
644  UINT8 Reserved;
645} EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
646
647typedef union {
648  EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel;
649  UINT32                        Raw;
650} EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
651
652typedef enum {
653  EfiBltVideoFill,
654  EfiBltVideoToBltBuffer,
655  EfiBltBufferToVideo,
656  EfiBltVideoToVideo,
657  EfiGraphicsOutputBltOperationMax
658} EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
659
660/**
661  The following table defines actions for BltOperations:
662
663  <B>EfiBltVideoFill</B> - Write data from the  BltBuffer pixel (SourceX, SourceY)
664  directly to every pixel of the video display rectangle
665  (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
666  Only one pixel will be used from the BltBuffer. Delta is NOT used.
667
668  <B>EfiBltVideoToBltBuffer</B> - Read data from the video display rectangle
669  (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in
670  the BltBuffer rectangle (DestinationX, DestinationY )
671  (DestinationX + Width, DestinationY + Height). If DestinationX or
672  DestinationY is not zero then Delta must be set to the length in bytes
673  of a row in the BltBuffer.
674
675  <B>EfiBltBufferToVideo</B> - Write data from the  BltBuffer rectangle
676  (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the
677  video display rectangle (DestinationX, DestinationY)
678  (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is
679  not zero then Delta must be set to the length in bytes of a row in the
680  BltBuffer.
681
682  <B>EfiBltVideoToVideo</B> - Copy from the video display rectangle (SourceX, SourceY)
683  (SourceX + Width, SourceY + Height) .to the video display rectangle
684  (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height).
685  The BltBuffer and Delta  are not used in this mode.
686
687  @param  This         Protocol instance pointer.
688  @param  BltBuffer    Buffer containing data to blit into video buffer. This
689                       buffer has a size of Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)
690  @param  BltOperation Operation to perform on BlitBuffer and video memory
691  @param  SourceX      X coordinate of source for the BltBuffer.
692  @param  SourceY      Y coordinate of source for the BltBuffer.
693  @param  DestinationX X coordinate of destination for the BltBuffer.
694  @param  DestinationY Y coordinate of destination for the BltBuffer.
695  @param  Width        Width of rectangle in BltBuffer in pixels.
696  @param  Height       Hight of rectangle in BltBuffer in pixels.
697  @param  Delta        OPTIONAL
698
699  @retval EFI_SUCCESS           The Blt operation completed.
700  @retval EFI_INVALID_PARAMETER BltOperation is not valid.
701  @retval EFI_DEVICE_ERROR      A hardware error occured writting to the video buffer.
702
703**/
704typedef
705EFI_STATUS
706(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
707  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL            *This,
708  IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL           *BltBuffer,   OPTIONAL
709  IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION       BltOperation,
710  IN  UINTN                                   SourceX,
711  IN  UINTN                                   SourceY,
712  IN  UINTN                                   DestinationX,
713  IN  UINTN                                   DestinationY,
714  IN  UINTN                                   Width,
715  IN  UINTN                                   Height,
716  IN  UINTN                                   Delta         OPTIONAL
717  );
718
719typedef struct {
720  UINT32                                 MaxMode;
721  UINT32                                 Mode;
722  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION   *Info;
723  UINTN                                  SizeOfInfo;
724  EFI_PHYSICAL_ADDRESS                   FrameBufferBase;
725  UINTN                                  FrameBufferSize;
726} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
727
728struct _EFI_GRAPHICS_OUTPUT_PROTOCOL {
729  EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE  QueryMode;
730  EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE    SetMode;
731  EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT         Blt;
732  EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE        *Mode;
733};
734
735INTERFACE_DECL(_EFI_SERVICE_BINDING);
736
737typedef
738EFI_STATUS
739(EFIAPI *EFI_SERVICE_BINDING_CREATE_CHILD) (
740    IN struct _EFI_SERVICE_BINDING *This,
741    IN EFI_HANDLE                  *ChildHandle
742    );
743
744typedef
745EFI_STATUS
746(EFIAPI *EFI_SERVICE_BINDING_DESTROY_CHILD) (
747    IN struct _EFI_SERVICE_BINDING *This,
748    IN EFI_HANDLE                  ChildHandle
749    );
750
751typedef struct _EFI_SERVICE_BINDING {
752    EFI_SERVICE_BINDING_CREATE_CHILD  CreateChild;
753    EFI_SERVICE_BINDING_DESTROY_CHILD DestroyChild;
754} EFI_SERVICE_BINDING;
755
756#endif
757
Note: See TracBrowser for help on using the repository browser.