]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Bhyve/BhyveRfbDxe/Gop.h
OvmfPkg: Apply uncrustify changes
[mirror_edk2.git] / OvmfPkg / Bhyve / BhyveRfbDxe / Gop.h
CommitLineData
656419f9
RC
1/*++ @file\r
2\r
3Copyright (c) 2020, Rebecca Cran <rebecca@bsdio.com>\r
4Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>\r
5Portions copyright (c) 2010,Apple Inc. All rights reserved.<BR>\r
6\r
7SPDX-License-Identifier: BSD-2-Clause-Patent\r
8\r
9**/\r
10\r
9fb629ed
RC
11#ifndef _GOP_H_\r
12#define _GOP_H_\r
656419f9
RC
13\r
14#include <Uefi.h>\r
15#include <Protocol/GraphicsOutput.h>\r
16#include <Protocol/PciIo.h>\r
17#include <Protocol/DriverSupportedEfiVersion.h>\r
18#include <Protocol/DevicePath.h>\r
19\r
20#include <Guid/EventGroup.h>\r
21\r
22#include <Library/DebugLib.h>\r
23#include <Library/BaseLib.h>\r
24#include <Library/PcdLib.h>\r
25#include <Library/UefiDriverEntryPoint.h>\r
26#include <Library/UefiLib.h>\r
27#include <Library/BaseMemoryLib.h>\r
28#include <Library/MemoryAllocationLib.h>\r
29#include <Library/UefiBootServicesTableLib.h>\r
30#include <Library/DevicePathLib.h>\r
31\r
32#include <IndustryStandard/Pci.h>\r
33\r
ac0a286f 34#define GRAPHICS_OUTPUT_INVALID_MODE_NUMBER 0xffff\r
656419f9
RC
35\r
36typedef struct {\r
ac0a286f
MK
37 UINT32 HorizontalResolution;\r
38 UINT32 VerticalResolution;\r
39 UINT32 ColorDepth;\r
40 UINT32 RefreshRate;\r
656419f9
RC
41} GOP_MODE_DATA;\r
42\r
ac0a286f
MK
43#define PIXEL_RED_SHIFT 0\r
44#define PIXEL_GREEN_SHIFT 3\r
45#define PIXEL_BLUE_SHIFT 6\r
656419f9
RC
46\r
47#define PIXEL_RED_MASK (BIT7 | BIT6 | BIT5)\r
48#define PIXEL_GREEN_MASK (BIT4 | BIT3 | BIT2)\r
49#define PIXEL_BLUE_MASK (BIT1 | BIT0)\r
50\r
ac0a286f
MK
51#define PIXEL_TO_COLOR_BYTE(pixel, mask, shift) ((UINT8) ((pixel & mask) << shift))\r
52#define PIXEL_TO_RED_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_RED_MASK, PIXEL_RED_SHIFT)\r
53#define PIXEL_TO_GREEN_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_GREEN_MASK, PIXEL_GREEN_SHIFT)\r
54#define PIXEL_TO_BLUE_BYTE(pixel) PIXEL_TO_COLOR_BYTE(pixel, PIXEL_BLUE_MASK, PIXEL_BLUE_SHIFT)\r
656419f9
RC
55\r
56#define RGB_BYTES_TO_PIXEL(Red, Green, Blue) \\r
57 (UINT8) ( (((Red) >> PIXEL_RED_SHIFT) & PIXEL_RED_MASK) | \\r
58 (((Green) >> PIXEL_GREEN_SHIFT) & PIXEL_GREEN_MASK) | \\r
59 (((Blue) >> PIXEL_BLUE_SHIFT) & PIXEL_BLUE_MASK) )\r
60\r
61#define PIXEL24_RED_MASK 0x00ff0000\r
62#define PIXEL24_GREEN_MASK 0x0000ff00\r
63#define PIXEL24_BLUE_MASK 0x000000ff\r
64\r
ac0a286f
MK
65extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;\r
66extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;\r
656419f9 67\r
ac0a286f 68#define EMU_UGA_CLASS_NAME L"EmuGopWindow"\r
656419f9
RC
69\r
70#define GOP_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('G', 'o', 'p', 'N')\r
71typedef struct {\r
ac0a286f 72 UINT64 Signature;\r
656419f9 73\r
ac0a286f
MK
74 EFI_HANDLE Handle;\r
75 EFI_PCI_IO_PROTOCOL *PciIo;\r
76 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
77 EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;\r
656419f9 78\r
ac0a286f 79 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
656419f9
RC
80\r
81 //\r
82 // GOP Private Data for QueryMode ()\r
83 //\r
ac0a286f 84 GOP_MODE_DATA *ModeData;\r
656419f9 85\r
ac0a286f
MK
86 UINT64 FbAddr;\r
87 UINT32 FbSize;\r
656419f9
RC
88} GOP_PRIVATE_DATA;\r
89\r
656419f9
RC
90#define GOP_PRIVATE_DATA_FROM_THIS(a) \\r
91 CR(a, GOP_PRIVATE_DATA, GraphicsOutput, GOP_PRIVATE_DATA_SIGNATURE)\r
92\r
93typedef struct {\r
ac0a286f
MK
94 UINT32 FbSize;\r
95 UINT16 Width;\r
96 UINT16 Height;\r
97 UINT16 Depth;\r
98 UINT16 RefreshRate;\r
656419f9
RC
99} BHYVE_FBUF_MEMREGS;\r
100\r
101//\r
102// Global Protocol Variables\r
103//\r
ac0a286f
MK
104extern EFI_DRIVER_BINDING_PROTOCOL gEmuGopDriverBinding;\r
105extern EFI_COMPONENT_NAME_PROTOCOL gEmuGopComponentName;\r
106extern EFI_COMPONENT_NAME2_PROTOCOL gEmuGopComponentName2;\r
656419f9
RC
107\r
108//\r
109// Gop Hardware abstraction internal worker functions\r
110//\r
111EFI_STATUS\r
112EmuGopConstructor (\r
ac0a286f 113 IN GOP_PRIVATE_DATA *Private\r
656419f9
RC
114 );\r
115\r
116EFI_STATUS\r
117EmuGopDestructor (\r
ac0a286f 118 IN GOP_PRIVATE_DATA *Private\r
656419f9
RC
119 );\r
120\r
121VOID\r
122EFIAPI\r
123ShutdownGopEvent (\r
124 IN EFI_EVENT Event,\r
125 IN VOID *Context\r
126 );\r
127\r
128VOID\r
129BhyveSetGraphicsMode (\r
130 GOP_PRIVATE_DATA *Private,\r
ac0a286f
MK
131 UINT16 Width,\r
132 UINT16 Height,\r
133 UINT16 Depth\r
656419f9
RC
134 );\r
135\r
136VOID\r
137BhyveGetMemregs (\r
ac0a286f
MK
138 GOP_PRIVATE_DATA *Private,\r
139 BHYVE_FBUF_MEMREGS *Memregs\r
656419f9
RC
140 );\r
141\r
142VOID\r
143InstallVbeShim (\r
ac0a286f
MK
144 IN CONST CHAR16 *CardName,\r
145 IN EFI_PHYSICAL_ADDRESS FrameBufferBase\r
656419f9
RC
146 );\r
147\r
9fb629ed 148#endif /* _GOP_H_ */\r