2 Cirrus Logic 5430 Controller Driver
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
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.
16 // Cirrus Logic 5430 Controller Driver
19 #ifndef _CIRRUS_LOGIC_5430_H_
20 #define _CIRRUS_LOGIC_5430_H_
23 #include <IndustryStandard/pci22.h>
25 // Cirrus Logic 5430 PCI Configuration Header values
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
33 // Cirrus Logic Graphical Mode Data
35 #define CIRRUS_LOGIC_5430_UGA_DRAW_MODE_COUNT 3
38 UINT32 HorizontalResolution
;
39 UINT32 VerticalResolution
;
42 } CIRRUS_LOGIC_5430_UGA_DRAW_MODE_DATA
;
45 // Cirrus Logic 5440 Private Data Structure
47 #define CIRRUS_LOGIC_5430_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('C', 'L', '5', '4')
52 EFI_PCI_IO_PROTOCOL
*PciIo
;
53 EFI_UGA_DRAW_PROTOCOL UgaDraw
;
56 // UGA Draw Private Data
58 BOOLEAN HardwareNeedsStarting
;
61 CIRRUS_LOGIC_5430_UGA_DRAW_MODE_DATA ModeData
[CIRRUS_LOGIC_5430_UGA_DRAW_MODE_COUNT
];
63 } CIRRUS_LOGIC_5430_PRIVATE_DATA
;
66 /// Video Mode structure
76 } CIRRUS_LOGIC_5430_VIDEO_MODES
;
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)
84 extern EFI_DRIVER_BINDING_PROTOCOL gCirrusLogic5430DriverBinding
;
85 extern EFI_COMPONENT_NAME_PROTOCOL gCirrusLogic5430ComponentName
;
88 // Io Registers defined by VGA
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
104 // UGA Draw Hardware abstraction internal worker functions
107 TODO: Add function description
109 @param Private TODO: add argument description
111 TODO: add return values
115 CirrusLogic5430UgaDrawConstructor (
116 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
121 TODO: Add function description
123 @param Private TODO: add argument description
125 TODO: add return values
129 CirrusLogic5430UgaDrawDestructor (
130 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
135 // EFI 1.1 driver model prototypes for Cirrus Logic 5430 UGA Draw
138 TODO: Add function description
140 @param ImageHandle TODO: add argument description
141 @param SystemTable TODO: add argument description
143 TODO: add return values
148 CirrusLogic5430DriverEntryPoint (
149 IN EFI_HANDLE ImageHandle
,
150 IN EFI_SYSTEM_TABLE
*SystemTable
155 // EFI_DRIVER_BINDING_PROTOCOL Protocol Interface
158 TODO: Add function description
160 @param This TODO: add argument description
161 @param Controller TODO: add argument description
162 @param RemainingDevicePath TODO: add argument description
164 TODO: add return values
169 CirrusLogic5430ControllerDriverSupported (
170 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
171 IN EFI_HANDLE Controller
,
172 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
177 TODO: Add function description
179 @param This TODO: add argument description
180 @param Controller TODO: add argument description
181 @param RemainingDevicePath TODO: add argument description
183 TODO: add return values
188 CirrusLogic5430ControllerDriverStart (
189 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
190 IN EFI_HANDLE Controller
,
191 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
196 TODO: Add function description
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
203 TODO: add return values
208 CirrusLogic5430ControllerDriverStop (
209 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
210 IN EFI_HANDLE Controller
,
211 IN UINTN NumberOfChildren
,
212 IN EFI_HANDLE
*ChildHandleBuffer
217 // EFI Component Name Functions
221 CirrusLogic5430ComponentNameGetDriverName (
222 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
224 OUT CHAR16
**DriverName
229 CirrusLogic5430ComponentNameGetControllerName (
230 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
231 IN EFI_HANDLE ControllerHandle
,
232 IN EFI_HANDLE ChildHandle OPTIONAL
,
234 OUT CHAR16
**ControllerName
238 // Local Function Prototypes
241 InitializeGraphicsMode (
242 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
,
243 CIRRUS_LOGIC_5430_VIDEO_MODES
*ModeData
248 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
,
257 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
262 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
267 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
,
274 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
,
281 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
,
287 CIRRUS_LOGIC_5430_PRIVATE_DATA
*Private
,