Chameleon

Chameleon Svn Source Tree

Root/branches/ErmaC/Enoch/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)-1, (uint8_t *)x}
28#define BYTVAL(x){kCst, 1, (uint8_t *)(unsigned)x}
29#define WRDVAL(x){kCst, 2, (uint8_t *)(unsigned)x}
30#define DWRVAL(x){kCst, 4, (uint8_t *)(unsigned)x}
31//#define QWRVAL(x){kCst, 8, (uint8_t *)(unsigned)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_GREENLAND, /* Polaris 12 */
111CHIP_FAMILY_LAST
112} ati_chip_family_t;
113
114//card to #ports
115typedef struct {
116const char*name;
117uint8_tports;
118} card_config_t;
119
120typedef enum {
121kNull,
122/* OLDController */
123kWormy,
124kAlopias,
125kCaretta,
126kKakapo,
127kKipunji,
128kPeregrine,
129kRaven,
130kSphyrna,
131/* AMD2400Controller */
132kIago,
133/* AMD2600Controller */
134kHypoprion,
135kLamna,
136/* AMD3800Controller */
137kMegalodon,
138kTriakis,
139/* AMD4600Controller */
140kFlicker,
141kGliff,
142kShrike,
143/* AMD4800Controller */
144kCardinal,
145kMotmot,
146kQuail,
147/* AMD5000Controller */
148kDouc,
149kLangur,
150kUakari,
151kZonalis,
152kAlouatta,
153kHoolock,
154kVervet,
155kBaboon,
156kEulemur,
157kGalago,
158kColobus,
159kMangabey,
160kNomascus,
161kOrangutan,
162/* AMD6000Controller */
163kPithecia,
164kBulrushes,
165kCattail,
166kHydrilla,
167kDuckweed,
168kFanwort,
169kElodea,
170kKudzu,
171kGibba,
172kLotus,
173kIpomoea,
174kMuskgrass,
175kJuncus,
176kOsmunda,
177kPondweed,
178kSpikerush,
179kTypha,
180/* AMD7000Controller */
181kRamen,
182kTako,
183kNamako,
184kAji,
185kBuri,
186kChutoro,
187kDashimaki,
188kEbi,
189kGari,
190kFutomaki,
191kHamachi,
192kOPM,
193kIkura,
194kIkuraS,
195kJunsai,
196kKani,
197kKaniS,
198kDashimakiS,
199kMaguro,
200kMaguroS,
201/* AMD8000Controller */
202kBaladi,
203/* AMD9000Controller */
204kExmoor,
205kMalteseS,
206kLagotto,
207kGreyhoundS,
208kMaltese,
209kBasset,
210kGreyhound,
211kLabrador,
212/* AMD9500Controller */
213kElqui,
214kAcre,
215kBerbice,
216kCaroni,
217kFlorin,
218kDayman,
219kGuariba,
220kCfgEnd
221} config_name_t;
222
223//radeon card (includes the AtiConfig)
224typedef struct {
225uint16_tdevice_id;
226uint32_tsubsys_id;
227ati_chip_family_tchip_family;
228const char*model_name;
229config_name_tcfg_name;
230} radeon_card_info_t;
231
232typedef struct {
233struct DevPropDevice*device;
234radeon_card_info_t*info;
235pci_dt_t*pci_dev;
236uint8_t*fb;
237uint8_t*mmio;
238uint8_t*io;
239uint8_t*rom;
240uint64_trom_size;
241uint64_tvram_size;
242const char*cfg_name;
243uint8_tports;
244uint32_tflags;
245boolposted;
246} card_t;
247card_t *card;
248
249
250// Chip flags
251/* enum radeon_chip_flags {
252RADEON_FAMILY_MASK = 0x0000ffffUL,
253RADEON_FLAGS_MASK = 0xffff0000UL,
254RADEON_IS_MOBILITY = 0x00010000UL,
255RADEON_IS_IGP = 0x00020000UL,
256RADEON_SINGLE_CRTC = 0x00040000UL,
257RADEON_IS_AGP = 0x00080000UL,
258RADEON_HAS_HIERZ = 0x00100000UL,
259RADEON_IS_PCIE = 0x00200000UL,
260RADEON_NEW_MEMMAP = 0x00400000UL,
261RADEON_IS_PCI = 0x00800000UL,
262RADEON_IS_IGPGART = 0x01000000UL,
263};*/
264
265#define MKFLAG(n)(1 << n)
266#define FLAGTRUEMKFLAG(0)
267#define EVERGREENMKFLAG(1)
268#define FLAGMOBILEMKFLAG(2)
269#define FLAGOLDMKFLAG(3)
270#define FLAGNOTFAKEMKFLAG(4)
271
272/* Typedefs STRUCTS */
273typedef struct {
274type_ttype;
275uint32_tsize;
276uint8_t*data;
277} value_t;
278
279// dev_tree representation
280typedef struct {
281uint32_tflags;
282boolall_ports;
283char*name;
284bool(*get_value)(value_t *val);
285value_tdefault_val;
286} AtiDevProp;
287
288/* functions */
289bool get_bootdisplay_val(value_t *val);
290bool get_vrammemory_val(value_t *val);
291bool get_name_val(value_t *val);
292bool get_nameparent_val(value_t *val);
293bool get_model_val(value_t *val);
294bool get_conntype_val(value_t *val);
295bool get_vrammemsize_val(value_t *val);
296bool get_binimage_val(value_t *val);
297bool get_romrevision_val(value_t *val);
298bool get_deviceid_val(value_t *val);
299bool get_mclk_val(value_t *val);
300bool get_sclk_val(value_t *val);
301bool get_refclk_val(value_t *val);
302bool get_platforminfo_val(value_t *val);
303bool get_vramtotalsize_val(value_t *val);
304bool get_dual_link_val(value_t *val);
305bool get_hdmiaudio(value_t * val);
306
307#endif
308

Archive Download this file

Revision: 2871