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

Archive Download this file

Revision: 2885