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