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 mode;␊ |
21 | ␉UInt8 bits_per_pixel;␊ |
22 | ␉UInt16 resolution;␊ |
23 | ␉UInt8 unknown;␊ |
24 | } __attribute__((packed)) vbios_mode;␊ |
25 | ␊ |
26 | typedef struct {␊ |
27 | ␉UInt8 unknow1[2];␊ |
28 | ␉UInt8 x1;␊ |
29 | ␉UInt8 x_total;␊ |
30 | ␉UInt8 x2;␊ |
31 | ␉UInt8 y1;␊ |
32 | ␉UInt8 y_total;␊ |
33 | ␉UInt8 y2;␊ |
34 | } __attribute__((packed)) vbios_resolution_type1;␊ |
35 | ␊ |
36 | typedef struct {␊ |
37 | ␉unsigned long clock;␊ |
38 | ␉␊ |
39 | ␉UInt16 x1;␊ |
40 | ␉UInt16 htotal;␊ |
41 | ␉UInt16 x2;␊ |
42 | ␉UInt16 hblank;␊ |
43 | ␉UInt16 hsyncstart;␊ |
44 | ␉UInt16 hsyncend;␊ |
45 | ␉UInt16 y1;␊ |
46 | UInt16 vtotal;␊ |
47 | UInt16 y2;␊ |
48 | ␉UInt16 vblank;␊ |
49 | ␉UInt16 vsyncstart;␊ |
50 | ␉UInt16 vsyncend;␊ |
51 | } __attribute__((packed)) vbios_modeline_type2;␊ |
52 | ␊ |
53 | typedef struct {␊ |
54 | ␉UInt8 xchars;␊ |
55 | ␉UInt8 ychars;␊ |
56 | ␉UInt8 unknown[4];␊ |
57 | ␉␊ |
58 | ␉vbios_modeline_type2 modelines[];␊ |
59 | } __attribute__((packed)) vbios_resolution_type2;␊ |
60 | ␊ |
61 | typedef struct {␊ |
62 | ␉unsigned long clock;␊ |
63 | ␉␊ |
64 | ␉UInt16 x1;␊ |
65 | ␉UInt16 htotal;␊ |
66 | ␉UInt16 x2;␊ |
67 | ␉UInt16 hblank;␊ |
68 | ␉UInt16 hsyncstart;␊ |
69 | ␉UInt16 hsyncend;␊ |
70 | ␉␊ |
71 | ␉UInt16 y1;␊ |
72 | ␉UInt16 vtotal;␊ |
73 | ␉UInt16 y2;␊ |
74 | ␉UInt16 vblank;␊ |
75 | ␉UInt16 vsyncstart;␊ |
76 | ␉UInt16 vsyncend;␊ |
77 | ␉␊ |
78 | ␉UInt16 timing_h;␊ |
79 | ␉UInt16 timing_v;␊ |
80 | ␉␊ |
81 | ␉UInt8 unknown[6];␊ |
82 | } __attribute__((packed)) vbios_modeline_type3;␊ |
83 | ␊ |
84 | typedef struct {␊ |
85 | ␉unsigned char unknown[6];␊ |
86 | ␉␊ |
87 | vbios_modeline_type3 modelines[];␊ |
88 | } __attribute__((packed)) vbios_resolution_type3;␊ |
89 | ␊ |
90 | ␊ |
91 | vbios_resolution_type1 * map_type1_resolution(vbios_map * map, UInt16 res);␊ |
92 | vbios_resolution_type2 * map_type2_resolution(vbios_map * map, UInt16 res);␊ |
93 | vbios_resolution_type3 * map_type3_resolution(vbios_map * map, UInt16 res);␊ |
94 | ␊ |
95 | char detect_bios_type(vbios_map * map, char modeline, int entry_size);␊ |
96 | ␊ |
97 | vbios_map * open_intel_vbios(vbios_map *);␊ |
98 | ␊ |
99 | bool intel_set_mode_1(vbios_map* map, UInt8 idx, UInt32* x, UInt32* y);␊ |
100 | bool intel_set_mode_2(vbios_map* map, UInt8 idx, UInt32* x, UInt32* y);␊ |
101 | bool intel_set_mode_3(vbios_map* map, UInt8 idx, UInt32* x, UInt32* y);␊ |
102 | ␊ |
103 | #endif |