Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/include/IOKit/graphics/IOGraphicsTypes.h

Source at commit 1129 created 12 years 11 months ago.
By meklort, Change options.o so that it reloads the system config as well. Also change it so that it uses that config for variables (NOTE: if the calue exists in chameleonConfig, it's used instead.
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
31extern "C" {
32#endif
33
34#define IOGRAPHICSTYPES_REV 24
35
36typedef SInt32 IOIndex;
37typedef UInt32 IOSelect;
38typedef UInt32 IOFixed1616;
39typedef UInt32 IODisplayVendorID;
40typedef UInt32 IODisplayProductID;
41
42typedef SInt32 IODisplayModeID;
43enum {
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
50enum {
51 kIOMaxPixelBits = 64
52};
53typedef 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
81enum {
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
109struct 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};
123typedef struct IOPixelInformation IOPixelInformation;
124
125// ID for industry standard display timings
126typedef 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
144struct IODisplayModeInformation {
145 UInt32 nominalWidth;
146 UInt32 nominalHeight;
147 IOFixed1616 refreshRate;
148 IOIndex maxDepthIndex;
149 UInt32 flags;
150 UInt32 reserved[ 4 ];
151};
152typedef struct IODisplayModeInformation IODisplayModeInformation;
153
154// flags
155enum {
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};
174enum {
175 kDisplayModeValidFlag = 0x00000001,
176 kDisplayModeSafeFlag = 0x00000002,
177 kDisplayModeDefaultFlag = 0x00000004
178};
179
180#ifndef KERNEL
181// Framebuffer info - obsolete
182
183struct 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};
194typedef struct IOFramebufferInformation IOFramebufferInformation;
195#endif
196
197// flags
198enum {
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
206typedef IOIndex IOPixelAperture;
207enum {
208 kIOFBSystemAperture = 0
209};
210
211//// CLUTs
212
213typedef 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
225struct IOColorEntry {
226 UInt16 index;
227 IOColorComponent red;
228 IOColorComponent green;
229 IOColorComponent blue;
230};
231typedef struct IOColorEntry IOColorEntry;
232
233// options (masks)
234enum {
235 kSetCLUTByValue = 0x00000001, // else at index
236 kSetCLUTImmediately = 0x00000002, // else at VBL
237 kSetCLUTWithLuminance = 0x00000004 // else RGB
238};
239
240//// Controller attributes
241
242enum {
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
263enum {
264 kIOMirrorIsPrimary = 0x80000000,
265 kIOMirrorHWClipped = 0x40000000
266};
267
268// values for kIOMirrorDefaultAttribute
269enum {
270 kIOMirrorDefault = 0x00000001,
271 kIOMirrorForced = 0x00000002
272};
273
274//// Display mode timing information
275
276struct 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};
290typedef 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
339struct 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};
380typedef struct IODetailedTimingInformationV2 IODetailedTimingInformationV2;
381typedef struct IODetailedTimingInformationV2 IODetailedTimingInformation;
382
383struct IOTimingInformation {
384 IOAppleTimingID appleTimingID; // kIOTimingIDXXX const
385 UInt32 flags;
386 union {
387 IODetailedTimingInformationV1 v1;
388 IODetailedTimingInformationV2 v2;
389 } detailedInfo;
390};
391typedef struct IOTimingInformation IOTimingInformation;
392
393enum {
394 // IOTimingInformation flags
395 kIODetailedTimingValid = 0x80000000,
396 kIOScalingInfoValid = 0x40000000
397};
398
399enum {
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)
417struct IOFBDisplayModeDescription {
418 IODisplayModeInformation info;
419 IOTimingInformation timingInfo;
420};
421typedef 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
505struct 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};
584typedef struct IODisplayTimingRange IODisplayTimingRange;
585
586enum {
587 // supportedSignalLevels
588 kIORangeSupportsSignal_0700_0300 = 0x00000001,
589 kIORangeSupportsSignal_0714_0286 = 0x00000002,
590 kIORangeSupportsSignal_1000_0400 = 0x00000004,
591 kIORangeSupportsSignal_0700_0000 = 0x00000008
592};
593enum {
594 // supportedSyncFlags
595 kIORangeSupportsSeparateSyncs = 0x00000001,
596 kIORangeSupportsSyncOnGreen = 0x00000002,
597 kIORangeSupportsCompositeSync = 0x00000004,
598 kIORangeSupportsVSyncSerration = 0x00000008
599};
600enum {
601 // supportedSignalConfigs
602 kIORangeSupportsInterlacedCEATiming = 0x00000004,
603 kIORangeSupportsInterlacedCEATimingWithConfirm = 0x00000008
604};
605
606enum {
607 // signalConfig
608 kIODigitalSignal = 0x00000001,
609 kIOAnalogSetupExpected = 0x00000002,
610 kIOInterlacedCEATiming = 0x00000004,
611 kIONTSCTiming = 0x00000008,
612 kIOPALTiming = 0x00000010
613};
614
615enum {
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
623enum {
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
648struct 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};
658typedef struct IODisplayScalerInformation IODisplayScalerInformation;
659
660enum {
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
673enum {
674 kOrConnections = 0xffffffe,
675 kAndConnections = 0xffffffd
676};
677
678enum {
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
716enum {
717 kIOConnectionBuiltIn = 0x00000800,
718 kIOConnectionStereoSync = 0x00008000
719};
720
721// kConnectionSyncControl values
722enum {
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
734enum {
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
754enum
755{
756 kIODisplayColorMode = kConnectionColorMode,
757};
758
759#if 0
760enum
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
772enum
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
800enum
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
814enum
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
838enum {
839 // connection types for IOServiceOpen
840 kIOFBServerConnectType = 0,
841 kIOFBSharedConnectType = 1
842};
843
844enum {
845 // options for IOServiceRequestProbe()
846 kIOFBUserRequestProbe = 0x00000001
847};
848
849struct IOGPoint {
850 SInt16 x;
851 SInt16 y;
852};
853typedef struct IOGPoint IOGPoint;
854
855struct IOGSize {
856 SInt16 width;
857 SInt16 height;
858};
859typedef struct IOGSize IOGSize;
860
861struct IOGBounds {
862 SInt16 minx;
863 SInt16 maxx;
864 SInt16 miny;
865 SInt16 maxy;
866};
867typedef struct IOGBounds IOGBounds;
868
869#ifndef kIODescriptionKey
870
871#if !defined(__Point__) && !defined(BINTREE_H) && !defined(__MACTYPES__)
872#define __Point__
873typedef IOGPoint Point;
874#endif
875
876#if !defined(__Bounds__) && !defined(BINTREE_H) && !defined(__MACTYPES__)
877#define __Bounds__
878typedef IOGBounds Bounds;
879#endif
880
881#endif /* !kIODescriptionKey */
882
883// cursor description
884
885enum {
886 kTransparentEncoding = 0,
887 kInvertingEncoding
888};
889
890enum {
891 kTransparentEncodingShift = (kTransparentEncoding << 1),
892 kTransparentEncodedPixel = (0x01 << kTransparentEncodingShift),
893
894 kInvertingEncodingShift = (kInvertingEncoding << 1),
895 kInvertingEncodedPixel = (0x01 << kInvertingEncodingShift)
896};
897
898enum {
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
920struct 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};
933typedef struct IOHardwareCursorDescriptor IOHardwareCursorDescriptor;
934
935enum {
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
955struct 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};
967typedef struct IOHardwareCursorInfo IOHardwareCursorInfo;
968
969// interrupt types
970
971enum {
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
992enum {
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
1088enum {
1089 kIOHibernatePreviewActive = 0x00000001,
1090 kIOHibernatePreviewUpdates = 0x00000002
1091};
1092#endif
1093
1094// CFNumber/CFData
1095#define kIOFBAVSignalTypeKey "av-signal-type"
1096enum {
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
1131enum {
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
1183enum {
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

Archive Download this file

Revision: 1129