Root/
Source at commit 1733 created 12 years 6 months ago. By blackosx, Use the result from an intitial check to find if the target volume has an EFI system partition, later on in the installation process before checking for previous Chameleon installations. Add some feedback to the installer log. | |
---|---|
1 | /*␊ |
2 | * edid.h␊ |
3 | * ␊ |
4 | *␊ |
5 | * Created by Evan Lojewski on 12/1/09.␊ |
6 | * Copyright 2009. All rights reserved.␊ |
7 | *␊ |
8 | * Slice 2010, based on Joblo works␊ |
9 | */␊ |
10 | //#ifndef __EDID_H__␊ |
11 | //#define __EDID_H__␊ |
12 | ␊ |
13 | ␊ |
14 | #include "libsaio.h"␊ |
15 | ␊ |
16 | #define EDID_BLOCK_SIZE␉128␊ |
17 | #define EDID_V1_BLOCKS_TO_GO_OFFSET 126␊ |
18 | //Slice - some more info about EDID␊ |
19 | #define EDID_LENGTH␉␉␉␉0x80␊ |
20 | #define EDID_HEADER␉␉␉␉0x00␊ |
21 | #define EDID_HEADER_END␉␉␉␉0x07␊ |
22 | ␊ |
23 | #define ID_MANUFACTURER_NAME␉␉␉0x08␊ |
24 | #define ID_MANUFACTURER_NAME_END␉␉0x09␊ |
25 | #define ID_MODEL␉␉␉␉0x0a␊ |
26 | ␊ |
27 | #define ID_SERIAL_NUMBER␉␉␉0x0c␊ |
28 | ␊ |
29 | #define MANUFACTURE_WEEK␉␉␉0x10␊ |
30 | #define MANUFACTURE_YEAR␉␉␉0x11␊ |
31 | ␊ |
32 | #define EDID_STRUCT_VERSION␉␉␉0x12␊ |
33 | #define EDID_STRUCT_REVISION␉␉␉0x13␊ |
34 | ␊ |
35 | #define EDID_STRUCT_DISPLAY 0x14␊ |
36 | ␊ |
37 | #define DPMS_FLAGS␉␉␉␉0x18␊ |
38 | #define ESTABLISHED_TIMING_1␉␉␉0x23␊ |
39 | #define ESTABLISHED_TIMING_2␉␉␉0x24␊ |
40 | #define MANUFACTURERS_TIMINGS␉␉␉0x25␊ |
41 | ␊ |
42 | /* standard timings supported */␊ |
43 | #define STD_TIMING 8␊ |
44 | #define STD_TIMING_DESCRIPTION_SIZE 2␊ |
45 | #define STD_TIMING_DESCRIPTIONS_START 0x26␊ |
46 | ␊ |
47 | #define DETAILED_TIMING_DESCRIPTIONS_START␉0x36␊ |
48 | #define DETAILED_TIMING_DESCRIPTION_SIZE␉18␊ |
49 | #define NO_DETAILED_TIMING_DESCRIPTIONS␉␉4␊ |
50 | ␊ |
51 | #define DETAILED_TIMING_DESCRIPTION_1␉␉0x36␊ |
52 | #define DETAILED_TIMING_DESCRIPTION_2␉␉0x48␊ |
53 | #define DETAILED_TIMING_DESCRIPTION_3␉␉0x5a␊ |
54 | #define DETAILED_TIMING_DESCRIPTION_4␉␉0x6c␊ |
55 | ␊ |
56 | #define DESCRIPTOR_DATA␉␉␉␉5␊ |
57 | ␊ |
58 | #define UPPER_NIBBLE( x ) \␊ |
59 | (((128|64|32|16) & (x)) >> 4)␊ |
60 | ␊ |
61 | #define LOWER_NIBBLE( x ) \␊ |
62 | ((1|2|4|8) & (x))␊ |
63 | ␊ |
64 | #define COMBINE_HI_8LO( hi, lo ) \␊ |
65 | ( (((unsigned)hi) << 8) | (unsigned)lo )␊ |
66 | ␊ |
67 | #define COMBINE_HI_4LO( hi, lo ) \␊ |
68 | ( (((unsigned)hi) << 4) | (unsigned)lo )␊ |
69 | ␊ |
70 | #define PIXEL_CLOCK_LO (unsigned)block[ 0 ]␊ |
71 | #define PIXEL_CLOCK_HI (unsigned)block[ 1 ]␊ |
72 | #define PIXEL_CLOCK␉ (COMBINE_HI_8LO( PIXEL_CLOCK_HI,PIXEL_CLOCK_LO )*10000)␊ |
73 | #define H_ACTIVE_LO (unsigned)block[ 2 ]␊ |
74 | #define H_BLANKING_LO (unsigned)block[ 3 ]␊ |
75 | #define H_ACTIVE_HI UPPER_NIBBLE( (unsigned)block[ 4 ] )␊ |
76 | #define H_ACTIVE COMBINE_HI_8LO( H_ACTIVE_HI, H_ACTIVE_LO )␊ |
77 | #define H_BLANKING_HI LOWER_NIBBLE( (unsigned)block[ 4 ] )␊ |
78 | #define H_BLANKING COMBINE_HI_8LO( H_BLANKING_HI, H_BLANKING_LO )␊ |
79 | ␊ |
80 | #define V_ACTIVE_LO (unsigned)block[ 5 ]␊ |
81 | #define V_BLANKING_LO (unsigned)block[ 6 ]␊ |
82 | #define V_ACTIVE_HI UPPER_NIBBLE( (unsigned)block[ 7 ] )␊ |
83 | #define V_ACTIVE COMBINE_HI_8LO( V_ACTIVE_HI, V_ACTIVE_LO )␊ |
84 | #define V_BLANKING_HI LOWER_NIBBLE( (unsigned)block[ 7 ] )␊ |
85 | #define V_BLANKING COMBINE_HI_8LO( V_BLANKING_HI, V_BLANKING_LO )␊ |
86 | ␊ |
87 | #define H_SYNC_OFFSET_LO (unsigned)block[ 8 ]␊ |
88 | #define H_SYNC_WIDTH_LO (unsigned)block[ 9 ]␊ |
89 | ␊ |
90 | #define V_SYNC_OFFSET_LO UPPER_NIBBLE( (unsigned)block[ 10 ] )␊ |
91 | #define V_SYNC_WIDTH_LO LOWER_NIBBLE( (unsigned)block[ 10 ] )␊ |
92 | ␊ |
93 | #define V_SYNC_WIDTH_HI ((unsigned)block[ 11 ] & (1|2))␊ |
94 | #define V_SYNC_OFFSET_HI (((unsigned)block[ 11 ] & (4|8)) >> 2)␊ |
95 | ␊ |
96 | #define H_SYNC_WIDTH_HI (((unsigned)block[ 11 ] & (16|32)) >> 4)␊ |
97 | #define H_SYNC_OFFSET_HI (((unsigned)block[ 11 ] & (64|128)) >> 6)␊ |
98 | ␊ |
99 | #define V_SYNC_WIDTH COMBINE_HI_4LO( V_SYNC_WIDTH_HI, V_SYNC_WIDTH_LO )␊ |
100 | #define V_SYNC_OFFSET COMBINE_HI_4LO( V_SYNC_OFFSET_HI, V_SYNC_OFFSET_LO )␊ |
101 | ␊ |
102 | #define H_SYNC_WIDTH COMBINE_HI_4LO( H_SYNC_WIDTH_HI, H_SYNC_WIDTH_LO )␊ |
103 | #define H_SYNC_OFFSET COMBINE_HI_4LO( H_SYNC_OFFSET_HI, H_SYNC_OFFSET_LO )␊ |
104 | ␊ |
105 | #define H_SIZE_LO (unsigned)block[ 12 ]␊ |
106 | #define V_SIZE_LO (unsigned)block[ 13 ]␊ |
107 | ␊ |
108 | #define H_SIZE_HI UPPER_NIBBLE( (unsigned)block[ 14 ] )␊ |
109 | #define V_SIZE_HI LOWER_NIBBLE( (unsigned)block[ 14 ] )␊ |
110 | ␊ |
111 | #define H_SIZE COMBINE_HI_8LO( H_SIZE_HI, H_SIZE_LO )␊ |
112 | #define V_SIZE COMBINE_HI_8LO( V_SIZE_HI, V_SIZE_LO )␊ |
113 | ␊ |
114 | #define H_BORDER (unsigned)block[ 15 ]␊ |
115 | #define V_BORDER (unsigned)block[ 16 ]␊ |
116 | ␊ |
117 | #define FLAGS (unsigned)block[ 17 ]␊ |
118 | ␊ |
119 | #define INTERLACED (FLAGS&128)␊ |
120 | #define SYNC_TYPE (FLAGS&3<<3)␉/* bits 4,3 */␊ |
121 | #define SYNC_SEPARATE (3<<3)␊ |
122 | #define HSYNC_POSITIVE (FLAGS & 4)␊ |
123 | #define VSYNC_POSITIVE (FLAGS & 2)␊ |
124 | ␊ |
125 | #define V_MIN_RATE block[ 5 ]␊ |
126 | #define V_MAX_RATE block[ 6 ]␊ |
127 | #define H_MIN_RATE block[ 7 ]␊ |
128 | #define H_MAX_RATE block[ 8 ]␊ |
129 | #define MAX_PIXEL_CLOCK (((int)block[ 9 ]) * 10)␊ |
130 | #define GTF_SUPPORT␉␉block[10]␊ |
131 | ␊ |
132 | #define DPMS_ACTIVE_OFF␉␉(1 << 5)␊ |
133 | #define DPMS_SUSPEND␉␉(1 << 6)␊ |
134 | #define DPMS_STANDBY␉␉(1 << 7)␊ |
135 | ␊ |
136 | struct EDID␊ |
137 | {␊ |
138 | UInt8␉header[8];␉␉␉//0␊ |
139 | UInt8␉vendorProduct[4];␉//8␊ |
140 | UInt8␉serialNumber[4];␉//12␊ |
141 | UInt8␉weekOfManufacture;␉//16␊ |
142 | UInt8␉yearOfManufacture;␉//17␊ |
143 | UInt8␉version;␉␉␉//18␊ |
144 | UInt8␉revision;␉␉␉//19␊ |
145 | UInt8␉displayParams[5];␉//20␊ |
146 | UInt8␉colorCharacteristics[10];␉//25␊ |
147 | UInt8␉establishedTimings[3];␉␉//35␊ |
148 | UInt16␉standardTimings[8];␉␉␉//38␊ |
149 | UInt8␉detailedTimings[72];␉␉//54␊ |
150 | UInt8␉extension;␉␉␉␉␉//126␊ |
151 | UInt8␉checksum;␉␉␉␉␉//127␊ |
152 | };␊ |
153 | ␊ |
154 | ␊ |
155 | typedef struct _edid_mode {␊ |
156 | ␉unsigned short pixel_clock;␊ |
157 | ␉unsigned short h_active;␊ |
158 | ␉unsigned short h_blanking;␊ |
159 | ␉unsigned short v_active;␊ |
160 | ␉unsigned short v_blanking;␊ |
161 | ␉unsigned short h_sync_offset;␊ |
162 | ␉unsigned short h_sync_width;␊ |
163 | ␉unsigned short v_sync_offset;␊ |
164 | ␉unsigned short v_sync_width;␊ |
165 | } edid_mode;␊ |
166 | ␊ |
167 | ␊ |
168 | char* readEDID();␊ |
169 | void getResolution(UInt32* x, UInt32* y, UInt32* bp);␊ |
170 | int fb_parse_edid(struct EDID *edid, edid_mode* var);␊ |
171 | int getEDID( void * edidBlock, UInt8 block);␊ |
172 | //#endif |