1264095Semaste/* $FreeBSD: releng/10.3/sys/boot/efi/include/efigop.h 294981 2016-01-28 12:11:42Z smh $ */
2264095Semaste/*++
3264095Semaste
4264095SemasteCopyright (c)  1999 - 2002 Intel Corporation. All rights reserved
5264095SemasteThis software and associated documentation (if any) is furnished
6264095Semasteunder a license and may only be used or copied in accordance
7264095Semastewith the terms of the license. Except as permitted by such
8264095Semastelicense, no part of this software or documentation may be
9264095Semastereproduced, stored in a retrieval system, or transmitted in any
10264095Semasteform or by any means without the express written consent of
11264095SemasteIntel Corporation.
12264095Semaste
13264095SemasteModule Name:
14264095Semaste
15264095Semaste    efigop.h
16264095Semaste
17264095SemasteAbstract:
18264095Semaste    Info about framebuffers
19264095Semaste
20264095Semaste
21264095Semaste
22264095Semaste
23264095SemasteRevision History
24264095Semaste
25264095Semaste--*/
26264095Semaste
27264095Semaste#ifndef _EFIGOP_H
28264095Semaste#define _EFIGOP_H
29264095Semaste
30294981Ssmh#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \
31294981Ssmh    { 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a} }
32264095Semaste
33264095SemasteINTERFACE_DECL(_EFI_GRAPHICS_OUTPUT);
34264095Semaste
35264095Semastetypedef struct {
36264095Semaste	UINT32	RedMask;
37264095Semaste	UINT32	GreenMask;
38264095Semaste	UINT32	BlueMask;
39264095Semaste	UINT32	ReservedMask;
40264095Semaste} EFI_PIXEL_BITMASK;
41264095Semaste
42264095Semastetypedef enum {
43264095Semaste	PixelRedGreenBlueReserved8BitPerColor,
44264095Semaste	PixelBlueGreenRedReserved8BitPerColor,
45264095Semaste	PixelBitMask,
46264095Semaste	PixelBltOnly,
47264095Semaste	PixelFormatMax,
48264095Semaste} EFI_GRAPHICS_PIXEL_FORMAT;
49264095Semaste
50264095Semastetypedef struct {
51264095Semaste	UINT32				Version;
52264095Semaste	UINT32				HorizontalResolution;
53264095Semaste	UINT32				VerticalResolution;
54264095Semaste	EFI_GRAPHICS_PIXEL_FORMAT	PixelFormat;
55264095Semaste	EFI_PIXEL_BITMASK		PixelInformation;
56264095Semaste	UINT32				PixelsPerScanLine;
57264095Semaste} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION;
58264095Semaste
59264095Semastetypedef struct {
60264095Semaste	UINT32					MaxMode;
61264095Semaste	UINT32					Mode;
62264095Semaste	EFI_GRAPHICS_OUTPUT_MODE_INFORMATION	*Info;
63264095Semaste	UINTN					SizeOfInfo;
64264095Semaste	EFI_PHYSICAL_ADDRESS			FrameBufferBase;
65264095Semaste	UINTN					FrameBufferSize;
66264095Semaste} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE;
67264095Semaste
68264095Semastetypedef
69264095SemasteEFI_STATUS
70264095Semaste(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE) (
71264095Semaste    IN  struct _EFI_GRAPHICS_OUTPUT		*This,
72264095Semaste    IN  UINT32					ModeNumber,
73264095Semaste    OUT UINTN					*SizeOfInfo,
74264095Semaste    OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION	**Info
75264095Semaste    );
76264095Semaste
77264095Semastetypedef
78264095SemasteEFI_STATUS
79264095Semaste(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE) (
80264095Semaste    IN  struct _EFI_GRAPHICS_OUTPUT	*This,
81264095Semaste    IN  UINT32				ModeNumber
82264095Semaste    );
83264095Semaste
84264095Semastetypedef struct {
85264095Semaste	UINT8	Blue;
86264095Semaste	UINT8	Green;
87264095Semaste	UINT8	Red;
88264095Semaste	UINT8	Reserved;
89264095Semaste} EFI_GRAPHICS_OUTPUT_BLT_PIXEL;
90264095Semaste
91264095Semastetypedef enum {
92264095Semaste	EfiBltVideoFill,
93264095Semaste	EfiBltVideoToBltBuffer,
94264095Semaste	EfiBltBufferToVideo,
95264095Semaste	EfiBltVideoToVideo,
96264095Semaste	EfiGraphcisOutputBltOperationMax,
97264095Semaste} EFI_GRAPHICS_OUTPUT_BLT_OPERATION;
98264095Semaste
99264095Semastetypedef
100264095SemasteEFI_STATUS
101264095Semaste(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT) (
102264095Semaste    IN struct _EFI_GRAPHICS_OUTPUT		*This,
103264095Semaste    IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL	*BltBuffer,
104264095Semaste    IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION	BltOperation,
105264095Semaste    IN UINTN					SourceX,
106264095Semaste    IN UINTN					SourceY,
107264095Semaste    IN UINTN					DestinationX,
108264095Semaste    IN UINTN					DestinationY,
109264095Semaste    IN UINTN					Width,
110264095Semaste    IN UINTN					Height,
111264095Semaste    IN UINTN					Delta
112264095Semaste    );
113264095Semaste
114264095Semastetypedef struct _EFI_GRAPHICS_OUTPUT {
115264095Semaste	EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE	QueryMode;
116264095Semaste	EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE	SetMode;
117264095Semaste	EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT	Blt;
118264095Semaste	EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE	*Mode;
119264095Semaste} EFI_GRAPHICS_OUTPUT;
120264095Semaste
121264095Semaste#endif /* _EFIGOP_H */
122