1 | /*␊ |
2 | * gma_resolution.h␊ |
3 | * ␊ |
4 | *␊ |
5 | * Created by Le Bidou on 19/03/10.␊ |
6 | * Copyright 2010 ---. All rights reserved.␊ |
7 | *␊ |
8 | */␊ |
9 | ␊ |
10 | #ifndef _GMA_RESOLUTION_H_␊ |
11 | #define _GMA_RESOLTUION_H_␊ |
12 | ␊ |
13 | #include "libsaio.h"␊ |
14 | #include "autoresolution.h"␊ |
15 | ␊ |
16 | #define MODE_TABLE_OFFSET_845G 617␊ |
17 | #define INTEL_SIGNATURE "Intel Corp"␊ |
18 | ␊ |
19 | typedef struct {␊ |
20 | ␉uint8_t mode;␊ |
21 | ␉uint8_t bitsPerPixel;␊ |
22 | ␉uint16_t resolution;␊ |
23 | ␉uint8_t unknown;␊ |
24 | } __packed vbiosMode;␊ |
25 | ␊ |
26 | typedef struct {␊ |
27 | ␉uint8_t unknow1[2];␊ |
28 | ␉uint8_t hActive1;␊ |
29 | ␉uint8_t xTotal;␊ |
30 | ␉uint8_t hActive2;␊ |
31 | ␉uint8_t vActive1;␊ |
32 | ␉uint8_t yTotal;␊ |
33 | ␉uint8_t vActive2;␊ |
34 | } __packed vbiosResolutionType1;␊ |
35 | ␊ |
36 | typedef struct {␊ |
37 | ␉uint32_t clock;␊ |
38 | ␉␊ |
39 | ␉uint16_t hActive1;␊ |
40 | ␉uint16_t hTotal;␊ |
41 | ␉uint16_t hActive2;␊ |
42 | ␉uint16_t hBlank;␊ |
43 | ␉uint16_t hSyncStart;␊ |
44 | ␉uint16_t hSyncEnd;␊ |
45 | ␉uint16_t vActive1;␊ |
46 | uint16_t vTotal;␊ |
47 | uint16_t vActive2;␊ |
48 | ␉uint16_t vBlank;␊ |
49 | ␉uint16_t vSyncStart;␊ |
50 | ␉uint16_t vSyncEnd;␊ |
51 | } __packed vbiosModelineType2;␊ |
52 | ␊ |
53 | typedef struct {␊ |
54 | ␉uint8_t xChars;␊ |
55 | ␉uint8_t yChars;␊ |
56 | ␉uint8_t unknown[4];␊ |
57 | ␉␊ |
58 | ␉vbiosModelineType2 modelines[];␊ |
59 | } __packed vbiosResolutionType2;␊ |
60 | ␊ |
61 | typedef struct {␊ |
62 | ␉uint32_t clock;␊ |
63 | ␉␊ |
64 | ␉uint16_t hActive1;␊ |
65 | ␉uint16_t hTotal;␊ |
66 | ␉uint16_t hActive2;␊ |
67 | ␉uint16_t hBlank;␊ |
68 | ␉uint16_t hSyncStart;␊ |
69 | ␉uint16_t hSyncEnd;␊ |
70 | ␉␊ |
71 | ␉uint16_t vActive1;␊ |
72 | ␉uint16_t vTotal;␊ |
73 | ␉uint16_t vActive2;␊ |
74 | ␉uint16_t vBlank;␊ |
75 | ␉uint16_t vSyncStart;␊ |
76 | ␉uint16_t vSyncEnd;␊ |
77 | ␉␊ |
78 | ␉uint16_t timingH;␊ |
79 | ␉uint16_t timingV;␊ |
80 | ␉␊ |
81 | ␉uint8_t unknown[6];␊ |
82 | } __packed vbiosModelineType3;␊ |
83 | ␊ |
84 | typedef struct {␊ |
85 | ␉unsigned char unknown[6];␊ |
86 | ␉␊ |
87 | vbiosModelineType3 modelines[];␊ |
88 | } __packed vbiosResolutionType3;␊ |
89 | ␊ |
90 | ␊ |
91 | vbiosResolutionType1 * mapType1Resolution(vBiosMap * map, uint16_t res);␊ |
92 | vbiosResolutionType2 * mapType2Resolution(vBiosMap * map, uint16_t res);␊ |
93 | vbiosResolutionType3 * mapType3Resolution(vBiosMap * map, uint16_t res);␊ |
94 | ␊ |
95 | char detectBiosType(vBiosMap * map, char modeline, int entrySize);␊ |
96 | ␊ |
97 | vBiosMap * openIntelVbios(vBiosMap *);␊ |
98 | ␊ |
99 | bool intelSetMode_1(sModeTable* table, uint8_t idx, uint32_t* x, uint32_t* y);␊ |
100 | bool intelSetMode_2(sModeTable* table, uint8_t idx, uint32_t* x, uint32_t* y);␊ |
101 | bool intelSetMode_3(sModeTable* table, uint8_t idx, uint32_t* x, uint32_t* y);␊ |
102 | ␊ |
103 | #endif |