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

Archive Download this file

Revision: 2367