Root/
Source at commit 113 created 14 years 1 month ago. By diebuche, working on ati res. | |
---|---|
1 | /* Copied from 915 resolution created by steve tomljenovic␊ |
2 | * This source code is into the public domain.␊ |
3 | *␊ |
4 | * Included to Chameleon RC3 by meklort␊ |
5 | *␊ |
6 | * Included to RC4 and edited by deviato to match more intel chipsets␊ |
7 | *␊ |
8 | */␊ |
9 | ␊ |
10 | /* Copied from 915 resolution created by steve tomljenovic␊ |
11 | *␊ |
12 | * This code is based on the techniques used in :␊ |
13 | *␊ |
14 | * - 855patch. Many thanks to Christian Zietz (czietz gmx net)␊ |
15 | * for demonstrating how to shadow the VBIOS into system RAM␊ |
16 | * and then modify it.␊ |
17 | *␊ |
18 | * - 1280patch by Andrew Tipton (andrewtipton null li).␊ |
19 | *␊ |
20 | * - 855resolution by Alain Poirier␊ |
21 | *␊ |
22 | * This source code is into the public domain.␊ |
23 | */␊ |
24 | #ifndef __915_RESOLUTION_H␊ |
25 | #define __915_RESOLUTION_H␊ |
26 | ␊ |
27 | #define NEW(a) ((a *)(malloc(sizeof(a))))␊ |
28 | #define FREE(a) (free(a))␊ |
29 | ␊ |
30 | #define FALSE 0␊ |
31 | #define TRUE 1␊ |
32 | ␊ |
33 | #define VBIOS_START 0x0␊ |
34 | #define VBIOS_SIZE 0x10000␊ |
35 | ␊ |
36 | ␊ |
37 | //#define MODE_TABLE_OFFSET_845G 617␊ |
38 | ␊ |
39 | ␊ |
40 | #define ATI_SIGNATURE1 "ATI MOBILITY RADEON"␊ |
41 | #define ATI_SIGNATURE2 "ATI Technologies Inc"␊ |
42 | #define NVIDIA_SIGNATURE "NVIDIA Corp"␊ |
43 | #define INTEL_SIGNATURE "Intel Corp"␊ |
44 | ␊ |
45 | ␊ |
46 | ␊ |
47 | ␊ |
48 | typedef enum {␊ |
49 | ␉CT_UNKWN, CT_830, CT_845G, CT_855GM, CT_865G, CT_915G, CT_915GM, CT_945G, CT_945GM, CT_945GME,␊ |
50 | ␉CT_946GZ, CT_G965, CT_Q965, CT_965GM, CT_GM45, CT_G41, CT_G31, CT_G45, CT_500␊ |
51 | } chipset_type;␊ |
52 | ␊ |
53 | ␊ |
54 | typedef enum {␊ |
55 | ␉BT_UNKWN, BT_1, BT_2, BT_3␊ |
56 | } bios_type;␊ |
57 | ␊ |
58 | ␊ |
59 | typedef struct {␊ |
60 | ␉UInt8 mode;␊ |
61 | ␉UInt8 bits_per_pixel;␊ |
62 | ␉UInt16 resolution;␊ |
63 | ␉UInt8 unknown;␊ |
64 | } __attribute__((packed)) vbios_mode;␊ |
65 | ␊ |
66 | typedef struct {␊ |
67 | ␉UInt8 unknow1[2];␊ |
68 | ␉UInt8 x1;␊ |
69 | ␉UInt8 x_total;␊ |
70 | ␉UInt8 x2;␊ |
71 | ␉UInt8 y1;␊ |
72 | ␉UInt8 y_total;␊ |
73 | ␉UInt8 y2;␊ |
74 | } __attribute__((packed)) vbios_resolution_type1;␊ |
75 | ␊ |
76 | typedef struct {␊ |
77 | ␉unsigned long clock;␊ |
78 | ␉␊ |
79 | ␉UInt16 x1;␊ |
80 | ␉UInt16 htotal;␊ |
81 | ␉UInt16 x2;␊ |
82 | ␉UInt16 hblank;␊ |
83 | ␉UInt16 hsyncstart;␊ |
84 | ␉UInt16 hsyncend;␊ |
85 | ␉UInt16 y1;␊ |
86 | UInt16 vtotal;␊ |
87 | UInt16 y2;␊ |
88 | ␉UInt16 vblank;␊ |
89 | ␉UInt16 vsyncstart;␊ |
90 | ␉UInt16 vsyncend;␊ |
91 | } __attribute__((packed)) vbios_modeline_type2;␊ |
92 | ␊ |
93 | typedef struct {␊ |
94 | ␉UInt8 xchars;␊ |
95 | ␉UInt8 ychars;␊ |
96 | ␉UInt8 unknown[4];␊ |
97 | ␉␊ |
98 | ␉vbios_modeline_type2 modelines[];␊ |
99 | } __attribute__((packed)) vbios_resolution_type2;␊ |
100 | ␊ |
101 | typedef struct {␊ |
102 | ␉unsigned long clock;␊ |
103 | ␉␊ |
104 | ␉UInt16 x1;␊ |
105 | ␉UInt16 htotal;␊ |
106 | ␉UInt16 x2;␊ |
107 | ␉UInt16 hblank;␊ |
108 | ␉UInt16 hsyncstart;␊ |
109 | ␉UInt16 hsyncend;␊ |
110 | ␉␊ |
111 | ␉UInt16 y1;␊ |
112 | ␉UInt16 vtotal;␊ |
113 | ␉UInt16 y2;␊ |
114 | ␉UInt16 vblank;␊ |
115 | ␉UInt16 vsyncstart;␊ |
116 | ␉UInt16 vsyncend;␊ |
117 | ␉␊ |
118 | ␉UInt16 timing_h;␊ |
119 | ␉UInt16 timing_v;␊ |
120 | ␉␊ |
121 | ␉UInt8 unknown[6];␊ |
122 | } __attribute__((packed)) vbios_modeline_type3;␊ |
123 | ␊ |
124 | typedef struct {␊ |
125 | ␉unsigned char unknown[6];␊ |
126 | ␉␊ |
127 | vbios_modeline_type3 modelines[];␊ |
128 | } __attribute__((packed)) vbios_resolution_type3;␊ |
129 | ␊ |
130 | typedef struct {␊ |
131 | ␉UInt32 chipset_id;␊ |
132 | ␉chipset_type chipset;␊ |
133 | ␉bios_type bios;␊ |
134 | ␉␊ |
135 | ␉UInt32 bios_fd;␊ |
136 | ␉char* bios_ptr;␊ |
137 | ␉␊ |
138 | ␉vbios_mode * mode_table;␊ |
139 | ␉UInt32 mode_table_size;␊ |
140 | ␉UInt8 b1, b2;␊ |
141 | ␉␊ |
142 | ␉UInt8 unlocked;␊ |
143 | } vbios_map;␊ |
144 | ␊ |
145 | ␊ |
146 | ␊ |
147 | void display_map_info(vbios_map*);␊ |
148 | vbios_map * open_vbios(chipset_type);␊ |
149 | void close_vbios (vbios_map*);␊ |
150 | void unlock_vbios(vbios_map*);␊ |
151 | void relock_vbios(vbios_map*);␊ |
152 | void set_mode(vbios_map*, UInt32, UInt32, UInt32, UInt32, UInt32);␊ |
153 | void list_modes(vbios_map *map, UInt32 raw);␊ |
154 | ␊ |
155 | #endif␊ |
156 |