]> git.proxmox.com Git - mirror_edk2.git/blob - EdkModulePkg/Bus/Pci/CirrusLogic/Dxe/CirrusLogic5430.h
Make EdkModulePkg pass Intel IPF compiler with /W4 /WX switches, solving warning...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / CirrusLogic / Dxe / CirrusLogic5430.h
1 /** @file
2 Cirrus Logic 5430 Controller Driver
3
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 //
16 // Cirrus Logic 5430 Controller Driver
17 //
18
19 #ifndef _CIRRUS_LOGIC_5430_H_
20 #define _CIRRUS_LOGIC_5430_H_
21
22
23 #include <IndustryStandard/pci22.h>
24 //
25 // Cirrus Logic 5430 PCI Configuration Header values
26 //
27 #define CIRRUS_LOGIC_VENDOR_ID 0x1013
28 #define CIRRUS_LOGIC_5430_DEVICE_ID 0x00a8
29 #define CIRRUS_LOGIC_5430_ALTERNATE_DEVICE_ID 0x00a0
30 #define CIRRUS_LOGIC_5446_DEVICE_ID 0x00b8
31
32 //
33 // Cirrus Logic Graphical Mode Data
34 //
35 #define CIRRUS_LOGIC_5430_UGA_DRAW_MODE_COUNT 3
36
37 typedef struct {
38 UINT32 HorizontalResolution;
39 UINT32 VerticalResolution;
40 UINT32 ColorDepth;
41 UINT32 RefreshRate;
42 } CIRRUS_LOGIC_5430_UGA_DRAW_MODE_DATA;
43
44 //
45 // Cirrus Logic 5440 Private Data Structure
46 //
47 #define CIRRUS_LOGIC_5430_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('C', 'L', '5', '4')
48
49 typedef struct {
50 UINT64 Signature;
51 EFI_HANDLE Handle;
52 EFI_PCI_IO_PROTOCOL *PciIo;
53 EFI_UGA_DRAW_PROTOCOL UgaDraw;
54
55 //
56 // UGA Draw Private Data
57 //
58 BOOLEAN HardwareNeedsStarting;
59 UINTN CurrentMode;
60 UINTN MaxMode;
61 CIRRUS_LOGIC_5430_UGA_DRAW_MODE_DATA ModeData[CIRRUS_LOGIC_5430_UGA_DRAW_MODE_COUNT];
62 UINT8 *LineBuffer;
63 } CIRRUS_LOGIC_5430_PRIVATE_DATA;
64
65 ///
66 /// Video Mode structure
67 ///
68 typedef struct {
69 UINT32 Width;
70 UINT32 Height;
71 UINT32 ColorDepth;
72 UINT32 RefreshRate;
73 UINT8 *CrtcSettings;
74 UINT16 *SeqSettings;
75 UINT8 MiscSetting;
76 } CIRRUS_LOGIC_5430_VIDEO_MODES;
77
78 #define CIRRUS_LOGIC_5430_PRIVATE_DATA_FROM_UGA_DRAW_THIS(a) \
79 CR(a, CIRRUS_LOGIC_5430_PRIVATE_DATA, UgaDraw, CIRRUS_LOGIC_5430_PRIVATE_DATA_SIGNATURE)
80
81 //
82 // Global Variables
83 //
84 extern EFI_DRIVER_BINDING_PROTOCOL gCirrusLogic5430DriverBinding;
85 extern EFI_COMPONENT_NAME_PROTOCOL gCirrusLogic5430ComponentName;
86
87 //
88 // Io Registers defined by VGA
89 //
90 #define CRTC_ADDRESS_REGISTER 0x3d4
91 #define CRTC_DATA_REGISTER 0x3d5
92 #define SEQ_ADDRESS_REGISTER 0x3c4
93 #define SEQ_DATA_REGISTER 0x3c5
94 #define GRAPH_ADDRESS_REGISTER 0x3ce
95 #define GRAPH_DATA_REGISTER 0x3cf
96 #define ATT_ADDRESS_REGISTER 0x3c0
97 #define MISC_OUTPUT_REGISTER 0x3c2
98 #define INPUT_STATUS_1_REGISTER 0x3da
99 #define DAC_PIXEL_MASK_REGISTER 0x3c6
100 #define PALETTE_INDEX_REGISTER 0x3c8
101 #define PALETTE_DATA_REGISTER 0x3c9
102
103 //
104 // UGA Draw Hardware abstraction internal worker functions
105 //
106 /**
107 TODO: Add function description
108
109 @param Private TODO: add argument description
110
111 TODO: add return values
112
113 **/
114 EFI_STATUS
115 CirrusLogic5430UgaDrawConstructor (
116 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private
117 )
118 ;
119
120 /**
121 TODO: Add function description
122
123 @param Private TODO: add argument description
124
125 TODO: add return values
126
127 **/
128 EFI_STATUS
129 CirrusLogic5430UgaDrawDestructor (
130 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private
131 )
132 ;
133
134 //
135 // EFI 1.1 driver model prototypes for Cirrus Logic 5430 UGA Draw
136 //
137 /**
138 TODO: Add function description
139
140 @param ImageHandle TODO: add argument description
141 @param SystemTable TODO: add argument description
142
143 TODO: add return values
144
145 **/
146 EFI_STATUS
147 EFIAPI
148 CirrusLogic5430DriverEntryPoint (
149 IN EFI_HANDLE ImageHandle,
150 IN EFI_SYSTEM_TABLE *SystemTable
151 )
152 ;
153
154 //
155 // EFI_DRIVER_BINDING_PROTOCOL Protocol Interface
156 //
157 /**
158 TODO: Add function description
159
160 @param This TODO: add argument description
161 @param Controller TODO: add argument description
162 @param RemainingDevicePath TODO: add argument description
163
164 TODO: add return values
165
166 **/
167 EFI_STATUS
168 EFIAPI
169 CirrusLogic5430ControllerDriverSupported (
170 IN EFI_DRIVER_BINDING_PROTOCOL *This,
171 IN EFI_HANDLE Controller,
172 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
173 )
174 ;
175
176 /**
177 TODO: Add function description
178
179 @param This TODO: add argument description
180 @param Controller TODO: add argument description
181 @param RemainingDevicePath TODO: add argument description
182
183 TODO: add return values
184
185 **/
186 EFI_STATUS
187 EFIAPI
188 CirrusLogic5430ControllerDriverStart (
189 IN EFI_DRIVER_BINDING_PROTOCOL *This,
190 IN EFI_HANDLE Controller,
191 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
192 )
193 ;
194
195 /**
196 TODO: Add function description
197
198 @param This TODO: add argument description
199 @param Controller TODO: add argument description
200 @param NumberOfChildren TODO: add argument description
201 @param ChildHandleBuffer TODO: add argument description
202
203 TODO: add return values
204
205 **/
206 EFI_STATUS
207 EFIAPI
208 CirrusLogic5430ControllerDriverStop (
209 IN EFI_DRIVER_BINDING_PROTOCOL *This,
210 IN EFI_HANDLE Controller,
211 IN UINTN NumberOfChildren,
212 IN EFI_HANDLE *ChildHandleBuffer
213 )
214 ;
215
216 //
217 // EFI Component Name Functions
218 //
219 EFI_STATUS
220 EFIAPI
221 CirrusLogic5430ComponentNameGetDriverName (
222 IN EFI_COMPONENT_NAME_PROTOCOL *This,
223 IN CHAR8 *Language,
224 OUT CHAR16 **DriverName
225 );
226
227 EFI_STATUS
228 EFIAPI
229 CirrusLogic5430ComponentNameGetControllerName (
230 IN EFI_COMPONENT_NAME_PROTOCOL *This,
231 IN EFI_HANDLE ControllerHandle,
232 IN EFI_HANDLE ChildHandle OPTIONAL,
233 IN CHAR8 *Language,
234 OUT CHAR16 **ControllerName
235 );
236
237 //
238 // Local Function Prototypes
239 //
240 VOID
241 InitializeGraphicsMode (
242 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private,
243 CIRRUS_LOGIC_5430_VIDEO_MODES *ModeData
244 );
245
246 VOID
247 SetPaletteColor (
248 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private,
249 UINTN Index,
250 UINT8 Red,
251 UINT8 Green,
252 UINT8 Blue
253 );
254
255 VOID
256 SetDefaultPalette (
257 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private
258 );
259
260 VOID
261 DrawLogo (
262 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private
263 );
264
265 VOID
266 outb (
267 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private,
268 UINTN Address,
269 UINT8 Data
270 );
271
272 VOID
273 outw (
274 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private,
275 UINTN Address,
276 UINT16 Data
277 );
278
279 UINT8
280 inb (
281 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private,
282 UINTN Address
283 );
284
285 UINT16
286 inw (
287 CIRRUS_LOGIC_5430_PRIVATE_DATA *Private,
288 UINTN Address
289 );
290
291 #endif