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

Archive Download this file

Revision: 2658