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