Chameleon

Chameleon Svn Source Tree

Root/branches/Chimera/i386/libsaio/ati.h

1//
2// ati.h
3// Chameleon
4//
5// Created by Chris Morton on 1/30/13.
6//
7//
8
9#ifndef Chameleon_ati_h
10#define Chameleon_ati_h
11
12#include "boot.h"
13#include "bootstruct.h"
14#include "pci.h"
15#include "platform.h"
16#include "device_inject.h"
17#include "ati_reg.h"
18
19
20
21/* DEFINES */
22#define OFFSET_TO_GET_ATOMBIOS_STRINGS_START 0x6e
23
24#define Reg32(reg)(*(volatile uint32_t *)(card->mmio + reg))
25#define RegRead32(reg)(Reg32(reg))
26#define RegWrite32(reg, value)(Reg32(reg) = value)
27
28/* Flags */
29#define MKFLAG(n)(1 << n)
30#define FLAGTRUEMKFLAG(0)
31#define EVERGREENMKFLAG(1)
32
33#define DATVAL(x){kPtr, sizeof(x), (uint8_t *)x}
34#define STRVAL(x){kStr, sizeof(x), (uint8_t *)x}
35#define BYTVAL(x){kCst, 1, (uint8_t *)x}
36#define WRDVAL(x){kCst, 2, (uint8_t *)x}
37#define DWRVAL(x){kCst, 4, (uint8_t *)x}
38#define QWRVAL(x){kCst, 8, (uint8_t *)x}
39#define NULVAL{kNul, 0, (uint8_t *)NULL}
40
41
42/*Typedefs ENUMS*/
43typedef enum {
44kNul,
45kStr,
46kPtr,
47kCst
48} type_t;
49
50typedef enum {
51CHIP_FAMILY_UNKNOW,
52/* Old */
53CHIP_FAMILY_R420,
54CHIP_FAMILY_RV410,
55CHIP_FAMILY_RV515,
56CHIP_FAMILY_R520,
57CHIP_FAMILY_RV530,
58CHIP_FAMILY_RV560,
59CHIP_FAMILY_RV570,
60CHIP_FAMILY_R580,
61/* IGP */
62CHIP_FAMILY_RS600,
63CHIP_FAMILY_RS690,
64CHIP_FAMILY_RS740,
65CHIP_FAMILY_RS780,
66CHIP_FAMILY_RS880,
67/* R600 */
68CHIP_FAMILY_R600,
69CHIP_FAMILY_RV610,
70CHIP_FAMILY_RV620,
71CHIP_FAMILY_RV630,
72CHIP_FAMILY_RV635,
73CHIP_FAMILY_RV670,
74/* R700 */
75CHIP_FAMILY_RV710,
76CHIP_FAMILY_RV730,
77CHIP_FAMILY_RV740,
78CHIP_FAMILY_RV770,
79CHIP_FAMILY_RV772,
80CHIP_FAMILY_RV790,
81/* Evergreen */
82CHIP_FAMILY_CEDAR,
83CHIP_FAMILY_CYPRESS,
84CHIP_FAMILY_HEMLOCK,
85CHIP_FAMILY_JUNIPER,
86CHIP_FAMILY_REDWOOD,
87CHIP_FAMILY_BROADWAY,
88 //CHIP_FAMILY_MADISON,
89 //CHIP_FAMILY_PARK,
90/* Northern Islands */
91 //CHIP_FAMILY_ANTILLES,
92CHIP_FAMILY_BARTS,
93CHIP_FAMILY_CAICOS,
94CHIP_FAMILY_CAYMAN,
95CHIP_FAMILY_TURKS,
96/* Southern Islands */
97CHIP_FAMILY_TAHITI,
98CHIP_FAMILY_PITCAIRN,
99 CHIP_FAMILY_VERDE,
100 CHIP_FAMILY_THAMES,
101 CHIP_FAMILY_LOMBOK,
102 //CHIP_FAMILY_NEWZEALAND,
103CHIP_FAMILY_LAST
104} ati_chip_family_t;
105
106typedef enum {
107kNull,
108/* OLDController */
109kWormy,
110kAlopias,
111kCaretta,
112kKakapo,
113kKipunji,
114kPeregrine,
115kRaven,
116kSphyrna,
117/* AMD2400Controller */
118kIago,
119/* AMD2600Controller */
120kHypoprion,
121kLamna,
122/* AMD3800Controller */
123kMegalodon,
124kTriakis,
125/* AMD4600Controller */
126kFlicker,
127kGliff,
128kShrike,
129/* AMD4800Controller */
130kCardinal,
131kMotmot,
132kQuail,
133/* AMD5000Controller */
134kDouc,
135kLangur,
136kUakari,
137kZonalis,
138kAlouatta,
139kHoolock,
140kVervet,
141kBaboon,
142kEulemur,
143kGalago,
144kColobus,
145kMangabey,
146kNomascus,
147kOrangutan,
148/* AMD6000Controller */
149kPithecia,
150kBulrushes,
151kCattail,
152kHydrilla,
153kDuckweed,
154kFanwort,
155kElodea,
156kKudzu,
157kGibba,
158kLotus,
159kIpomoea,
160kMuskgrass,
161kJuncus,
162kOsmunda,
163kPondweed,
164kSpikerush,
165kTypha,
166/* AMD7000Controller */
167kAji, // TESTING
168kBuri, // TESTING
169kChutoro, // TESTING
170kDashimaki, // TESTING
171kEbi, // TESTING
172kGari, // TESTING
173kFutomaki, // TESTING
174kHamachi, // TESTING
175kOPM, // TESTING
176kIkura, // TESTING
177kIkuraS, // TESTING
178kCfgEnd
179} ati_config_name_t;
180
181/* Typedefs STRUCTS */
182typedef struct {
183type_ttype;
184uint32_tsize;
185uint8_t*data;
186} value_t;
187
188//card to #ports
189typedef struct {
190const char*name;
191uint8_tports;
192} card_config_t;
193
194//radeon card (includes teh AtiConfig)
195typedef struct {
196uint16_tdevice_id;
197uint32_tsubsys_id;
198ati_chip_family_tchip_family;
199const char*model_name;
200ati_config_name_tcfg_name;
201} radeon_card_info_t;
202
203// dev_tree representation
204typedef struct {
205uint32_tflags;
206boolall_ports;
207char*name;
208bool(*get_value)(value_t *val);
209value_tdefault_val;
210} dev_prop_t;
211
212typedef struct {
213struct DevPropDevice*device;
214radeon_card_info_t*info;
215pci_dt_t*pci_dev;
216uint8_t*fb;
217uint8_t*mmio;
218uint8_t*io;
219uint8_t*rom;
220uint64_trom_size;
221uint64_tvram_size;
222const char*cfg_name;
223uint8_tports;
224uint32_tflags;
225boolposted;
226} card_t;
227
228
229
230/* functions */
231bool get_bootdisplay_val(value_t *val);
232bool get_vrammemory_val(value_t *val);
233bool get_name_val(value_t *val);
234bool get_nameparent_val(value_t *val);
235bool get_model_val(value_t *val);
236bool get_conntype_val(value_t *val);
237bool get_vrammemsize_val(value_t *val);
238bool get_binimage_val(value_t *val);
239bool get_romrevision_val(value_t *val);
240bool get_deviceid_val(value_t *val);
241bool get_mclk_val(value_t *val);
242bool get_sclk_val(value_t *val);
243bool get_refclk_val(value_t *val);
244bool get_platforminfo_val(value_t *val);
245bool get_vramtotalsize_val(value_t *val);
246bool get_hdmiaudio(value_t * val);
247
248/* vals */
249static value_t aty_name;
250static value_t aty_nameparent;
251card_t *card;
252
253#endif
254

Archive Download this file

Revision: 2249