Root/
Source at commit 1902 created 12 years 4 months ago. By ifabio, Package: - Added fa.po: Farsi Language (44% Completed) - Update ro.po: Russian Language (93% Completed) | |
---|---|
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 |