Chameleon

Chameleon Svn Source Tree

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

Archive Download this file

Revision: 2842