Root/
Source at commit 1580 created 12 years 9 months ago. By blackosx, Attempted to enable 'exclusive' choices in auto generated boot options, but it's not working at present. I've added notes to remind me to look again at some point. | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_LICENSE_HEADER_START@␊ |
5 | * ␊ |
6 | * The contents of this file constitute Original Code as defined in and␊ |
7 | * are subject to the Apple Public Source License Version 1.1 (the␊ |
8 | * "License"). You may not use this file except in compliance with the␊ |
9 | * License. Please obtain a copy of the License at␊ |
10 | * http://www.apple.com/publicsource and read it before using this file.␊ |
11 | * ␊ |
12 | * This Original Code and all software distributed under the License are␊ |
13 | * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
14 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
15 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
16 | * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the␊ |
17 | * License for the specific language governing rights and limitations␊ |
18 | * under the License.␊ |
19 | * ␊ |
20 | * @APPLE_LICENSE_HEADER_END@␊ |
21 | */␊ |
22 | ␊ |
23 | #ifndef _IOKIT_IOGRAPHICSTYPES_H␊ |
24 | #define _IOKIT_IOGRAPHICSTYPES_H␊ |
25 | ␊ |
26 | ␊ |
27 | #include <IOKit/IOTypes.h>␊ |
28 | #include <IOKit/IOKitKeys.h>␊ |
29 | ␊ |
30 | #ifdef __cplusplus␊ |
31 | extern "C" {␊ |
32 | #endif␊ |
33 | ␊ |
34 | #define IOGRAPHICSTYPES_REV 24␊ |
35 | ␊ |
36 | typedef SInt32 IOIndex;␊ |
37 | typedef UInt32 IOSelect;␊ |
38 | typedef UInt32 IOFixed1616;␊ |
39 | typedef UInt32 IODisplayVendorID;␊ |
40 | typedef UInt32 IODisplayProductID;␊ |
41 | ␊ |
42 | typedef SInt32 IODisplayModeID;␊ |
43 | enum {␊ |
44 | // This is the ID given to a programmable timing used at boot time␊ |
45 | kIODisplayModeIDBootProgrammable = (IODisplayModeID)0xFFFFFFFB,␊ |
46 | // Lowest (unsigned) DisplayModeID reserved by Apple␊ |
47 | kIODisplayModeIDReservedBase = (IODisplayModeID)0x80000000␊ |
48 | };␊ |
49 | ␊ |
50 | enum {␊ |
51 | kIOMaxPixelBits = 64␊ |
52 | };␊ |
53 | typedef char IOPixelEncoding[ kIOMaxPixelBits ];␊ |
54 | ␊ |
55 | // Common Apple pixel formats␊ |
56 | ␊ |
57 | #define IO1BitIndexedPixels "P"␊ |
58 | #define IO2BitIndexedPixels "PP"␊ |
59 | #define IO4BitIndexedPixels "PPPP"␊ |
60 | #define IO8BitIndexedPixels "PPPPPPPP"␊ |
61 | #define IO16BitDirectPixels "-RRRRRGGGGGBBBBB"␊ |
62 | #define IO32BitDirectPixels "--------RRRRRRRRGGGGGGGGBBBBBBBB"␊ |
63 | ␊ |
64 | #define kIO30BitDirectPixels "--RRRRRRRRRRGGGGGGGGGGBBBBBBBBBB"␊ |
65 | #define kIO64BitDirectPixels "-16R16G16B16"␊ |
66 | ␊ |
67 | #define kIO16BitFloatPixels "-16FR16FG16FB16"␊ |
68 | #define kIO32BitFloatPixels "-32FR32FG32FB32"␊ |
69 | ␊ |
70 | // other possible pixel formats␊ |
71 | ␊ |
72 | #define IOYUV422Pixels "Y4U2V2"␊ |
73 | #define IO8BitOverlayPixels "O8"␊ |
74 | // page flipping␊ |
75 | #define IOPagedPixels "Page1"␊ |
76 | ␊ |
77 | #define IO_SampleTypeAlpha 'A'␊ |
78 | #define IO_SampleTypeSkip '-'␊ |
79 | ␊ |
80 | // Info about a pixel format␊ |
81 | enum {␊ |
82 | kIOCLUTPixels = 0,␊ |
83 | kIOFixedCLUTPixels = 1,␊ |
84 | kIORGBDirectPixels = 2,␊ |
85 | kIOMonoDirectPixels = 3,␊ |
86 | kIOMonoInverseDirectPixels = 4,␊ |
87 | kIORGBSignedDirectPixels = 5,␊ |
88 | kIORGBSignedFloatingPointPixels = 6␊ |
89 | };␊ |
90 | ␊ |
91 | /*!␊ |
92 | * @struct IOPixelInformation␊ |
93 | * @abstract A structure defining the format of a framebuffer.␊ |
94 | * @discussion This structure is used by IOFramebuffer to define the format of the pixels.␊ |
95 | * @field bytesPerRow The number of bytes per row.␊ |
96 | * @field bytesPerPlane Not used.␊ |
97 | * @field bitsPerPixel The number of bits per pixel, including unused bits and alpha.␊ |
98 | * @field pixelType One of kIOCLUTPixels (indexed pixels with changeable CLUT), kIORGBDirectPixels (direct pixels).␊ |
99 | * @field componentCount One for indexed pixels, three for direct pixel formats.␊ |
100 | * @field bitsPerComponent Number of bits per component in each pixel.␊ |
101 | * @field componentMasks Mask of the bits valid for each component of the pixel - in R, G, B order for direct pixels.␊ |
102 | * @field pixelFormat String description of the pixel format - IO32BitDirectPixels, IO16BitDirectPixels etc.␊ |
103 | * @field flags None defined - set to zero.␊ |
104 | * @field activeWidth Number of pixels visible per row.␊ |
105 | * @field activeHeight Number of visible pixel rows.␊ |
106 | * @field reserved Set to zero.␊ |
107 | */␊ |
108 | ␊ |
109 | struct IOPixelInformation {␊ |
110 | UInt32 bytesPerRow;␊ |
111 | UInt32 bytesPerPlane;␊ |
112 | UInt32 bitsPerPixel;␊ |
113 | UInt32 pixelType;␊ |
114 | UInt32 componentCount;␊ |
115 | UInt32 bitsPerComponent;␊ |
116 | UInt32 componentMasks[ 8 * 2 ];␊ |
117 | IOPixelEncoding pixelFormat;␊ |
118 | UInt32 flags;␊ |
119 | UInt32 activeWidth;␊ |
120 | UInt32 activeHeight;␊ |
121 | UInt32 reserved[ 2 ];␊ |
122 | };␊ |
123 | typedef struct IOPixelInformation IOPixelInformation;␊ |
124 | ␊ |
125 | // ID for industry standard display timings␊ |
126 | typedef UInt32 IOAppleTimingID;␊ |
127 | ␊ |
128 | /*!␊ |
129 | * @struct IODisplayModeInformation␊ |
130 | * @abstract A structure defining the format of a framebuffer.␊ |
131 | * @discussion This structure is used by IOFramebuffer to define the format of the pixels.␊ |
132 | * @field nominalWidth Number of pixels visible per row.␊ |
133 | * @field nominalHeight Number of visible pixel rows.␊ |
134 | * @field refreshRate Refresh rate in fixed point 16.16.␊ |
135 | * @field maxDepthIndex Highest depth index available in this display mode.␊ |
136 | * @field flags Flags for the mode, including: <br>␊ |
137 | * kDisplayModeInterlacedFlag mode is interlaced. <br>␊ |
138 | * kDisplayModeSimulscanFlag mode is available on multiple display connections. <br>␊ |
139 | * kDisplayModeNotPresetFlag mode is not a factory preset for the display (geometry may need correction). <br>␊ |
140 | * kDisplayModeStretchedFlag mode is stretched/distorted to match the display aspect ratio. <br>␊ |
141 | * @field reserved Set to zero.␊ |
142 | */␊ |
143 | ␊ |
144 | struct IODisplayModeInformation {␊ |
145 | UInt32 nominalWidth;␊ |
146 | UInt32 nominalHeight;␊ |
147 | IOFixed1616 refreshRate;␊ |
148 | IOIndex maxDepthIndex;␊ |
149 | UInt32 flags;␊ |
150 | UInt32 reserved[ 4 ];␊ |
151 | };␊ |
152 | typedef struct IODisplayModeInformation IODisplayModeInformation;␊ |
153 | ␊ |
154 | // flags␊ |
155 | enum {␊ |
156 | kDisplayModeSafetyFlags = 0x00000007,␊ |
157 | ␊ |
158 | kDisplayModeAlwaysShowFlag = 0x00000008,␊ |
159 | kDisplayModeNeverShowFlag = 0x00000080,␊ |
160 | kDisplayModeNotResizeFlag = 0x00000010,␊ |
161 | kDisplayModeRequiresPanFlag = 0x00000020,␊ |
162 | ␊ |
163 | kDisplayModeInterlacedFlag = 0x00000040,␊ |
164 | ␊ |
165 | kDisplayModeSimulscanFlag = 0x00000100,␊ |
166 | kDisplayModeBuiltInFlag = 0x00000400,␊ |
167 | kDisplayModeNotPresetFlag = 0x00000200,␊ |
168 | kDisplayModeStretchedFlag = 0x00000800,␊ |
169 | kDisplayModeNotGraphicsQualityFlag = 0x00001000,␊ |
170 | kDisplayModeValidateAgainstDisplay = 0x00002000,␊ |
171 | kDisplayModeTelevisionFlag = 0x00100000,␊ |
172 | kDisplayModeValidForMirroringFlag = 0x00200000␊ |
173 | };␊ |
174 | enum {␊ |
175 | kDisplayModeValidFlag = 0x00000001,␊ |
176 | kDisplayModeSafeFlag = 0x00000002,␊ |
177 | kDisplayModeDefaultFlag = 0x00000004␊ |
178 | };␊ |
179 | ␊ |
180 | #ifndef KERNEL␊ |
181 | // Framebuffer info - obsolete␊ |
182 | ␊ |
183 | struct IOFramebufferInformation {␊ |
184 | IOPhysicalAddress baseAddress;␊ |
185 | UInt32 activeWidth;␊ |
186 | UInt32 activeHeight;␊ |
187 | IOByteCount bytesPerRow;␊ |
188 | IOByteCount bytesPerPlane;␊ |
189 | UInt32 bitsPerPixel;␊ |
190 | UInt32 pixelType;␊ |
191 | UInt32 flags;␊ |
192 | UInt32 reserved[ 4 ];␊ |
193 | };␊ |
194 | typedef struct IOFramebufferInformation IOFramebufferInformation;␊ |
195 | #endif␊ |
196 | ␊ |
197 | // flags␊ |
198 | enum {␊ |
199 | kFramebufferSupportsCopybackCache = 0x00010000,␊ |
200 | kFramebufferSupportsWritethruCache = 0x00020000,␊ |
201 | kFramebufferSupportsGammaCorrection = 0x00040000,␊ |
202 | kFramebufferDisableAltivecAccess = 0x00080000␊ |
203 | };␊ |
204 | ␊ |
205 | // Aperture is an index into supported pixel formats for a mode & depth␊ |
206 | typedef IOIndex IOPixelAperture;␊ |
207 | enum {␊ |
208 | kIOFBSystemAperture = 0␊ |
209 | };␊ |
210 | ␊ |
211 | //// CLUTs␊ |
212 | ␊ |
213 | typedef UInt16 IOColorComponent;␊ |
214 | ␊ |
215 | /*!␊ |
216 | * @struct IOColorEntry␊ |
217 | * @abstract A structure defining one entry of a color lookup table.␊ |
218 | * @discussion This structure is used by IOFramebuffer to define an entry of a color lookup table.␊ |
219 | * @field index Number of pixels visible per row.␊ |
220 | * @field red Value of red component 0-65535.␊ |
221 | * @field green Value of green component 0-65535.␊ |
222 | * @field blue Value of blue component 0-65535.␊ |
223 | */␊ |
224 | ␊ |
225 | struct IOColorEntry {␊ |
226 | UInt16 index;␊ |
227 | IOColorComponent red;␊ |
228 | IOColorComponent green;␊ |
229 | IOColorComponent blue;␊ |
230 | };␊ |
231 | typedef struct IOColorEntry IOColorEntry;␊ |
232 | ␊ |
233 | // options (masks)␊ |
234 | enum {␊ |
235 | kSetCLUTByValue = 0x00000001, // else at index␊ |
236 | kSetCLUTImmediately = 0x00000002, // else at VBL␊ |
237 | kSetCLUTWithLuminance = 0x00000004 // else RGB␊ |
238 | };␊ |
239 | ␊ |
240 | //// Controller attributes␊ |
241 | ␊ |
242 | enum {␊ |
243 | kIOPowerStateAttribute = 'pwrs',␊ |
244 | kIOPowerAttribute = 'powr',␊ |
245 | kIODriverPowerAttribute = 'dpow',␊ |
246 | kIOHardwareCursorAttribute = 'crsr',␊ |
247 | ␊ |
248 | kIOMirrorAttribute = 'mirr',␊ |
249 | kIOMirrorDefaultAttribute = 'mrdf',␊ |
250 | ␊ |
251 | kIOCapturedAttribute = 'capd',␊ |
252 | ␊ |
253 | kIOCursorControlAttribute = 'crsc',␊ |
254 | ␊ |
255 | kIOSystemPowerAttribute = 'spwr',␊ |
256 | kIOVRAMSaveAttribute = 'vrsv',␊ |
257 | kIODeferCLUTSetAttribute = 'vclt',␊ |
258 | ␊ |
259 | kIOClamshellStateAttribute = 'clam'␊ |
260 | };␊ |
261 | ␊ |
262 | // values for kIOMirrorAttribute␊ |
263 | enum {␊ |
264 | kIOMirrorIsPrimary = 0x80000000,␊ |
265 | kIOMirrorHWClipped = 0x40000000␊ |
266 | };␊ |
267 | ␊ |
268 | // values for kIOMirrorDefaultAttribute␊ |
269 | enum {␊ |
270 | kIOMirrorDefault = 0x00000001,␊ |
271 | kIOMirrorForced = 0x00000002␊ |
272 | };␊ |
273 | ␊ |
274 | //// Display mode timing information␊ |
275 | ␊ |
276 | struct IODetailedTimingInformationV1 {␊ |
277 | // from EDID defn␊ |
278 | UInt32 pixelClock; // Hertz␊ |
279 | UInt32 horizontalActive; // pixels␊ |
280 | UInt32 horizontalBlanking; // pixels␊ |
281 | UInt32 horizontalBorder; // pixels␊ |
282 | UInt32 horizontalSyncOffset; // pixels␊ |
283 | UInt32 horizontalSyncWidth; // pixels␊ |
284 | UInt32 verticalActive; // lines␊ |
285 | UInt32 verticalBlanking; // lines␊ |
286 | UInt32 verticalBorder; // lines␊ |
287 | UInt32 verticalSyncOffset; // lines␊ |
288 | UInt32 verticalSyncWidth; // lines␊ |
289 | };␊ |
290 | typedef struct IODetailedTimingInformationV1 IODetailedTimingInformationV1;␊ |
291 | ␊ |
292 | /*!␊ |
293 | * @struct IODetailedTimingInformationV2␊ |
294 | * @abstract A structure defining the detailed timing information of a display mode.␊ |
295 | * @discussion This structure is used by IOFramebuffer to define detailed timing information for a display mode. The VESA EDID document has more information.␊ |
296 | * @field __reservedA Set to zero.␊ |
297 | * @field horizontalScaledInset If the mode is scaled, sets the number of active pixels to remove the left and right edges in order to display an underscanned image.␊ |
298 | * @field verticalScaledInset If the mode is scaled, sets the number of active lines to remove the top and bottom edges in order to display an underscanned image.␊ |
299 | * @field scalerFlags If the mode is scaled,␊ |
300 | * kIOScaleStretchToFit may be set to allow stretching.␊ |
301 | * kIOScaleRotateFlags is mask which may have the value given by kIOScaleRotate90, kIOScaleRotate180, kIOScaleRotate270 to display a rotated framebuffer.␊ |
302 | * @field horizontalScaled If the mode is scaled, sets the size of the image before scaling or rotation.␊ |
303 | * @field verticalScaled If the mode is scaled, sets the size of the image before scaling or rotation.␊ |
304 | * @field signalConfig ␊ |
305 | * kIOAnalogSetupExpected set if display expects a blank-to-black setup or pedestal. See VESA signal standards. <br>␊ |
306 | * kIOInterlacedCEATiming set for a CEA style interlaced timing:<br>␊ |
307 | * Field 1 vertical blanking = half specified vertical blanking lines. <br>␊ |
308 | * Field 2 vertical blanking = (half vertical blanking lines) + 1 line. <br>␊ |
309 | * Field 1 vertical offset = half specified vertical sync offset. <br>␊ |
310 | * Field 2 vertical offset = (half specified vertical sync offset) + 0.5 lines. <br>␊ |
311 | * @field signalLevels One of:<br>␊ |
312 | * kIOAnalogSignalLevel_0700_0300 0.700 - 0.300 V p-p.<br>␊ |
313 | * kIOAnalogSignalLevel_0714_0286 0.714 - 0.286 V p-p.<br>␊ |
314 | * kIOAnalogSignalLevel_1000_0400 1.000 - 0.400 V p-p.<br>␊ |
315 | * kIOAnalogSignalLevel_0700_0000 0.700 - 0.000 V p-p.<br>␊ |
316 | * @field pixelClock Pixel clock frequency in Hz.␊ |
317 | * @field minPixelClock Minimum pixel clock frequency in Hz, with error.␊ |
318 | * @field maxPixelClock Maximum pixel clock frequency in Hz, with error.␊ |
319 | * @field horizontalActive Pixel clocks per line.␊ |
320 | * @field horizontalBlanking Blanking clocks per line.␊ |
321 | * @field horizontalSyncOffset First clock of horizontal sync.␊ |
322 | * @field horizontalSyncPulseWidth Width of horizontal sync.␊ |
323 | * @field verticalActive Number of lines per frame.␊ |
324 | * @field verticalBlanking Blanking lines per frame.␊ |
325 | * @field verticalSyncOffset First line of vertical sync.␊ |
326 | * @field verticalSyncPulseWidth Height of vertical sync.␊ |
327 | * @field horizontalBorderLeft Number of pixels in left horizontal border.␊ |
328 | * @field horizontalBorderRight Number of pixels in right horizontal border.␊ |
329 | * @field verticalBorderTop Number of lines in top vertical border.␊ |
330 | * @field verticalBorderBottom Number of lines in bottom vertical border.␊ |
331 | * @field horizontalSyncConfig kIOSyncPositivePolarity for positive polarity horizontal sync (0 for negative).␊ |
332 | * @field horizontalSyncLevel Zero.␊ |
333 | * @field verticalSyncConfig kIOSyncPositivePolarity for positive polarity vertical sync (0 for negative).␊ |
334 | * @field verticalSyncLevel Zero.␊ |
335 | * @field numLinks number of links to be used by a dual link timing, if zero, assume one link.␊ |
336 | * @field __reservedB Reserved set to zero.␊ |
337 | */␊ |
338 | ␊ |
339 | struct IODetailedTimingInformationV2 {␊ |
340 | ␊ |
341 | UInt32 __reservedA[3]; // Init to 0␊ |
342 | UInt32 horizontalScaledInset; // pixels␊ |
343 | UInt32 verticalScaledInset; // lines␊ |
344 | ␊ |
345 | UInt32 scalerFlags;␊ |
346 | UInt32 horizontalScaled;␊ |
347 | UInt32 verticalScaled;␊ |
348 | ␊ |
349 | UInt32 signalConfig;␊ |
350 | UInt32 signalLevels;␊ |
351 | ␊ |
352 | UInt64 pixelClock; // Hz␊ |
353 | ␊ |
354 | UInt64 minPixelClock; // Hz - With error what is slowest actual clock␊ |
355 | UInt64 maxPixelClock; // Hz - With error what is fasted actual clock␊ |
356 | ␊ |
357 | UInt32 horizontalActive; // pixels␊ |
358 | UInt32 horizontalBlanking; // pixels␊ |
359 | UInt32 horizontalSyncOffset; // pixels␊ |
360 | UInt32 horizontalSyncPulseWidth; // pixels␊ |
361 | ␊ |
362 | UInt32 verticalActive; // lines␊ |
363 | UInt32 verticalBlanking; // lines␊ |
364 | UInt32 verticalSyncOffset; // lines␊ |
365 | UInt32 verticalSyncPulseWidth; // lines␊ |
366 | ␊ |
367 | UInt32 horizontalBorderLeft; // pixels␊ |
368 | UInt32 horizontalBorderRight; // pixels␊ |
369 | UInt32 verticalBorderTop; // lines␊ |
370 | UInt32 verticalBorderBottom; // lines␊ |
371 | ␊ |
372 | UInt32 horizontalSyncConfig;␊ |
373 | UInt32 horizontalSyncLevel; // Future use (init to 0)␊ |
374 | UInt32 verticalSyncConfig;␊ |
375 | UInt32 verticalSyncLevel; // Future use (init to 0)␊ |
376 | UInt32 numLinks;␊ |
377 | ␊ |
378 | UInt32 __reservedB[7]; // Init to 0␊ |
379 | };␊ |
380 | typedef struct IODetailedTimingInformationV2 IODetailedTimingInformationV2;␊ |
381 | typedef struct IODetailedTimingInformationV2 IODetailedTimingInformation;␊ |
382 | ␊ |
383 | struct IOTimingInformation {␊ |
384 | IOAppleTimingID appleTimingID; // kIOTimingIDXXX const␊ |
385 | UInt32 flags;␊ |
386 | union {␊ |
387 | IODetailedTimingInformationV1 v1;␊ |
388 | IODetailedTimingInformationV2 v2;␊ |
389 | } detailedInfo;␊ |
390 | };␊ |
391 | typedef struct IOTimingInformation IOTimingInformation;␊ |
392 | ␊ |
393 | enum {␊ |
394 | // IOTimingInformation flags␊ |
395 | kIODetailedTimingValid = 0x80000000,␊ |
396 | kIOScalingInfoValid = 0x40000000␊ |
397 | };␊ |
398 | ␊ |
399 | enum {␊ |
400 | // scalerFlags␊ |
401 | kIOScaleStretchToFit = 0x00000001,␊ |
402 | ␊ |
403 | kIOScaleRotateFlags = 0x000000f0,␊ |
404 | ␊ |
405 | kIOScaleSwapAxes = 0x00000010,␊ |
406 | kIOScaleInvertX = 0x00000020,␊ |
407 | kIOScaleInvertY = 0x00000040,␊ |
408 | ␊ |
409 | kIOScaleRotate0 = 0x00000000,␊ |
410 | kIOScaleRotate90 = kIOScaleSwapAxes | kIOScaleInvertX,␊ |
411 | kIOScaleRotate180 = kIOScaleInvertX | kIOScaleInvertY,␊ |
412 | kIOScaleRotate270 = kIOScaleSwapAxes | kIOScaleInvertY␊ |
413 | };␊ |
414 | ␊ |
415 | ␊ |
416 | #pragma pack(push, 4)␊ |
417 | struct IOFBDisplayModeDescription {␊ |
418 | IODisplayModeInformation info;␊ |
419 | IOTimingInformation timingInfo;␊ |
420 | };␊ |
421 | typedef struct IOFBDisplayModeDescription IOFBDisplayModeDescription;␊ |
422 | #pragma pack(pop)␊ |
423 | ␊ |
424 | /*!␊ |
425 | * @struct IODisplayTimingRange␊ |
426 | * @abstract A structure defining the limits and attributes of a display or framebuffer.␊ |
427 | * @discussion This structure is used to define the limits for modes programmed as detailed timings by the OS. The VESA EDID is useful background information for many of these fields. A data property with this structure under the key kIOFBTimingRangeKey in a framebuffer will allow the OS to program detailed timings that fall within its range.␊ |
428 | * @field __reservedA Set to zero.␊ |
429 | * @field version Set to zero.␊ |
430 | * @field __reservedB Set to zero.␊ |
431 | * @field minPixelClock minimum pixel clock frequency in range, in Hz.␊ |
432 | * @field minPixelClock maximum pixel clock frequency in range, in Hz.␊ |
433 | * @field maxPixelError largest variation between specified and actual pixel clock frequency, in Hz.␊ |
434 | * @field supportedSyncFlags mask of supported sync attributes. The following are defined:<br>␊ |
435 | * kIORangeSupportsSeparateSyncs - digital separate syncs.<br>␊ |
436 | * kIORangeSupportsSyncOnGreen - sync on green.<br>␊ |
437 | * kIORangeSupportsCompositeSync - composite sync.<br>␊ |
438 | * kIORangeSupportsVSyncSerration - vertical sync has serration and equalization pulses.<br>␊ |
439 | * @field supportedSignalLevels mask of possible signal levels. The following are defined:<br>␊ |
440 | * kIORangeSupportsSignal_0700_0300 0.700 - 0.300 V p-p.<br>␊ |
441 | * kIORangeSupportsSignal_0714_0286 0.714 - 0.286 V p-p.<br>␊ |
442 | * kIORangeSupportsSignal_1000_0400 1.000 - 0.400 V p-p.<br>␊ |
443 | * kIORangeSupportsSignal_0700_0000 0.700 - 0.000 V p-p.<br>␊ |
444 | * @field supportedSignalConfigs mask of possible signal configurations. The following are defined:<br>␊ |
445 | * kIORangeSupportsInterlacedCEATiming Supports CEA style interlaced timing:<br>␊ |
446 | * Field 1 vertical blanking = specified vertical blanking lines. <br>␊ |
447 | * Field 2 vertical blanking = vertical blanking lines + 1 line. <br> ␊ |
448 | * Field 1 vertical offset = specified vertical sync offset. <br>␊ |
449 | * Field 2 vertical offset = specified vertical sync offset + 0.5 lines. <br>␊ |
450 | * kIORangeSupportsInterlacedCEATimingWithConfirm Supports CEA style interlaced timing, but require a confirm.␊ |
451 | * @field minFrameRate minimum frame rate (vertical refresh frequency) in range, in Hz.␊ |
452 | * @field maxFrameRate maximum frame rate (vertical refresh frequency) in range, in Hz.␊ |
453 | * @field minLineRate minimum line rate (horizontal refresh frequency) in range, in Hz.␊ |
454 | * @field maxLineRate maximum line rate (horizontal refresh frequency) in range, in Hz.␊ |
455 | * @field maxHorizontalTotal maximum clocks in horizontal line (active + blanking).␊ |
456 | * @field maxVerticalTotal maximum lines in vertical frame (active + blanking).␊ |
457 | * @field __reservedD Set to zero.␊ |
458 | * @field charSizeHorizontalActive horizontalActive must be a multiple of charSizeHorizontalActive.␊ |
459 | * @field charSizeHorizontalBlanking horizontalBlanking must be a multiple of charSizeHorizontalBlanking.␊ |
460 | * @field charSizeHorizontalSyncOffset horizontalSyncOffset must be a multiple of charSizeHorizontalSyncOffset.␊ |
461 | * @field charSizeHorizontalSyncPulse horizontalSyncPulse must be a multiple of charSizeHorizontalSyncPulse.␊ |
462 | * @field charSizeVerticalActive verticalActive must be a multiple of charSizeVerticalActive.␊ |
463 | * @field charSizeVerticalBlanking verticalBlanking must be a multiple of charSizeVerticalBlanking.␊ |
464 | * @field charSizeVerticalSyncOffset verticalSyncOffset must be a multiple of charSizeVerticalSyncOffset.␊ |
465 | * @field charSizeVerticalSyncPulse verticalSyncPulse must be a multiple of charSizeVerticalSyncPulse.␊ |
466 | * @field charSizeHorizontalBorderLeft horizontalBorderLeft must be a multiple of charSizeHorizontalBorderLeft.␊ |
467 | * @field charSizeHorizontalBorderRight horizontalBorderRight must be a multiple of charSizeHorizontalBorderRight.␊ |
468 | * @field charSizeVerticalBorderTop verticalBorderTop must be a multiple of charSizeVerticalBorderTop.␊ |
469 | * @field charSizeVerticalBorderBottom verticalBorderBottom must be a multiple of charSizeVerticalBorderBottom.␊ |
470 | * @field charSizeHorizontalTotal (horizontalActive + horizontalBlanking) must be a multiple of charSizeHorizontalTotal.␊ |
471 | * @field charSizeVerticalTotal (verticalActive + verticalBlanking) must be a multiple of charSizeVerticalTotal.␊ |
472 | * @field __reservedE Set to zero.␊ |
473 | * @field minHorizontalActiveClocks minimum value of horizontalActive.␊ |
474 | * @field maxHorizontalActiveClocks maximum value of horizontalActive.␊ |
475 | * @field minHorizontalBlankingClocks minimum value of horizontalBlanking.␊ |
476 | * @field maxHorizontalBlankingClocks maximum value of horizontalBlanking.␊ |
477 | * @field minHorizontalSyncOffsetClocks minimum value of horizontalSyncOffset.␊ |
478 | * @field maxHorizontalSyncOffsetClocks maximum value of horizontalSyncOffset.␊ |
479 | * @field minHorizontalPulseWidthClocks minimum value of horizontalPulseWidth.␊ |
480 | * @field maxHorizontalPulseWidthClocks maximum value of horizontalPulseWidth.␊ |
481 | * @field minVerticalActiveClocks minimum value of verticalActive.␊ |
482 | * @field maxVerticalActiveClocks maximum value of verticalActive.␊ |
483 | * @field minVerticalBlankingClocks minimum value of verticalBlanking.␊ |
484 | * @field maxVerticalBlankingClocks maximum value of verticalBlanking.␊ |
485 | * @field minVerticalSyncOffsetClocks minimum value of verticalSyncOffset.␊ |
486 | * @field maxVerticalSyncOffsetClocks maximum value of verticalSyncOffset.␊ |
487 | * @field minVerticalPulseWidthClocks minimum value of verticalPulseWidth.␊ |
488 | * @field maxVerticalPulseWidthClocks maximum value of verticalPulseWidth.␊ |
489 | * @field minHorizontalBorderLeft minimum value of horizontalBorderLeft.␊ |
490 | * @field maxHorizontalBorderLeft maximum value of horizontalBorderLeft.␊ |
491 | * @field minHorizontalBorderRight minimum value of horizontalBorderRight.␊ |
492 | * @field maxHorizontalBorderRight maximum value of horizontalBorderRight.␊ |
493 | * @field minVerticalBorderTop minimum value of verticalBorderTop.␊ |
494 | * @field maxVerticalBorderTop maximum value of verticalBorderTop.␊ |
495 | * @field minVerticalBorderBottom minimum value of verticalBorderBottom.␊ |
496 | * @field maxVerticalBorderBottom maximum value of verticalBorderBottom.␊ |
497 | * @field maxNumLinks number of links supported, if zero, 1 link is assumed.␊ |
498 | * @field minLink0PixelClock minimum pixel clock for link 0 (kHz).␊ |
499 | * @field maxLink0PixelClock maximum pixel clock for link 0 (kHz).␊ |
500 | * @field minLink1PixelClock minimum pixel clock for link 1 (kHz).␊ |
501 | * @field maxLink1PixelClock maximum pixel clock for link 1 (kHz).␊ |
502 | * @field __reservedF Set to zero.␊ |
503 | */␊ |
504 | ␊ |
505 | struct IODisplayTimingRange␊ |
506 | {␊ |
507 | UInt32 __reservedA[2]; // Init to 0␊ |
508 | UInt32 version; // Init to 0␊ |
509 | UInt32 __reservedB[5]; // Init to 0␊ |
510 | ␊ |
511 | UInt64 minPixelClock; // Min dot clock in Hz␊ |
512 | UInt64 maxPixelClock; // Max dot clock in Hz␊ |
513 | ␊ |
514 | UInt32 maxPixelError; // Max dot clock error␊ |
515 | UInt32 supportedSyncFlags;␊ |
516 | UInt32 supportedSignalLevels;␊ |
517 | UInt32 supportedSignalConfigs;␊ |
518 | ␊ |
519 | UInt32 minFrameRate; // Hz␊ |
520 | UInt32 maxFrameRate; // Hz␊ |
521 | UInt32 minLineRate; // Hz␊ |
522 | UInt32 maxLineRate; // Hz␊ |
523 | ␊ |
524 | UInt32 maxHorizontalTotal; // Clocks - Maximum total (active + blanking)␊ |
525 | UInt32 maxVerticalTotal; // Clocks - Maximum total (active + blanking)␊ |
526 | UInt32 __reservedD[2]; // Init to 0␊ |
527 | ␊ |
528 | UInt8 charSizeHorizontalActive;␊ |
529 | UInt8 charSizeHorizontalBlanking; ␊ |
530 | UInt8 charSizeHorizontalSyncOffset; ␊ |
531 | UInt8 charSizeHorizontalSyncPulse; ␊ |
532 | ␊ |
533 | UInt8 charSizeVerticalActive; ␊ |
534 | UInt8 charSizeVerticalBlanking; ␊ |
535 | UInt8 charSizeVerticalSyncOffset; ␊ |
536 | UInt8 charSizeVerticalSyncPulse; ␊ |
537 | ␊ |
538 | UInt8 charSizeHorizontalBorderLeft; ␊ |
539 | UInt8 charSizeHorizontalBorderRight; ␊ |
540 | UInt8 charSizeVerticalBorderTop; ␊ |
541 | UInt8 charSizeVerticalBorderBottom; ␊ |
542 | ␊ |
543 | UInt8 charSizeHorizontalTotal; // Character size for active + blanking␊ |
544 | UInt8 charSizeVerticalTotal; // Character size for active + blanking␊ |
545 | UInt16 __reservedE; // Reserved (Init to 0)␊ |
546 | ␊ |
547 | UInt32 minHorizontalActiveClocks;␊ |
548 | UInt32 maxHorizontalActiveClocks;␊ |
549 | UInt32 minHorizontalBlankingClocks;␊ |
550 | UInt32 maxHorizontalBlankingClocks;␊ |
551 | ␊ |
552 | UInt32 minHorizontalSyncOffsetClocks;␊ |
553 | UInt32 maxHorizontalSyncOffsetClocks;␊ |
554 | UInt32 minHorizontalPulseWidthClocks;␊ |
555 | UInt32 maxHorizontalPulseWidthClocks;␊ |
556 | ␊ |
557 | UInt32 minVerticalActiveClocks;␊ |
558 | UInt32 maxVerticalActiveClocks;␊ |
559 | UInt32 minVerticalBlankingClocks;␊ |
560 | UInt32 maxVerticalBlankingClocks;␊ |
561 | ␊ |
562 | UInt32 minVerticalSyncOffsetClocks;␊ |
563 | UInt32 maxVerticalSyncOffsetClocks;␊ |
564 | UInt32 minVerticalPulseWidthClocks;␊ |
565 | UInt32 maxVerticalPulseWidthClocks;␊ |
566 | ␊ |
567 | UInt32 minHorizontalBorderLeft;␊ |
568 | UInt32 maxHorizontalBorderLeft;␊ |
569 | UInt32 minHorizontalBorderRight;␊ |
570 | UInt32 maxHorizontalBorderRight;␊ |
571 | ␊ |
572 | UInt32 minVerticalBorderTop;␊ |
573 | UInt32 maxVerticalBorderTop;␊ |
574 | UInt32 minVerticalBorderBottom;␊ |
575 | UInt32 maxVerticalBorderBottom;␊ |
576 | UInt32 maxNumLinks; // number of links, if zero, assume link 1␊ |
577 | UInt32 minLink0PixelClock; // min pixel clock for link 0 (kHz)␊ |
578 | UInt32 maxLink0PixelClock; // max pixel clock for link 0 (kHz)␊ |
579 | UInt32 minLink1PixelClock; // min pixel clock for link 1 (kHz)␊ |
580 | UInt32 maxLink1PixelClock; // max pixel clock for link 1 (kHz)␊ |
581 | ␊ |
582 | UInt32 __reservedF[3]; // Init to 0␊ |
583 | };␊ |
584 | typedef struct IODisplayTimingRange IODisplayTimingRange;␊ |
585 | ␊ |
586 | enum {␊ |
587 | // supportedSignalLevels␊ |
588 | kIORangeSupportsSignal_0700_0300 = 0x00000001,␊ |
589 | kIORangeSupportsSignal_0714_0286 = 0x00000002,␊ |
590 | kIORangeSupportsSignal_1000_0400 = 0x00000004,␊ |
591 | kIORangeSupportsSignal_0700_0000 = 0x00000008␊ |
592 | };␊ |
593 | enum {␊ |
594 | // supportedSyncFlags␊ |
595 | kIORangeSupportsSeparateSyncs = 0x00000001,␊ |
596 | kIORangeSupportsSyncOnGreen = 0x00000002,␊ |
597 | kIORangeSupportsCompositeSync = 0x00000004,␊ |
598 | kIORangeSupportsVSyncSerration = 0x00000008␊ |
599 | };␊ |
600 | enum {␊ |
601 | // supportedSignalConfigs␊ |
602 | kIORangeSupportsInterlacedCEATiming = 0x00000004,␊ |
603 | kIORangeSupportsInterlacedCEATimingWithConfirm = 0x00000008␊ |
604 | };␊ |
605 | ␊ |
606 | enum {␊ |
607 | // signalConfig␊ |
608 | kIODigitalSignal = 0x00000001,␊ |
609 | kIOAnalogSetupExpected = 0x00000002,␊ |
610 | kIOInterlacedCEATiming = 0x00000004,␊ |
611 | kIONTSCTiming = 0x00000008,␊ |
612 | kIOPALTiming = 0x00000010␊ |
613 | };␊ |
614 | ␊ |
615 | enum {␊ |
616 | // signalLevels for analog␊ |
617 | kIOAnalogSignalLevel_0700_0300 = 0,␊ |
618 | kIOAnalogSignalLevel_0714_0286 = 1,␊ |
619 | kIOAnalogSignalLevel_1000_0400 = 2,␊ |
620 | kIOAnalogSignalLevel_0700_0000 = 3␊ |
621 | };␊ |
622 | ␊ |
623 | enum {␊ |
624 | // horizontalSyncConfig and verticalSyncConfig␊ |
625 | kIOSyncPositivePolarity = 0x00000001␊ |
626 | };␊ |
627 | ␊ |
628 | /*!␊ |
629 | * @struct IODisplayScalerInformation␊ |
630 | * @abstract A structure defining the scaling capabilities of a framebuffer.␊ |
631 | * @discussion This structure is used to define the limits for modes programmed as detailed timings by the OS. A data property with this structure under the key kIOFBScalerInfoKey in a framebuffer will allow the OS to program detailed timings that are scaled to a displays native resolution.␊ |
632 | * @field __reservedA Set to zero.␊ |
633 | * @field version Set to zero.␊ |
634 | * @field __reservedB Set to zero.␊ |
635 | * @field scalerFeatures Mask of scaling features. The following are defined:<br>␊ |
636 | * kIOScaleStretchOnly If set the framebuffer can only provide stretched scaling with non-square pixels, without borders.<br>␊ |
637 | * kIOScaleCanUpSamplePixels If set framebuffer can scale up from a smaller number of source pixels to a larger native timing (eg. 640x480 pixels on a 1600x1200 timing).<br>␊ |
638 | * kIOScaleCanDownSamplePixels If set framebuffer can scale down from a larger number of source pixels to a smaller native timing (eg. 1600x1200 pixels on a 640x480 timing).<br>␊ |
639 | * kIOScaleCanScaleInterlaced If set framebuffer can scale an interlaced detailed timing.<br>␊ |
640 | * kIOScaleCanSupportInset If set framebuffer can support scaled modes with non-zero horizontalScaledInset, verticalScaledInset fields.<br>␊ |
641 | * kIOScaleCanRotate If set framebuffer can support some of the flags in the kIOScaleRotateFlags mask.<br>␊ |
642 | * kIOScaleCanBorderInsetOnly If set framebuffer can support scaled modes with non-zero horizontalScaledInset, verticalScaledInset fields, but requires the active pixels to be equal in size to the inset area, ie. can do insets with a border versus scaling an image.<br>␊ |
643 | * @field maxHorizontalPixels Maximum number of horizontal source pixels (horizontalScaled).<br>␊ |
644 | * @field maxVerticalPixels Maximum number of vertical source pixels (verticalScaled).<br>␊ |
645 | * @field __reservedC Set to zero.␊ |
646 | */␊ |
647 | ␊ |
648 | struct IODisplayScalerInformation {␊ |
649 | UInt32 __reservedA[1]; // Init to 0␊ |
650 | UInt32 version; // Init to 0␊ |
651 | UInt32 __reservedB[2]; // Init to 0␊ |
652 | ␊ |
653 | IOOptionBits scalerFeatures;␊ |
654 | UInt32 maxHorizontalPixels;␊ |
655 | UInt32 maxVerticalPixels;␊ |
656 | UInt32 __reservedC[5]; // Init to 0␊ |
657 | };␊ |
658 | typedef struct IODisplayScalerInformation IODisplayScalerInformation;␊ |
659 | ␊ |
660 | enum {␊ |
661 | /* scalerFeatures */␊ |
662 | kIOScaleStretchOnly = 0x00000001,␊ |
663 | kIOScaleCanUpSamplePixels = 0x00000002,␊ |
664 | kIOScaleCanDownSamplePixels = 0x00000004,␊ |
665 | kIOScaleCanScaleInterlaced = 0x00000008,␊ |
666 | kIOScaleCanSupportInset = 0x00000010,␊ |
667 | kIOScaleCanRotate = 0x00000020,␊ |
668 | kIOScaleCanBorderInsetOnly = 0x00000040␊ |
669 | };␊ |
670 | ␊ |
671 | //// Connections␊ |
672 | ␊ |
673 | enum {␊ |
674 | kOrConnections = 0xffffffe,␊ |
675 | kAndConnections = 0xffffffd␊ |
676 | };␊ |
677 | ␊ |
678 | enum {␊ |
679 | kConnectionFlags = 'flgs',␊ |
680 | kConnectionSyncEnable = 'sync',␊ |
681 | kConnectionSyncFlags = 'sycf',␊ |
682 | kConnectionSupportsAppleSense = 'asns',␊ |
683 | kConnectionSupportsLLDDCSense = 'lddc',␊ |
684 | kConnectionSupportsHLDDCSense = 'hddc',␊ |
685 | kConnectionEnable = 'enab',␊ |
686 | kConnectionCheckEnable = 'cena',␊ |
687 | kConnectionProbe = 'prob',␊ |
688 | kConnectionChanged = 'chng',␊ |
689 | kConnectionPower = 'powr',␊ |
690 | kConnectionPostWake = 'pwak',␊ |
691 | kConnectionDisplayParameterCount = 'pcnt',␊ |
692 | kConnectionDisplayParameters = 'parm',␊ |
693 | kConnectionOverscan = 'oscn',␊ |
694 | kConnectionVideoBest = 'vbst',␊ |
695 | ␊ |
696 | kConnectionRedGammaScale = 'rgsc',␊ |
697 | kConnectionGreenGammaScale = 'ggsc',␊ |
698 | kConnectionBlueGammaScale = 'bgsc',␊ |
699 | ␊ |
700 | kConnectionHandleDisplayPortEvent = 'dpir',␊ |
701 | ␊ |
702 | kConnectionPanelTimingDisable = 'pnlt',␊ |
703 | ␊ |
704 | kConnectionColorMode = 'cyuv',␊ |
705 | kConnectionColorModesSupported = 'colr',␊ |
706 | kConnectionColorDepthsSupported = ' bpc',␊ |
707 | ␊ |
708 | kConnectionControllerDepthsSupported = '\0grd',␊ |
709 | kConnectionControllerColorDepth = '\0dpd',␊ |
710 | kConnectionControllerDitherControl = '\0gdc',␊ |
711 | ␊ |
712 | kConnectionDisplayFlags = 'dflg',␊ |
713 | };␊ |
714 | ␊ |
715 | // kConnectionFlags values␊ |
716 | enum {␊ |
717 | kIOConnectionBuiltIn = 0x00000800,␊ |
718 | kIOConnectionStereoSync = 0x00008000␊ |
719 | };␊ |
720 | ␊ |
721 | // kConnectionSyncControl values␊ |
722 | enum {␊ |
723 | kIOHSyncDisable = 0x00000001,␊ |
724 | kIOVSyncDisable = 0x00000002,␊ |
725 | kIOCSyncDisable = 0x00000004,␊ |
726 | kIONoSeparateSyncControl = 0x00000040,␊ |
727 | kIOTriStateSyncs = 0x00000080,␊ |
728 | kIOSyncOnBlue = 0x00000008,␊ |
729 | kIOSyncOnGreen = 0x00000010,␊ |
730 | kIOSyncOnRed = 0x00000020␊ |
731 | };␊ |
732 | ␊ |
733 | // kConnectionHandleDisplayPortEvent values␊ |
734 | enum {␊ |
735 | kIODPEventStart = 1,␊ |
736 | kIODPEventIdle = 2,␊ |
737 | ␊ |
738 | kIODPEventForceRetrain = 3,␊ |
739 | ␊ |
740 | kIODPEventRemoteControlCommandPending = 256,␊ |
741 | kIODPEventAutomatedTestRequest = 257,␊ |
742 | kIODPEventContentProtection = 258,␊ |
743 | kIODPEventMCCS = 259,␊ |
744 | kIODPEventSinkSpecific = 260␊ |
745 | };␊ |
746 | ␊ |
747 | #define kIODisplayAttributesKey "IODisplayAttributes"␊ |
748 | ␊ |
749 | #define kIODisplaySupportsUnderscanKey "IODisplaySupportsUnderscan"␊ |
750 | #define kIODisplaySupportsBasicAudioKey "IODisplaySupportsBasicAudio"␊ |
751 | #define kIODisplaySupportsYCbCr444Key "IODisplaySupportsYCbCr444"␊ |
752 | #define kIODisplaySupportsYCbCr422Key "IODisplaySupportsYCbCr422"␊ |
753 | ␊ |
754 | enum␊ |
755 | { ␊ |
756 | kIODisplayColorMode = kConnectionColorMode,␊ |
757 | };␊ |
758 | ␊ |
759 | #if 0␊ |
760 | enum␊ |
761 | {␊ |
762 | // kConnectionColorMode attribute␊ |
763 | kIODisplayColorModeReserved = 0x00000000,␊ |
764 | kIODisplayColorModeRGB = 0x00000001,␊ |
765 | kIODisplayColorModeYCbCr422 = 0x00000010,␊ |
766 | kIODisplayColorModeYCbCr444 = 0x00000100,␊ |
767 | kIODisplayColorModeRGBLimited = 0x00001000,␊ |
768 | kIODisplayColorModeAuto = 0x10000000,␊ |
769 | };␊ |
770 | #endif␊ |
771 | ␊ |
772 | enum␊ |
773 | { ␊ |
774 | // kConnectionColorDepthsSupported attribute␊ |
775 | kIODisplayRGBColorComponentBitsUnknown = 0x00000000,␊ |
776 | kIODisplayRGBColorComponentBits6 = 0x00000001,␊ |
777 | kIODisplayRGBColorComponentBits8 = 0x00000002,␊ |
778 | kIODisplayRGBColorComponentBits10 = 0x00000004,␊ |
779 | kIODisplayRGBColorComponentBits12 = 0x00000008,␊ |
780 | kIODisplayRGBColorComponentBits14 = 0x00000010,␊ |
781 | kIODisplayRGBColorComponentBits16 = 0x00000020,␊ |
782 | ␊ |
783 | kIODisplayYCbCr444ColorComponentBitsUnknown = 0x00000000,␊ |
784 | kIODisplayYCbCr444ColorComponentBits6 = 0x00000100,␊ |
785 | kIODisplayYCbCr444ColorComponentBits8 = 0x00000200,␊ |
786 | kIODisplayYCbCr444ColorComponentBits10 = 0x00000400,␊ |
787 | kIODisplayYCbCr444ColorComponentBits12 = 0x00000800,␊ |
788 | kIODisplayYCbCr444ColorComponentBits14 = 0x00001000,␊ |
789 | kIODisplayYCbCr444ColorComponentBits16 = 0x00002000,␊ |
790 | ␊ |
791 | kIODisplayYCbCr422ColorComponentBitsUnknown = 0x00000000,␊ |
792 | kIODisplayYCbCr422ColorComponentBits6 = 0x00010000,␊ |
793 | kIODisplayYCbCr422ColorComponentBits8 = 0x00020000,␊ |
794 | kIODisplayYCbCr422ColorComponentBits10 = 0x00040000,␊ |
795 | kIODisplayYCbCr422ColorComponentBits12 = 0x00080000,␊ |
796 | kIODisplayYCbCr422ColorComponentBits14 = 0x00100000,␊ |
797 | kIODisplayYCbCr422ColorComponentBits16 = 0x00200000,␊ |
798 | };␊ |
799 | ␊ |
800 | enum␊ |
801 | { ␊ |
802 | // kConnectionDitherControl attribute␊ |
803 | kIODisplayDitherDisable = 0x00000000,␊ |
804 | kIODisplayDitherSpatial = 0x00000001,␊ |
805 | kIODisplayDitherTemporal = 0x00000002,␊ |
806 | kIODisplayDitherFrameRateControl = 0x00000004,␊ |
807 | kIODisplayDitherDefault = 0x00000080,␊ |
808 | kIODisplayDitherAll = 0x000000FF,␊ |
809 | kIODisplayDitherRGBShift = 0,␊ |
810 | kIODisplayDitherYCbCr444Shift = 8,␊ |
811 | kIODisplayDitherYCbCr422Shift = 16,␊ |
812 | };␊ |
813 | ␊ |
814 | enum␊ |
815 | { ␊ |
816 | // kConnectionDisplayFlags attribute␊ |
817 | kIODisplayNeedsCEAUnderscan = 0x00000001,␊ |
818 | };␊ |
819 | ␊ |
820 | ␊ |
821 | #define IO_DISPLAY_CAN_FILL 0x00000040␊ |
822 | #define IO_DISPLAY_CAN_BLIT 0x00000020␊ |
823 | ␊ |
824 | #define IO_24BPP_TRANSFER_TABLE_SIZE 256␊ |
825 | #define IO_15BPP_TRANSFER_TABLE_SIZE 256␊ |
826 | #define IO_8BPP_TRANSFER_TABLE_SIZE 256␊ |
827 | #define IO_12BPP_TRANSFER_TABLE_SIZE 256␊ |
828 | #define IO_2BPP_TRANSFER_TABLE_SIZE 256␊ |
829 | ␊ |
830 | #define STDFB_BM256_TO_BM38_MAP_SIZE 256␊ |
831 | #define STDFB_BM38_TO_BM256_MAP_SIZE 256␊ |
832 | #define STDFB_BM38_TO_256_WITH_LOGICAL_SIZE \␊ |
833 | (STDFB_BM38_TO_BM256_MAP_SIZE + (256/sizeof(int)))␊ |
834 | ␊ |
835 | #define STDFB_4BPS_TO_5BPS_MAP_SIZE 16␊ |
836 | #define STDFB_5BPS_TO_4BPS_MAP_SIZE 32␊ |
837 | ␊ |
838 | enum {␊ |
839 | // connection types for IOServiceOpen␊ |
840 | kIOFBServerConnectType = 0,␊ |
841 | kIOFBSharedConnectType = 1␊ |
842 | };␊ |
843 | ␊ |
844 | enum {␊ |
845 | // options for IOServiceRequestProbe()␊ |
846 | kIOFBUserRequestProbe = 0x00000001␊ |
847 | };␊ |
848 | ␊ |
849 | struct IOGPoint {␊ |
850 | SInt16 x;␊ |
851 | SInt16 y;␊ |
852 | };␊ |
853 | typedef struct IOGPoint IOGPoint;␊ |
854 | ␊ |
855 | struct IOGSize {␊ |
856 | SInt16 width;␊ |
857 | SInt16 height;␊ |
858 | };␊ |
859 | typedef struct IOGSize IOGSize;␊ |
860 | ␊ |
861 | struct IOGBounds {␊ |
862 | SInt16 minx;␊ |
863 | SInt16 maxx;␊ |
864 | SInt16 miny;␊ |
865 | SInt16 maxy;␊ |
866 | };␊ |
867 | typedef struct IOGBounds IOGBounds;␊ |
868 | ␊ |
869 | #ifndef kIODescriptionKey␊ |
870 | ␊ |
871 | #if !defined(__Point__) && !defined(BINTREE_H) && !defined(__MACTYPES__)␊ |
872 | #define __Point__␊ |
873 | typedef IOGPoint Point;␊ |
874 | #endif␊ |
875 | ␊ |
876 | #if !defined(__Bounds__) && !defined(BINTREE_H) && !defined(__MACTYPES__)␊ |
877 | #define __Bounds__␊ |
878 | typedef IOGBounds Bounds;␊ |
879 | #endif␊ |
880 | ␊ |
881 | #endif /* !kIODescriptionKey */␊ |
882 | ␊ |
883 | // cursor description␊ |
884 | ␊ |
885 | enum {␊ |
886 | kTransparentEncoding = 0,␊ |
887 | kInvertingEncoding␊ |
888 | };␊ |
889 | ␊ |
890 | enum {␊ |
891 | kTransparentEncodingShift = (kTransparentEncoding << 1),␊ |
892 | kTransparentEncodedPixel = (0x01 << kTransparentEncodingShift),␊ |
893 | ␊ |
894 | kInvertingEncodingShift = (kInvertingEncoding << 1),␊ |
895 | kInvertingEncodedPixel = (0x01 << kInvertingEncodingShift)␊ |
896 | };␊ |
897 | ␊ |
898 | enum {␊ |
899 | kHardwareCursorDescriptorMajorVersion = 0x0001,␊ |
900 | kHardwareCursorDescriptorMinorVersion = 0x0000␊ |
901 | };␊ |
902 | ␊ |
903 | /*!␊ |
904 | * @struct IOHardwareCursorDescriptor␊ |
905 | * @abstract A structure defining the format of a hardware cursor.␊ |
906 | * @discussion This structure is used by IOFramebuffer to define the format of a hardware cursor.␊ |
907 | * @field majorVersion Set to kHardwareCursorDescriptorMajorVersion.␊ |
908 | * @field minorVersion Set to kHardwareCursorDescriptorMinorVersion.␊ |
909 | * @field height Maximum size of the cursor.␊ |
910 | * @field width Maximum size of the cursor.␊ |
911 | * @field bitDepth Number bits per pixel, or a QD/QT pixel type, for example kIO8IndexedPixelFormat, kIO32ARGBPixelFormat.␊ |
912 | * @field maskBitDepth Unused.␊ |
913 | * @field numColors Number of colors for indexed pixel types.␊ |
914 | * @field colorEncodings An array pointer specifying the pixel values corresponding to the indices into the color table, for indexed pixel types.␊ |
915 | * @field flags None defined, set to zero.␊ |
916 | * @field supportedSpecialEncodings Mask of supported special pixel values, eg. kTransparentEncodedPixel, kInvertingEncodedPixel.␊ |
917 | * @field specialEncodings Array of pixel values for each supported special encoding.␊ |
918 | */␊ |
919 | ␊ |
920 | struct IOHardwareCursorDescriptor {␊ |
921 | UInt16 majorVersion;␊ |
922 | UInt16 minorVersion;␊ |
923 | UInt32 height;␊ |
924 | UInt32 width;␊ |
925 | UInt32 bitDepth; // bits per pixel, or a QD/QT pixel type␊ |
926 | UInt32 maskBitDepth; // unused␊ |
927 | UInt32 numColors; // number of colors in the colorMap. ie. ␊ |
928 | UInt32 * colorEncodings;␊ |
929 | UInt32 flags;␊ |
930 | UInt32 supportedSpecialEncodings;␊ |
931 | UInt32 specialEncodings[16];␊ |
932 | };␊ |
933 | typedef struct IOHardwareCursorDescriptor IOHardwareCursorDescriptor;␊ |
934 | ␊ |
935 | enum {␊ |
936 | kHardwareCursorInfoMajorVersion = 0x0001,␊ |
937 | kHardwareCursorInfoMinorVersion = 0x0000␊ |
938 | };␊ |
939 | ␊ |
940 | /*!␊ |
941 | * @struct IOHardwareCursorInfo␊ |
942 | * @abstract A structure defining the converted data of a hardware cursor.␊ |
943 | * @discussion This structure is used by IOFramebuffer to return the data of a hardware cursor by convertCursorImage() after conversion based on the IOHardwareCursorDescriptor passed to that routine.␊ |
944 | * @field majorVersion Set to kHardwareCursorInfoMajorVersion.␊ |
945 | * @field minorVersion Set to kHardwareCursorInfoMinorVersion.␊ |
946 | * @field cursorHeight The actual size of the cursor is returned.␊ |
947 | * @field cursorWidth The actual size of the cursor is returned.␊ |
948 | * @field colorMap Pointer to array of IOColorEntry structures, with the number of elements set by the numColors field of the IOHardwareCursorDescriptor. Zero should be passed for direct pixel formats.␊ |
949 | * @field hardwareCursorData Buffer to receive the converted cursor data.␊ |
950 | * @field cursorHotSpotX Cursor's hotspot.␊ |
951 | * @field cursorHotSpotY Cursor's hotspot.␊ |
952 | * @field reserved Reserved, set to zero.␊ |
953 | */␊ |
954 | ␊ |
955 | struct IOHardwareCursorInfo {␊ |
956 | UInt16 majorVersion;␊ |
957 | UInt16 minorVersion;␊ |
958 | UInt32 cursorHeight;␊ |
959 | UInt32 cursorWidth;␊ |
960 | // nil or big enough for hardware's max colors␊ |
961 | IOColorEntry * colorMap;␊ |
962 | UInt8 * hardwareCursorData;␊ |
963 | UInt16 cursorHotSpotX;␊ |
964 | UInt16 cursorHotSpotY;␊ |
965 | UInt32 reserved[5];␊ |
966 | };␊ |
967 | typedef struct IOHardwareCursorInfo IOHardwareCursorInfo;␊ |
968 | ␊ |
969 | // interrupt types␊ |
970 | ␊ |
971 | enum {␊ |
972 | kIOFBVBLInterruptType = 'vbl ',␊ |
973 | kIOFBHBLInterruptType = 'hbl ',␊ |
974 | kIOFBFrameInterruptType = 'fram',␊ |
975 | // Demand to check configuration (Hardware unchanged)␊ |
976 | kIOFBConnectInterruptType = 'dci ',␊ |
977 | // Demand to rebuild (Hardware has reinitialized on dependent change)␊ |
978 | kIOFBChangedInterruptType = 'chng',␊ |
979 | // Demand to remove framebuffer (Hardware not available on dependent change -- but must not buserror)␊ |
980 | kIOFBOfflineInterruptType = 'remv',␊ |
981 | // Notice that hardware is available (after being removed)␊ |
982 | kIOFBOnlineInterruptType = 'add ',␊ |
983 | // DisplayPort short pulse␊ |
984 | kIOFBDisplayPortInterruptType = 'dpir',␊ |
985 | // DisplayPort link event␊ |
986 | kIOFBDisplayPortLinkChangeInterruptType = 'dplk',␊ |
987 | // MCCS␊ |
988 | kIOFBMCCSInterruptType = 'mccs'␊ |
989 | };␊ |
990 | ␊ |
991 | // IOAppleTimingID's␊ |
992 | enum {␊ |
993 | kIOTimingIDInvalid = 0, /* Not a standard timing */␊ |
994 | kIOTimingIDApple_FixedRateLCD = 42, /* Lump all fixed-rate LCDs into one category.*/␊ |
995 | kIOTimingIDApple_512x384_60hz = 130, /* 512x384 (60 Hz) Rubik timing. */␊ |
996 | kIOTimingIDApple_560x384_60hz = 135, /* 560x384 (60 Hz) Rubik-560 timing. */␊ |
997 | kIOTimingIDApple_640x480_67hz = 140, /* 640x480 (67 Hz) HR timing. */␊ |
998 | kIOTimingIDApple_640x400_67hz = 145, /* 640x400 (67 Hz) HR-400 timing. */␊ |
999 | kIOTimingIDVESA_640x480_60hz = 150, /* 640x480 (60 Hz) VGA timing. */␊ |
1000 | kIOTimingIDVESA_640x480_72hz = 152, /* 640x480 (72 Hz) VGA timing. */␊ |
1001 | kIOTimingIDVESA_640x480_75hz = 154, /* 640x480 (75 Hz) VGA timing. */␊ |
1002 | kIOTimingIDVESA_640x480_85hz = 158, /* 640x480 (85 Hz) VGA timing. */␊ |
1003 | kIOTimingIDGTF_640x480_120hz = 159, /* 640x480 (120 Hz) VESA Generalized Timing Formula */␊ |
1004 | kIOTimingIDApple_640x870_75hz = 160, /* 640x870 (75 Hz) FPD timing.*/␊ |
1005 | kIOTimingIDApple_640x818_75hz = 165, /* 640x818 (75 Hz) FPD-818 timing.*/␊ |
1006 | kIOTimingIDApple_832x624_75hz = 170, /* 832x624 (75 Hz) GoldFish timing.*/␊ |
1007 | kIOTimingIDVESA_800x600_56hz = 180, /* 800x600 (56 Hz) SVGA timing. */␊ |
1008 | kIOTimingIDVESA_800x600_60hz = 182, /* 800x600 (60 Hz) SVGA timing. */␊ |
1009 | kIOTimingIDVESA_800x600_72hz = 184, /* 800x600 (72 Hz) SVGA timing. */␊ |
1010 | kIOTimingIDVESA_800x600_75hz = 186, /* 800x600 (75 Hz) SVGA timing. */␊ |
1011 | kIOTimingIDVESA_800x600_85hz = 188, /* 800x600 (85 Hz) SVGA timing. */␊ |
1012 | kIOTimingIDVESA_1024x768_60hz = 190, /* 1024x768 (60 Hz) VESA 1K-60Hz timing. */␊ |
1013 | kIOTimingIDVESA_1024x768_70hz = 200, /* 1024x768 (70 Hz) VESA 1K-70Hz timing. */␊ |
1014 | kIOTimingIDVESA_1024x768_75hz = 204, /* 1024x768 (75 Hz) VESA 1K-75Hz timing (very similar to kIOTimingIDApple_1024x768_75hz). */␊ |
1015 | kIOTimingIDVESA_1024x768_85hz = 208, /* 1024x768 (85 Hz) VESA timing. */␊ |
1016 | kIOTimingIDApple_1024x768_75hz = 210, /* 1024x768 (75 Hz) Apple 19" RGB. */␊ |
1017 | kIOTimingIDApple_1152x870_75hz = 220, /* 1152x870 (75 Hz) Apple 21" RGB. */␊ |
1018 | kIOTimingIDAppleNTSC_ST = 230, /* 512x384 (60 Hz, interlaced, non-convolved). */␊ |
1019 | kIOTimingIDAppleNTSC_FF = 232, /* 640x480 (60 Hz, interlaced, non-convolved). */␊ |
1020 | kIOTimingIDAppleNTSC_STconv = 234, /* 512x384 (60 Hz, interlaced, convolved). */␊ |
1021 | kIOTimingIDAppleNTSC_FFconv = 236, /* 640x480 (60 Hz, interlaced, convolved). */␊ |
1022 | kIOTimingIDApplePAL_ST = 238, /* 640x480 (50 Hz, interlaced, non-convolved). */␊ |
1023 | kIOTimingIDApplePAL_FF = 240, /* 768x576 (50 Hz, interlaced, non-convolved). */␊ |
1024 | kIOTimingIDApplePAL_STconv = 242, /* 640x480 (50 Hz, interlaced, convolved). */␊ |
1025 | kIOTimingIDApplePAL_FFconv = 244, /* 768x576 (50 Hz, interlaced, convolved). */␊ |
1026 | kIOTimingIDVESA_1280x960_75hz = 250, /* 1280x960 (75 Hz) */␊ |
1027 | kIOTimingIDVESA_1280x960_60hz = 252, /* 1280x960 (60 Hz) */␊ |
1028 | kIOTimingIDVESA_1280x960_85hz = 254, /* 1280x960 (85 Hz) */␊ |
1029 | kIOTimingIDVESA_1280x1024_60hz = 260, /* 1280x1024 (60 Hz) */␊ |
1030 | kIOTimingIDVESA_1280x1024_75hz = 262, /* 1280x1024 (75 Hz) */␊ |
1031 | kIOTimingIDVESA_1280x1024_85hz = 268, /* 1280x1024 (85 Hz) */␊ |
1032 | kIOTimingIDVESA_1600x1200_60hz = 280, /* 1600x1200 (60 Hz) VESA timing. */␊ |
1033 | kIOTimingIDVESA_1600x1200_65hz = 282, /* 1600x1200 (65 Hz) VESA timing. */␊ |
1034 | kIOTimingIDVESA_1600x1200_70hz = 284, /* 1600x1200 (70 Hz) VESA timing. */␊ |
1035 | kIOTimingIDVESA_1600x1200_75hz = 286, /* 1600x1200 (75 Hz) VESA timing (pixel clock is 189.2 Mhz dot clock). */␊ |
1036 | kIOTimingIDVESA_1600x1200_80hz = 288, /* 1600x1200 (80 Hz) VESA timing (pixel clock is 216>? Mhz dot clock) - proposed only. */␊ |
1037 | kIOTimingIDVESA_1600x1200_85hz = 289, /* 1600x1200 (85 Hz) VESA timing (pixel clock is 229.5 Mhz dot clock). */␊ |
1038 | kIOTimingIDVESA_1792x1344_60hz = 296, /* 1792x1344 (60 Hz) VESA timing (204.75 Mhz dot clock). */␊ |
1039 | kIOTimingIDVESA_1792x1344_75hz = 298, /* 1792x1344 (75 Hz) VESA timing (261.75 Mhz dot clock). */␊ |
1040 | kIOTimingIDVESA_1856x1392_60hz = 300, /* 1856x1392 (60 Hz) VESA timing (218.25 Mhz dot clock). */␊ |
1041 | kIOTimingIDVESA_1856x1392_75hz = 302, /* 1856x1392 (75 Hz) VESA timing (288 Mhz dot clock). */␊ |
1042 | kIOTimingIDVESA_1920x1440_60hz = 304, /* 1920x1440 (60 Hz) VESA timing (234 Mhz dot clock). */␊ |
1043 | kIOTimingIDVESA_1920x1440_75hz = 306, /* 1920x1440 (75 Hz) VESA timing (297 Mhz dot clock). */␊ |
1044 | kIOTimingIDSMPTE240M_60hz = 400, /* 60Hz V, 33.75KHz H, interlaced timing, 16:9 aspect, typical resolution of 1920x1035. */␊ |
1045 | kIOTimingIDFilmRate_48hz = 410, /* 48Hz V, 25.20KHz H, non-interlaced timing, typical resolution of 640x480. */␊ |
1046 | kIOTimingIDSony_1600x1024_76hz = 500, /* 1600x1024 (76 Hz) Sony timing (pixel clock is 170.447 Mhz dot clock). */␊ |
1047 | kIOTimingIDSony_1920x1080_60hz = 510, /* 1920x1080 (60 Hz) Sony timing (pixel clock is 159.84 Mhz dot clock). */␊ |
1048 | kIOTimingIDSony_1920x1080_72hz = 520, /* 1920x1080 (72 Hz) Sony timing (pixel clock is 216.023 Mhz dot clock). */␊ |
1049 | kIOTimingIDSony_1920x1200_76hz = 540, /* 1900x1200 (76 Hz) Sony timing (pixel clock is 243.20 Mhz dot clock). */␊ |
1050 | kIOTimingIDApple_0x0_0hz_Offline = 550, /* Indicates that this timing will take the display off-line and remove it from the system. */␊ |
1051 | kIOTimingIDVESA_848x480_60hz = 570, /* 848x480 (60 Hz) VESA timing. */␊ |
1052 | kIOTimingIDVESA_1360x768_60hz = 590 /* 1360x768 (60 Hz) VESA timing. */␊ |
1053 | };␊ |
1054 | ␊ |
1055 | // framebuffer property keys␊ |
1056 | ␊ |
1057 | #define kIOFramebufferInfoKey "IOFramebufferInformation"␊ |
1058 | ␊ |
1059 | #define kIOFBWidthKey "IOFBWidth"␊ |
1060 | #define kIOFBHeightKey "IOFBHeight"␊ |
1061 | #define kIOFBRefreshRateKey "IOFBRefreshRate"␊ |
1062 | #define kIOFBFlagsKey "IOFBFlags"␊ |
1063 | #define kIOFBBytesPerRowKey "IOFBBytesPerRow"␊ |
1064 | #define kIOFBBytesPerPlaneKey "IOFBBytesPerPlane"␊ |
1065 | #define kIOFBBitsPerPixelKey "IOFBBitsPerPixel"␊ |
1066 | #define kIOFBComponentCountKey "IOFBComponentCount"␊ |
1067 | #define kIOFBBitsPerComponentKey "IOFBBitsPerComponent"␊ |
1068 | ␊ |
1069 | #define kIOFBDetailedTimingsKey "IOFBDetailedTimings"␊ |
1070 | #define kIOFBTimingRangeKey "IOFBTimingRange"␊ |
1071 | #define kIOFBScalerInfoKey "IOFBScalerInfo"␊ |
1072 | #define kIOFBCursorInfoKey "IOFBCursorInfo"␊ |
1073 | ␊ |
1074 | #define kIOFBHostAccessFlagsKey "IOFBHostAccessFlags"␊ |
1075 | ␊ |
1076 | #define kIOFBMemorySizeKey "IOFBMemorySize"␊ |
1077 | ␊ |
1078 | #define kIOFBProbeOptionsKey "IOFBProbeOptions"␊ |
1079 | ␊ |
1080 | #define kIOFBGammaWidthKey "IOFBGammaWidth"␊ |
1081 | #define kIOFBGammaCountKey "IOFBGammaCount"␊ |
1082 | #define kIOFBCLUTDeferKey "IOFBCLUTDefer"␊ |
1083 | ␊ |
1084 | // exists on the hibernate progress display device␊ |
1085 | #ifndef kIOHibernatePreviewActiveKey␊ |
1086 | #define kIOHibernatePreviewActiveKey "IOHibernatePreviewActive"␊ |
1087 | // values for kIOHibernatePreviewActiveKey set by driver␊ |
1088 | enum {␊ |
1089 | kIOHibernatePreviewActive = 0x00000001,␊ |
1090 | kIOHibernatePreviewUpdates = 0x00000002␊ |
1091 | };␊ |
1092 | #endif␊ |
1093 | ␊ |
1094 | // CFNumber/CFData␊ |
1095 | #define kIOFBAVSignalTypeKey "av-signal-type"␊ |
1096 | enum {␊ |
1097 | kIOFBAVSignalTypeUnknown = 0x00000000,␊ |
1098 | kIOFBAVSignalTypeVGA = 0x00000001,␊ |
1099 | kIOFBAVSignalTypeDVI = 0x00000002,␊ |
1100 | kIOFBAVSignalTypeHDMI = 0x00000008,␊ |
1101 | kIOFBAVSignalTypeDP = 0x00000010,␊ |
1102 | };␊ |
1103 | ␊ |
1104 | // diagnostic keys␊ |
1105 | ␊ |
1106 | #define kIOFBConfigKey "IOFBConfig"␊ |
1107 | #define kIOFBModesKey "IOFBModes"␊ |
1108 | #define kIOFBModeIDKey "ID"␊ |
1109 | #define kIOFBModeDMKey "DM"␊ |
1110 | #define kIOFBModeTMKey "TM"␊ |
1111 | #define kIOFBModeAIDKey "AID"␊ |
1112 | #define kIOFBModeDFKey "DF"␊ |
1113 | ␊ |
1114 | // display property keys␊ |
1115 | ␊ |
1116 | #define kIODisplayEDIDKey "IODisplayEDID"␊ |
1117 | #define kIODisplayLocationKey "IODisplayLocation" // CFString␊ |
1118 | #define kIODisplayConnectFlagsKey "IODisplayConnectFlags" // CFNumber␊ |
1119 | #define kIODisplayHasBacklightKey "IODisplayHasBacklight" // CFBoolean␊ |
1120 | #define kIODisplayIsDigitalKey "IODisplayIsDigital" // CFBoolean␊ |
1121 | #define kDisplayBundleKey "DisplayBundle"␊ |
1122 | ␊ |
1123 | #define kAppleDisplayTypeKey "AppleDisplayType"␊ |
1124 | #define kAppleSenseKey "AppleSense"␊ |
1125 | ␊ |
1126 | #define kIODisplayMCCSVersionKey "IODisplayMCCSVersion"␊ |
1127 | #define kIODisplayTechnologyTypeKey "IODisplayTechnologyType"␊ |
1128 | #define kIODisplayUsageTimeKey "IODisplayUsageTime"␊ |
1129 | #define kIODisplayFirmwareLevelKey "IODisplayFirmwareLevel"␊ |
1130 | ␊ |
1131 | enum {␊ |
1132 | kDisplayVendorIDUnknown = 'unkn',␊ |
1133 | kDisplayProductIDGeneric = 0x717␊ |
1134 | };␊ |
1135 | ␊ |
1136 | #define kDisplayVendorID "DisplayVendorID" // CFNumber␊ |
1137 | #define kDisplayProductID "DisplayProductID" // CFNumber␊ |
1138 | #define kDisplaySerialNumber "DisplaySerialNumber" // CFNumber␊ |
1139 | #define kDisplaySerialString "DisplaySerialString" // CFString␊ |
1140 | #define kDisplayWeekOfManufacture "DisplayWeekManufacture" // CFNumber␊ |
1141 | #define kDisplayYearOfManufacture "DisplayYearManufacture" // CFNumber␊ |
1142 | ␊ |
1143 | // CFDictionary of language-locale keys, name values␊ |
1144 | // eg. "en"="Color LCD", "en-GB"="Colour LCD"␊ |
1145 | #define kDisplayProductName "DisplayProductName"␊ |
1146 | ␊ |
1147 | // all CFNumber or CFArray of CFNumber (floats)␊ |
1148 | #define kDisplayWhitePointX "DisplayWhitePointX"␊ |
1149 | #define kDisplayWhitePointY "DisplayWhitePointY"␊ |
1150 | #define kDisplayRedPointX "DisplayRedPointX"␊ |
1151 | #define kDisplayRedPointY "DisplayRedPointY"␊ |
1152 | #define kDisplayGreenPointX "DisplayGreenPointX"␊ |
1153 | #define kDisplayGreenPointY "DisplayGreenPointY"␊ |
1154 | #define kDisplayBluePointX "DisplayBluePointX"␊ |
1155 | #define kDisplayBluePointY "DisplayBluePointY"␊ |
1156 | #define kDisplayWhiteGamma "DisplayWhiteGamma"␊ |
1157 | #define kDisplayRedGamma "DisplayRedGamma"␊ |
1158 | #define kDisplayGreenGamma "DisplayGreenGamma"␊ |
1159 | #define kDisplayBlueGamma "DisplayBlueGamma"␊ |
1160 | ␊ |
1161 | // Display gamma␊ |
1162 | #define kDisplayGammaChannels "DisplayGammaChannels" // CFNumber 1 or 3 channel count␊ |
1163 | #define kDisplayGammaEntryCount "DisplayGammaEntryCount" // CFNumber 1-based count of entries per channel␊ |
1164 | #define kDisplayGammaEntrySize "DisplayGammaEntrySize" // CFNumber size in bytes of each table entry␊ |
1165 | #define kDisplayGammaTable "DisplayGammaTable" // CFData␊ |
1166 | ␊ |
1167 | // CFBoolean␊ |
1168 | #define kDisplayBrightnessAffectsGamma "DisplayBrightnessAffectsGamma"␊ |
1169 | #define kDisplayViewAngleAffectsGamma "DisplayViewAngleAffectsGamma"␊ |
1170 | ␊ |
1171 | // CFData␊ |
1172 | #define kDisplayCSProfile "DisplayCSProfile"␊ |
1173 | ␊ |
1174 | // CFNumber␊ |
1175 | #define kDisplayHorizontalImageSize "DisplayHorizontalImageSize"␊ |
1176 | #define kDisplayVerticalImageSize "DisplayVerticalImageSize"␊ |
1177 | ␊ |
1178 | // Pixel description␊ |
1179 | ␊ |
1180 | // CFBoolean␊ |
1181 | #define kDisplayFixedPixelFormat "DisplayFixedPixelFormat"␊ |
1182 | ␊ |
1183 | enum {␊ |
1184 | kDisplaySubPixelLayoutUndefined = 0x00000000,␊ |
1185 | kDisplaySubPixelLayoutRGB = 0x00000001,␊ |
1186 | kDisplaySubPixelLayoutBGR = 0x00000002,␊ |
1187 | kDisplaySubPixelLayoutQuadGBL = 0x00000003,␊ |
1188 | kDisplaySubPixelLayoutQuadGBR = 0x00000004,␊ |
1189 | ␊ |
1190 | kDisplaySubPixelConfigurationUndefined = 0x00000000,␊ |
1191 | kDisplaySubPixelConfigurationDelta = 0x00000001,␊ |
1192 | kDisplaySubPixelConfigurationStripe = 0x00000002,␊ |
1193 | kDisplaySubPixelConfigurationStripeOffset = 0x00000003,␊ |
1194 | kDisplaySubPixelConfigurationQuad = 0x00000004,␊ |
1195 | ␊ |
1196 | kDisplaySubPixelShapeUndefined = 0x00000000,␊ |
1197 | kDisplaySubPixelShapeRound = 0x00000001,␊ |
1198 | kDisplaySubPixelShapeSquare = 0x00000002,␊ |
1199 | kDisplaySubPixelShapeRectangular = 0x00000003,␊ |
1200 | kDisplaySubPixelShapeOval = 0x00000004,␊ |
1201 | kDisplaySubPixelShapeElliptical = 0x00000005␊ |
1202 | };␊ |
1203 | ␊ |
1204 | // CFNumbers␊ |
1205 | #define kDisplaySubPixelLayout "DisplaySubPixelLayout"␊ |
1206 | #define kDisplaySubPixelConfiguration "DisplaySubPixelConfiguration"␊ |
1207 | #define kDisplaySubPixelShape "DisplaySubPixelShape"␊ |
1208 | ␊ |
1209 | #define kIODisplayOverrideMatchingKey "IODisplayOverrideMatching"␊ |
1210 | ␊ |
1211 | // Display parameters␊ |
1212 | ␊ |
1213 | #define kIODisplayParametersKey "IODisplayParameters"␊ |
1214 | #define kIODisplayGUIDKey "IODisplayGUID"␊ |
1215 | ␊ |
1216 | #define kIODisplayValueKey "value"␊ |
1217 | #define kIODisplayMinValueKey "min"␊ |
1218 | #define kIODisplayMaxValueKey "max"␊ |
1219 | ␊ |
1220 | #define kIODisplayBrightnessKey "brightness"␊ |
1221 | #define kIODisplayContrastKey "contrast"␊ |
1222 | #define kIODisplayHorizontalPositionKey "horizontal-position"␊ |
1223 | #define kIODisplayHorizontalSizeKey "horizontal-size"␊ |
1224 | #define kIODisplayVerticalPositionKey "vertical-position"␊ |
1225 | #define kIODisplayVerticalSizeKey "vertical-size"␊ |
1226 | #define kIODisplayTrapezoidKey "trapezoid"␊ |
1227 | #define kIODisplayPincushionKey "pincushion"␊ |
1228 | #define kIODisplayParallelogramKey "parallelogram"␊ |
1229 | #define kIODisplayRotationKey "rotation"␊ |
1230 | #define kIODisplayTheatreModeKey "theatre-mode"␊ |
1231 | #define kIODisplayTheatreModeWindowKey "theatre-mode-window"␊ |
1232 | #define kIODisplayOverscanKey "oscn"␊ |
1233 | #define kIODisplayVideoBestKey "vbst"␊ |
1234 | ␊ |
1235 | #define kIODisplaySpeakerVolumeKey "speaker-volume"␊ |
1236 | #define kIODisplaySpeakerSelectKey "speaker-select"␊ |
1237 | #define kIODisplayMicrophoneVolumeKey "microphone-volume"␊ |
1238 | #define kIODisplayAmbientLightSensorKey "ambient-light-sensor"␊ |
1239 | #define kIODisplayAudioMuteAndScreenBlankKey "audio-mute-and-screen-blank"␊ |
1240 | #define kIODisplayAudioTrebleKey "audio-treble"␊ |
1241 | #define kIODisplayAudioBassKey "audio-bass"␊ |
1242 | #define kIODisplayAudioBalanceLRKey "audio-balance-LR"␊ |
1243 | #define kIODisplayAudioProcessorModeKey "audio-processor-mode"␊ |
1244 | #define kIODisplayPowerModeKey "power-mode"␊ |
1245 | #define kIODisplayManufacturerSpecificKey "manufacturer-specific"␊ |
1246 | ␊ |
1247 | ␊ |
1248 | #define kIODisplayRedGammaScaleKey "rgsc"␊ |
1249 | #define kIODisplayGreenGammaScaleKey "ggsc"␊ |
1250 | #define kIODisplayBlueGammaScaleKey "bgsc"␊ |
1251 | ␊ |
1252 | #define kIODisplayParametersCommitKey "commit"␊ |
1253 | #define kIODisplayParametersDefaultKey "defaults"␊ |
1254 | #define kIODisplayParametersFlushKey "flush"␊ |
1255 | ␊ |
1256 | #ifdef __cplusplus␊ |
1257 | }␊ |
1258 | #endif␊ |
1259 | ␊ |
1260 | #endif /* ! _IOKIT_IOGRAPHICSTYPES_H */␊ |
1261 |