Chameleon

Chameleon Svn Source Tree

Root/branches/valv/i386/libsaio/915resolution.h

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

Archive Download this file

Revision: 164