1 | /*␊ |
2 | * ATI Graphics Card Enabler, part of the Chameleon Boot Loader Project␊ |
3 | *␊ |
4 | * Copyright 2010 by Islam M. Ahmed Zaid. All rights reserved.␊ |
5 | *␊ |
6 | */␊ |
7 | ␊ |
8 | #include "boot.h"␊ |
9 | #include "bootstruct.h"␊ |
10 | #include "pci.h"␊ |
11 | #include "platform.h"␊ |
12 | #include "device_inject.h"␊ |
13 | #include "ati_reg.h"␊ |
14 | ␊ |
15 | #define OFFSET_TO_GET_ATOMBIOS_STRINGS_START 0x6e␊ |
16 | ␊ |
17 | #define Reg32(reg)␉␉␉␉(*(volatile uint32_t *)(card->mmio + reg))␊ |
18 | #define RegRead32(reg)␉␉␉(Reg32(reg))␊ |
19 | #define RegWrite32(reg, value)␉(Reg32(reg) = value)␊ |
20 | ␊ |
21 | typedef enum {␊ |
22 | ␉kNul,␊ |
23 | ␉kStr,␊ |
24 | ␉kPtr,␊ |
25 | ␉kCst␊ |
26 | } type_t;␊ |
27 | ␊ |
28 | typedef enum {␊ |
29 | ␉CHIP_FAMILY_UNKNOW,␊ |
30 | ␉/* Old */␊ |
31 | ␉CHIP_FAMILY_R420,␊ |
32 | ␉CHIP_FAMILY_RV410,␊ |
33 | ␉CHIP_FAMILY_RV515,␊ |
34 | ␉CHIP_FAMILY_R520,␊ |
35 | ␉CHIP_FAMILY_RV530,␊ |
36 | ␉CHIP_FAMILY_RV560,␊ |
37 | ␉CHIP_FAMILY_RV570,␊ |
38 | ␉CHIP_FAMILY_R580,␊ |
39 | ␉/* IGP */␊ |
40 | ␉CHIP_FAMILY_RS600,␊ |
41 | ␉CHIP_FAMILY_RS690,␊ |
42 | ␉CHIP_FAMILY_RS740,␊ |
43 | ␉CHIP_FAMILY_RS780,␊ |
44 | ␉CHIP_FAMILY_RS880,␊ |
45 | ␉/* R600 */␊ |
46 | ␉CHIP_FAMILY_R600,␊ |
47 | ␉CHIP_FAMILY_RV610,␊ |
48 | ␉CHIP_FAMILY_RV620,␊ |
49 | ␉CHIP_FAMILY_RV630,␊ |
50 | ␉CHIP_FAMILY_RV635,␊ |
51 | ␉CHIP_FAMILY_RV670,␊ |
52 | ␉/* R700 */␊ |
53 | ␉CHIP_FAMILY_RV710,␊ |
54 | ␉CHIP_FAMILY_RV730,␊ |
55 | ␉CHIP_FAMILY_RV740,␊ |
56 | ␉CHIP_FAMILY_RV770,␊ |
57 | ␉CHIP_FAMILY_RV772,␊ |
58 | ␉CHIP_FAMILY_RV790,␊ |
59 | ␉/* Evergreen */␊ |
60 | ␉CHIP_FAMILY_CEDAR,␊ |
61 | ␉CHIP_FAMILY_CYPRESS,␊ |
62 | ␉CHIP_FAMILY_HEMLOCK,␊ |
63 | ␉CHIP_FAMILY_JUNIPER,␊ |
64 | ␉CHIP_FAMILY_REDWOOD,␊ |
65 | ␉CHIP_FAMILY_BROADWAY,␊ |
66 | //␉CHIP_FAMILY_MADISON,␊ |
67 | //␉CHIP_FAMILY_PARK,␊ |
68 | ␉/* Northern Islands */␊ |
69 | //␉CHIP_FAMILY_ANTILLES,␊ |
70 | ␉CHIP_FAMILY_BARTS,␊ |
71 | ␉CHIP_FAMILY_CAICOS,␊ |
72 | ␉CHIP_FAMILY_CAYMAN,␊ |
73 | ␉CHIP_FAMILY_TURKS,␊ |
74 | ␉/* Southern Islands */␊ |
75 | ␉CHIP_FAMILY_TAHITI,␊ |
76 | ␉CHIP_FAMILY_PITCAIRN,␊ |
77 | //␉CHIP_FAMILY_VERDE,␊ |
78 | //␉CHIP_FAMILY_THAMES,␊ |
79 | //␉CHIP_FAMILY_LOMBOK,␊ |
80 | //␉CHIP_FAMILY_NEWZEALAND,␊ |
81 | ␉CHIP_FAMILY_LAST␊ |
82 | } chip_family_t;␊ |
83 | ␊ |
84 | static const char *chip_family_name[] = {␊ |
85 | ␉"UNKNOW",␊ |
86 | ␉"R420",␊ |
87 | ␉"RV410",␊ |
88 | ␉"RV515",␊ |
89 | ␉"R520",␊ |
90 | ␉"RV530",␊ |
91 | ␉"RV560",␊ |
92 | ␉"RV570",␊ |
93 | ␉"R580",␊ |
94 | ␉/* IGP */␊ |
95 | ␉"RS600",␊ |
96 | ␉"RS690",␊ |
97 | ␉"RS740",␊ |
98 | ␉"RS780",␊ |
99 | ␉"RS880",␊ |
100 | ␉/* R600 */␊ |
101 | ␉"R600",␊ |
102 | ␉"RV610",␊ |
103 | ␉"RV620",␊ |
104 | ␉"RV630",␊ |
105 | ␉"RV635",␊ |
106 | ␉"RV670",␊ |
107 | ␉/* R700 */␊ |
108 | ␉"RV710",␊ |
109 | ␉"RV730",␊ |
110 | ␉"RV740",␊ |
111 | ␉"RV772",␊ |
112 | ␉"RV770",␊ |
113 | ␉"RV790",␊ |
114 | ␉/* Evergreen */␊ |
115 | ␉"Cedar",␊ |
116 | ␉"Cypress",␊ |
117 | ␉"Hemlock",␊ |
118 | ␉"Juniper",␊ |
119 | ␉"Redwood",␊ |
120 | ␉"Broadway",␊ |
121 | //␉"Madison",␊ |
122 | //␉"Park",␊ |
123 | ␉/* Northern Islands */␊ |
124 | //␉"Antilles",␊ |
125 | ␉"Barts",␊ |
126 | ␉"Caicos",␊ |
127 | ␉"Cayman",␊ |
128 | ␉"Turks",␊ |
129 | ␉/* Southern Islands */␊ |
130 | ␉"Tahiti",␊ |
131 | ␉"Pitcairn",␊ |
132 | //␉"CapeVerde",␊ |
133 | //␉"Thames",␊ |
134 | //␉"Lombok",␊ |
135 | //␉"NewZealand",␊ |
136 | ␉""␊ |
137 | };␊ |
138 | ␊ |
139 | typedef struct {␊ |
140 | ␉const char␉␉*name;␊ |
141 | ␉uint8_t␉␉␉ports;␊ |
142 | } card_config_t;␊ |
143 | ␊ |
144 | static card_config_t card_configs[] = {␊ |
145 | ␉{NULL,␉␉␉0},␊ |
146 | ␉{"Wormy",␉␉2},␊ |
147 | ␉{"Alopias",␉␉2},␊ |
148 | ␉{"Alouatta",␉␉4},␊ |
149 | ␉{"Baboon",␉␉3},␊ |
150 | ␉{"Cardinal",␉␉2},␊ |
151 | ␉{"Caretta",␉␉1},␊ |
152 | ␉{"Colobus",␉␉2},␊ |
153 | ␉{"Douc",␉␉2},␊ |
154 | ␉{"Eulemur",␉␉3},␊ |
155 | ␉{"Flicker",␉␉3},␊ |
156 | ␉{"Galago",␉␉2},␊ |
157 | ␉{"Gliff",␉␉3},␊ |
158 | ␉{"Hoolock",␉␉3},␊ |
159 | ␉{"Hypoprion",␉␉2},␊ |
160 | ␉{"Iago",␉␉2},␊ |
161 | ␉{"Kakapo",␉␉3},␊ |
162 | ␉{"Kipunji",␉␉4},␊ |
163 | ␉{"Lamna",␉␉2},␊ |
164 | ␉{"Langur",␉␉3},␊ |
165 | ␉{"Megalodon",␉␉3},␊ |
166 | ␉{"Motmot",␉␉2},␊ |
167 | ␉{"Nomascus",␉␉5},␊ |
168 | ␉{"Orangutan",␉␉2},␊ |
169 | ␉{"Peregrine",␉␉2},␊ |
170 | ␉{"Quail",␉␉3},␊ |
171 | ␉{"Raven",␉␉3},␊ |
172 | ␉{"Shrike",␉␉3},␊ |
173 | ␉{"Sphyrna",␉␉1},␊ |
174 | ␉{"Triakis",␉␉2},␊ |
175 | ␉{"Uakari",␉␉4},␊ |
176 | ␉{"Vervet",␉␉4},␊ |
177 | ␉{"Zonalis",␉␉6},␊ |
178 | ␉{"Pithecia",␉␉3},␊ |
179 | ␉{"Bulrushes",␉␉6},␊ |
180 | ␉{"Cattail",␉␉4},␊ |
181 | ␉{"Hydrilla",␉␉5},␊ |
182 | ␉{"Duckweed",␉␉4},␊ |
183 | ␉{"Fanwort",␉␉4},␊ |
184 | ␉{"Elodea",␉␉5},␊ |
185 | ␉{"Kudzu",␉␉2},␊ |
186 | ␉{"Gibba",␉␉5},␊ |
187 | ␉{"Lotus",␉␉3},␊ |
188 | ␉{"Ipomoea",␉␉3},␊ |
189 | ␉{"Mangabey",␉␉2},␊ |
190 | ␉{"Muskgrass",␉␉4},␊ |
191 | ␉{"Juncus",␉␉4}␊ |
192 | };␊ |
193 | ␊ |
194 | typedef enum {␊ |
195 | ␉kNull,␊ |
196 | ␉kWormy,␊ |
197 | ␉kAlopias,␊ |
198 | ␉kAlouatta,␊ |
199 | ␉kBaboon,␊ |
200 | ␉kCardinal,␊ |
201 | ␉kCaretta,␊ |
202 | ␉kColobus,␊ |
203 | ␉kDouc,␊ |
204 | ␉kEulemur,␊ |
205 | ␉kFlicker,␊ |
206 | ␉kGalago,␊ |
207 | ␉kGliff,␊ |
208 | ␉kHoolock,␊ |
209 | ␉kHypoprion,␊ |
210 | ␉kIago,␊ |
211 | ␉kKakapo,␊ |
212 | ␉kKipunji,␊ |
213 | ␉kLamna,␊ |
214 | ␉kLangur,␊ |
215 | ␉kMegalodon,␊ |
216 | ␉kMotmot,␊ |
217 | ␉kNomascus,␊ |
218 | ␉kOrangutan,␊ |
219 | ␉kPeregrine,␊ |
220 | ␉kQuail,␊ |
221 | ␉kRaven,␊ |
222 | ␉kShrike,␊ |
223 | ␉kSphyrna,␊ |
224 | ␉kTriakis,␊ |
225 | ␉kUakari,␊ |
226 | ␉kVervet,␊ |
227 | ␉kZonalis,␊ |
228 | ␉kPithecia,␊ |
229 | ␉kBulrushes,␊ |
230 | ␉kCattail,␊ |
231 | ␉kHydrilla,␊ |
232 | ␉kDuckweed,␊ |
233 | ␉kFanwort,␊ |
234 | ␉kElodea,␊ |
235 | ␉kKudzu,␊ |
236 | ␉kGibba,␊ |
237 | ␉kLotus,␊ |
238 | ␉kIpomoea,␊ |
239 | ␉kMangabey,␊ |
240 | ␉kMuskgrass,␊ |
241 | ␉kJuncus,␊ |
242 | //␉kOsmunda,␊ |
243 | ␉kCfgEnd␊ |
244 | } config_name_t;␊ |
245 | ␊ |
246 | typedef struct {␊ |
247 | ␉uint16_t␉␉␉␉device_id;␊ |
248 | ␉uint32_t␉␉␉␉subsys_id;␊ |
249 | ␉chip_family_t␉␉␉chip_family;␊ |
250 | ␉const char␉␉␉␉*model_name;␊ |
251 | ␉config_name_t␉␉␉cfg_name;␊ |
252 | } radeon_card_info_t;␊ |
253 | ␊ |
254 | static radeon_card_info_t radeon_cards[] = {␊ |
255 | ␉␊ |
256 | ␉// Earlier cards are not supported␊ |
257 | ␉//␊ |
258 | ␉// Layout is device_id, subsys_id (subsystem id plus vendor id), chip_family_name, display name, frame buffer␊ |
259 | ␉// Cards are grouped by device id and vendor id then sorted by subsystem id to make it easier to add new cards␊ |
260 | ␉// ␊ |
261 | ␊ |
262 | ␉{ 0x9400,␉0x01611043, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 XT", kNull␉␉},␊ |
263 | ␉{ 0x9400,␉0x021E1043, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 XT", kNull␉␉},␊ |
264 | ␉{ 0x9400,␉0x25521002, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 XT", kNull␉␉},␊ |
265 | ␉{ 0x9400,␉0x30001002, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 PRO", kNull␉␉},␊ |
266 | ␉{ 0x9400,␉0x31421002, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 XT", kNull␉␉},␊ |
267 | ␊ |
268 | ␉{ 0x9440,␉0x05021002, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4870", kMotmot␉␉},␊ |
269 | ␉{ 0x9440,␉0x0851174B, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4870", kMotmot␉␉},␊ |
270 | ␉{ 0x9440,␉0x114A174B, CHIP_FAMILY_RV770,␉␉"Sapphire Radeon HD4870 Vapor-X", kCardinal␉},␊ |
271 | ␉{ 0x9440,␉0x24401682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4870", kMotmot␉␉},␊ |
272 | ␉{ 0x9440,␉0x24411682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4870", kMotmot␉␉},␊ |
273 | ␉{ 0x9440,␉0x24441682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4870", kMotmot␉␉},␊ |
274 | ␉{ 0x9440,␉0x24451682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4870", kMotmot␉␉},␊ |
275 | ␊ |
276 | ␉{ 0x9441,␉0x02601043, CHIP_FAMILY_RV770,␉␉"ASUS EAH4870x2", kMotmot␉␉},␊ |
277 | ␉{ 0x9441,␉0x24401682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4870 X2", kMotmot␉␉},␊ |
278 | ␉{ 0x9441,␉0x25421002, CHIP_FAMILY_RV770,␉␉"PowerColor HD 4870 X2", kMotmot␉␉},␊ |
279 | ␊ |
280 | ␉{ 0x9442,␉0x05021002, CHIP_FAMILY_RV770,␉␉"MSI R4850-T2D512", kMotmot␉␉},␊ |
281 | ␉{ 0x9442,␉0x080110B0, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
282 | ␉{ 0x9442,␉0x24701682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
283 | ␉{ 0x9442,␉0x24711682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
284 | ␉{ 0x9442,␉0xE104174B, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
285 | ␉{ 0x9442,␉0xE810174B, CHIP_FAMILY_RV770,␉␉"Sapphire HD 4850", kMotmot␉␉},␊ |
286 | ␊ |
287 | ␉{ 0x944A,␉0x02A21028, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
288 | ␉{ 0x944A,␉0x30001043, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
289 | ␉{ 0x944A,␉0x30001458, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
290 | ␉{ 0x944A,␉0x30001462, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
291 | ␉{ 0x944A,␉0x30001545, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
292 | ␉{ 0x944A,␉0x30001682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
293 | ␉{ 0x944A,␉0x3000174B, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
294 | ␉{ 0x944A,␉0x30001787, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
295 | ␉{ 0x944A,␉0x300017AF, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850", kMotmot␉␉},␊ |
296 | ␊ |
297 | ␉{ 0x944C,␉0x05021002, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4830", kMotmot␉␉},␊ |
298 | ␉{ 0x944C,␉0x20031787, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4830", kMotmot␉␉},␊ |
299 | ␉{ 0x944C,␉0x24801682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4830", kMotmot␉␉},␊ |
300 | ␉{ 0x944C,␉0x24811682, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4830", kMotmot␉␉},␊ |
301 | ␊ |
302 | ␉{ 0x944E,␉0x30001787, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4730", kMotmot␉␉},␊ |
303 | ␉{ 0x944E,␉0x30101787, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4810", kMotmot␉␉},␊ |
304 | ␉{ 0x944E,␉0x31001787, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4820", kMotmot␉␉},␊ |
305 | ␉{ 0x944E,␉0x3260174B, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4810", kMotmot␉␉},␊ |
306 | ␉{ 0x944E,␉0x3261174B, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4810", kMotmot␉␉},␊ |
307 | ␊ |
308 | ␉{ 0x9480,␉0x01211025, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650M", kGliff␉␉},␊ |
309 | ␉{ 0x9480,␉0x03111025, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 5165M", kNull␉␉},␊ |
310 | ␉{ 0x9480,␉0x03121025, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 5165M", kNull␉␉},␊ |
311 | ␉{ 0x9480,␉0x031C1025, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 5165M", kNull␉␉},␊ |
312 | ␉{ 0x9480,␉0x031D1025, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 5165M", kNull␉␉},␊ |
313 | ␉{ 0x9480,␉0x036C1025, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 5165M", kNull␉␉},␊ |
314 | ␉{ 0x9480,␉0x036D1025, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 5165M", kNull␉␉},␊ |
315 | ␉{ 0x9480,␉0x3628103C, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650M", kGliff␉␉},␊ |
316 | ␉{ 0x9480,␉0x9035104D, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650M", kGliff␉␉},␊ |
317 | ␉{ 0x9480,␉0xFD001179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650M", kNull␉␉},␊ |
318 | ␉{ 0x9480,␉0xFDD01179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650M", kNull␉␉},␊ |
319 | ␉{ 0x9480,␉0xFD121179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650M", kNull␉␉},␊ |
320 | ␉{ 0x9480,␉0xFD501179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650M", kNull␉␉},␊ |
321 | ␉{ 0x9480,␉0xFF001179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600M", kNull␉␉},␊ |
322 | ␉{ 0x9480,␉0xFF151179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600M", kNull␉␉},␊ |
323 | ␉{ 0x9480,␉0xFF221179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600M", kNull␉␉},␊ |
324 | ␉{ 0x9480,␉0xFF501179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600M", kNull␉␉},␊ |
325 | ␉{ 0x9480,␉0xFF801179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600M", kNull␉␉},␊ |
326 | ␉{ 0x9480,␉0xFF821179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 5165M", kNull␉␉},␊ |
327 | ␉{ 0x9480,␉0xFFA01179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600M", kNull␉␉},␊ |
328 | ␉{ 0x9480,␉0xFFA21179, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 5165M", kNull␉␉},␊ |
329 | ␊ |
330 | ␉{ 0x9490,␉0x20031787, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4670", kFlicker␉},␊ |
331 | ␉{ 0x9490,␉0x30501787, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4710", kNull␉␉},␊ |
332 | ␉{ 0x9490,␉0x300017AF, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4710", kNull␉␉},␊ |
333 | ␉{ 0x9490,␉0x4710174B, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4710", kNull␉␉},␊ |
334 | ␊ |
335 | ␉{ 0x9498,␉0x10001043, CHIP_FAMILY_RV730,␉␉"ASUS EAHG4670", kNull␉␉},␊ |
336 | ␉{ 0x9498,␉0x21CF1458, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600", kNull␉␉},␊ |
337 | ␉{ 0x9498,␉0x24511682, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650", kNull␉␉},␊ |
338 | ␉{ 0x9498,␉0x24521682, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650", kNull␉␉},␊ |
339 | ␉{ 0x9498,␉0x24541682, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650", kNull␉␉},␊ |
340 | ␉{ 0x9498,␉0x29331682, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4670", kNull␉␉},␊ |
341 | ␉{ 0x9498,␉0x29341682, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4670", kNull␉␉},␊ |
342 | ␉{ 0x9498,␉0x30501787, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4700", kNull␉␉},␊ |
343 | ␉{ 0x9498,␉0x31001787, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4720", kNull␉␉},␊ |
344 | ␊ |
345 | ␉{ 0x94B3,␉0x0D001002, CHIP_FAMILY_RV740,␉␉"ATI Radeon HD 4770", kFlicker␉},␊ |
346 | ␉{ 0x94B3,␉0x1170174B, CHIP_FAMILY_RV740,␉␉"ATI Radeon HD 4770", kFlicker␉},␊ |
347 | ␉{ 0x94B3,␉0x29001682, CHIP_FAMILY_RV740,␉␉"ATI Radeon HD 4770", kFlicker␉},␊ |
348 | ␊ |
349 | ␉{ 0x94C1,␉0x0D021002, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 XT", kNull␉␉},␊ |
350 | ␉{ 0x94C1,␉0x10021002, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Pro", kNull␉␉},␊ |
351 | ␉{ 0x94C1,␉0x0D021028, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 XT", kNull␉␉},␊ |
352 | ␉{ 0x94C1,␉0x21741458, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 XT", kNull␉␉},␊ |
353 | ␉{ 0x94C1,␉0x10331462, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 XT", kNull␉␉},␊ |
354 | ␉{ 0x94C1,␉0x10401462, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 XT", kNull␉␉},␊ |
355 | ␉{ 0x94C1,␉0x11101462, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 XT", kNull␉␉},␊ |
356 | ␊ |
357 | ␉{ 0x94C3,␉0x03421002, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
358 | ␉{ 0x94C3,␉0x94C31002, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
359 | ␊ |
360 | ␉{ 0x94C3,␉0x01011A93, CHIP_FAMILY_RV610,␉␉"Qimonda Radeon HD 2400 PRO",␉␉␉kNull␉␉},␊ |
361 | ␉{ 0x94C3,␉0x03021028, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
362 | ␉{ 0x94C3,␉0x03421002, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
363 | ␉{ 0x94C3,␉0x04021028, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
364 | ␉{ 0x94C3,␉0x10321462, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
365 | ␉{ 0x94C3,␉0x10411462, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400", kNull␉␉},␊ |
366 | ␉{ 0x94C3,␉0x11041462, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400", kNull␉␉},␊ |
367 | ␉{ 0x94C3,␉0x11051462, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400", kNull␉␉},␊ |
368 | ␉{ 0x94C3,␉0x203817AF, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400", kNull␉␉},␊ |
369 | ␉{ 0x94C3,␉0x216A1458, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
370 | ␉{ 0x94C3,␉0x21721458, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
371 | ␉{ 0x94C3,␉0x2247148C, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 LE", kNull␉␉},␊ |
372 | ␉{ 0x94C3,␉0x22471787, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 LE", kNull␉␉},␊ |
373 | ␉{ 0x94C3,␉0x30001025, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2350", kNull␉␉},␊ |
374 | ␉{ 0x94C3,␉0x30001458, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 3410", kNull␉␉},␊ |
375 | ␉{ 0x94C3,␉0x30001462, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 3410", kNull␉␉},␊ |
376 | ␉{ 0x94C3,␉0x3000148C, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2350", kNull␉␉},␊ |
377 | ␉{ 0x94C3,␉0x30001642, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 3410", kNull␉␉},␊ |
378 | ␉{ 0x94C3,␉0x3000174B, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2350", kNull␉␉},␊ |
379 | ␉{ 0x94C3,␉0x30001787, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2350", kNull␉␉},␊ |
380 | ␉{ 0x94C3,␉0x37161642, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
381 | ␉{ 0x94C3,␉0xE370174B, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
382 | ␉{ 0x94C3,␉0xE400174B, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 PRO", kNull␉␉},␊ |
383 | ␊ |
384 | ␉{ 0x9501,␉0x25421002, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3870", kNull␉␉},␊ |
385 | ␉{ 0x9501,␉0x30001002, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3690", kNull␉␉},␊ |
386 | ␉{ 0x9501,␉0x3000174B, CHIP_FAMILY_RV670,␉␉"Sapphire Radeon HD 3690", kNull␉␉},␊ |
387 | ␉{ 0x9501,␉0x30001787, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3690", kNull␉␉},␊ |
388 | ␉{ 0x9501,␉0x4750174B, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4750", kNull␉␉},␊ |
389 | ␊ |
390 | ␉{ 0x9505,␉0x024A1043, CHIP_FAMILY_RV670,␉␉"ASUS MA 3850", kNull␉␉},␊ |
391 | ␉{ 0x9505,␉0x25421002, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3850", kNull␉␉},␊ |
392 | ␉{ 0x9505,␉0x30001002, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3690", kNull␉␉},␊ |
393 | ␉{ 0x9505,␉0x3000148C, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3850", kNull␉␉},␊ |
394 | ␉{ 0x9505,␉0x3000174B, CHIP_FAMILY_RV670,␉␉"Sapphire Radeon HD 3690", kNull␉␉},␊ |
395 | ␉{ 0x9505,␉0x30001787, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3690", kNull␉␉},␊ |
396 | ␉{ 0x9505,␉0x30011043, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4730", kNull␉␉},␊ |
397 | ␉{ 0x9505,␉0x3001148C, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4730", kNull␉␉},␊ |
398 | ␉{ 0x9505,␉0x3001174B, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4750", kNull␉␉},␊ |
399 | ␉{ 0x9505,␉0x3002148C, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4730", kNull␉␉},␊ |
400 | ␉{ 0x9505,␉0x3003148C, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4750", kNull␉␉},␊ |
401 | ␉{ 0x9505,␉0x3004148C, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4750", kNull␉␉},␊ |
402 | ␉{ 0x9505,␉0x3010174B, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4750", kNull␉␉},␊ |
403 | ␉{ 0x9505,␉0x301017AF, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4750", kNull␉␉},␊ |
404 | ␉{ 0x9505,␉0x4730174B, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 4730", kNull␉␉},␊ |
405 | ␊ |
406 | ␉{ 0x9540,␉0x30501787, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4590", kNull␉␉},␊ |
407 | ␉{ 0x9540,␉0x4590174B, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4590", kNull␉␉},␊ |
408 | ␊ |
409 | ␉{ 0x954F,␉0x16131462, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4550", kNull␉␉},␊ |
410 | ␉{ 0x954F,␉0x20081787, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4350", kNull␉␉},␊ |
411 | ␉{ 0x954F,␉0x29201682, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4550", kNull␉␉},␊ |
412 | ␉{ 0x954F,␉0x29211682, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4550", kNull␉␉},␊ |
413 | ␉{ 0x954F,␉0x3000174B, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4520", kNull␉␉},␊ |
414 | ␉{ 0x954F,␉0x301017AF, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4450", kNull␉␉},␊ |
415 | ␉{ 0x954F,␉0x30501787, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4450", kNull␉␉},␊ |
416 | ␉{ 0x954F,␉0x30901682, CHIP_FAMILY_RV710,␉␉"XFX Radeon HD 4570", kNull␉␉},␊ |
417 | ␉{ 0x954F,␉0x31001787, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4520", kNull␉␉},␊ |
418 | ␉{ 0x954F,␉0x4450174B, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4450", kNull␉␉},␊ |
419 | ␉{ 0x954F,␉0x4570174B, CHIP_FAMILY_RV710,␉␉"Sapphire Radeon HD 4570", kNull␉␉},␊ |
420 | ␉{ 0x954F,␉0x66661043, CHIP_FAMILY_RV710,␉␉"ASUS EAH4550", kNull␉␉},␊ |
421 | ␉{ 0x954F,␉0xE990174B, CHIP_FAMILY_RV710,␉␉"Sapphire Radeon HD 4350", kNull␉␉},␊ |
422 | ␊ |
423 | ␉{ 0x9552,␉0x04341028, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4330", kShrike␉␉},␊ |
424 | ␉{ 0x9552,␉0x21AC1458, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500", kNull␉␉},␊ |
425 | ␉{ 0x9552,␉0x21ED1458, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500", kNull␉␉},␊ |
426 | ␉{ 0x9552,␉0x308B103C, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4330", kShrike␉␉},␊ |
427 | ␉{ 0x9552,␉0x3000148C, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500", kNull␉␉},␊ |
428 | ␉{ 0x9552,␉0x3000174B, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500", kNull␉␉},␊ |
429 | ␉{ 0x9552,␉0x30001787, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500", kNull␉␉},␊ |
430 | ␉{ 0x9552,␉0x300017AF, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500", kNull␉␉},␊ |
431 | ␉{ 0x9552,␉0x44721545, CHIP_FAMILY_RV710,␉␉"VisionTek Radeon 4350", kNull␉␉},␊ |
432 | ␊ |
433 | ␉{ 0x9553,␉0x18751043, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4570",␉␉␉kShrike␉␉},␊ |
434 | ␉{ 0x9553,␉0x1B321043, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4570",␉␉␉kShrike␉␉},␊ |
435 | ␉{ 0x9553,␉0x3092174B, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500 Series",␉␉kNull␉␉},␊ |
436 | ␉{ 0x9553,␉0x39291642, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4570",␉␉␉kNull␉␉},␊ |
437 | ␉{ 0x9553,␉0xFD001179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 5145",␉␉␉kNull␉␉},␊ |
438 | ␉{ 0x9553,␉0xFD121179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 5145",␉␉␉kNull␉␉},␊ |
439 | ␉{ 0x9553,␉0xFD501179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 5145",␉␉␉kNull␉␉},␊ |
440 | ␉{ 0x9553,␉0xFD921179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 5145",␉␉␉kNull␉␉},␊ |
441 | ␉{ 0x9553,␉0xFDD01179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 5145",␉␉␉kNull␉␉},␊ |
442 | ␉{ 0x9553,␉0xFF001179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4500",␉␉␉kNull␉␉},␊ |
443 | ␉{ 0x9553,␉0xFF151179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4500",␉␉␉kNull␉␉},␊ |
444 | ␉{ 0x9553,␉0xFF161179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 5145",␉␉␉kNull␉␉},␊ |
445 | ␉{ 0x9553,␉0xFF221179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4500",␉␉␉kNull␉␉},␊ |
446 | ␉{ 0x9553,␉0xFF401179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4500",␉␉␉kNull␉␉},␊ |
447 | ␉{ 0x9553,␉0xFF501179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4500",␉␉␉kNull␉␉},␊ |
448 | ␉{ 0x9553,␉0xFF801179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4500",␉␉␉kNull␉␉},␊ |
449 | ␉{ 0x9553,␉0xFF821179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 5145",␉␉␉kNull␉␉},␊ |
450 | ␉{ 0x9553,␉0xFFA01179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 5145",␉␉␉kNull␉␉},␊ |
451 | ␉{ 0x9553,␉0xFFA21179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4500",␉␉␉kNull␉␉},␊ |
452 | ␉{ 0x9553,␉0xFFC01179, CHIP_FAMILY_RV710,␉␉"ATI Mobility Radeon HD 4500",␉␉␉kNull␉␉},␊ |
453 | ␊ |
454 | ␉{ 0x9555,␉0x29241682, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4550", kNull␉␉},␊ |
455 | ␉{ 0x9555,␉0x24651682, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD4300/HD4500", kNull␉␉}, ␊ |
456 | ␉{ 0x9555,␉0x3711174B, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD4300/HD4500", kNull␉␉},␊ |
457 | ␊ |
458 | ␉{ 0x9581,␉0x011F1025, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600", kNull␉␉},␊ |
459 | ␉{ 0x9581,␉0x0562107B, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600", kNull␉␉},␊ |
460 | ␉{ 0x9581,␉0x15621043, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600", kNull␉␉},␊ |
461 | ␉{ 0x9581,␉0x3000148C, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3600", kNull␉␉},␊ |
462 | ␉{ 0x9581,␉0x30C5103C, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600", kNull␉␉},␊ |
463 | ␉{ 0x9581,␉0x3C2D17AA, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600", kNull␉␉},␊ |
464 | ␉{ 0x9581,␉0x63F61462, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600", kNull␉␉},␊ |
465 | ␉{ 0x9581,␉0x95811002, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3600", kNull␉␉},␊ |
466 | ␉{ 0x9581,␉0xFF001179, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600", kNull␉␉},␊ |
467 | ␉{ 0x9581,␉0xFF011179, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600", kNull␉␉},␊ |
468 | ␊ |
469 | ␉{ 0x9583,␉0x0083106B, CHIP_FAMILY_RV630,␉␉"ATI Mobility Radeon HD 2600 XT",␉␉kNull␉␉},␊ |
470 | ␉{ 0x9583,␉0x11071734, CHIP_FAMILY_RV630,␉␉"ATI Mobility Radeon HD 2600 XT",␉␉kNull␉␉},␊ |
471 | ␉{ 0x9583,␉0x3000148C, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3600", kNull␉␉},␊ |
472 | ␉{ 0x9583,␉0x30D4103C, CHIP_FAMILY_RV630,␉␉"ATI Mobility Radeon HD 2600 XT",␉␉kNull␉␉},␊ |
473 | ␊ |
474 | ␉{ 0x9588,␉0x01021A93, CHIP_FAMILY_RV630,␉␉"Qimonda Radeon HD 2600 XT",␉␉␉kNull␉␉},␊ |
475 | ␊ |
476 | ␉{ 0x9589,␉0x01001A93, CHIP_FAMILY_RV630,␉␉"Qimonda Radeon HD 2600 PRO",␉␉␉kNull␉␉},␊ |
477 | ␉{ 0x9589,␉0x0E41174B, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3600", kNull␉␉},␊ |
478 | ␉{ 0x9589,␉0x30001462, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3610", kNull␉␉},␊ |
479 | ␉{ 0x9589,␉0x30001642, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3610", kNull␉␉},␊ |
480 | ␉{ 0x9589,␉0x30001787, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3600", kNull␉␉},␊ |
481 | ␊ |
482 | ␉{ 0x9591,␉0x15453992, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 3600", kNull␉␉},␊ |
483 | ␉{ 0x9591,␉0x2303148C, CHIP_FAMILY_RV635,␉␉"VisionTek Radeon HD 2600/3600 Series", kNull␉␉},␊ |
484 | ␊ |
485 | ␉{ 0x9598,␉0xB3831002, CHIP_FAMILY_RV635,␉␉"ATI All-in-Wonder HD", kNull␉␉},␊ |
486 | ␉{ 0x9598,␉0x30001043, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 3730", kNull␉␉},␊ |
487 | ␉{ 0x9598,␉0x3000148C, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 3730", kNull␉␉},␊ |
488 | ␉{ 0x9598,␉0x30001545, CHIP_FAMILY_RV635,␉␉"VisionTek Radeon HD 2600 XT",␉␉␉kNull␉␉},␊ |
489 | ␉{ 0x9598,␉0x3000174B, CHIP_FAMILY_RV635,␉␉"Sapphire Radeon HD 3730", kNull␉␉},␊ |
490 | ␉{ 0x9598,␉0x30011043, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4570", kNull␉␉},␊ |
491 | ␉{ 0x9598,␉0x3001148C, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4580", kNull␉␉},␊ |
492 | ␉{ 0x9598,␉0x3031148C, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4570", kNull␉␉},␊ |
493 | ␉{ 0x9598,␉0x30011545, CHIP_FAMILY_RV635,␉␉"VisionTek Radeon HD 2600 Pro",␉␉␉kNull␉␉},␊ |
494 | ␉{ 0x9598,␉0x3001174B, CHIP_FAMILY_RV635,␉␉"Sapphire Radeon HD 3750", kNull␉␉},␊ |
495 | ␉{ 0x9598,␉0x300117AF, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 3750", kNull␉␉},␊ |
496 | ␉{ 0x9598,␉0x301017AF, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4570", kNull␉␉},␊ |
497 | ␉{ 0x9598,␉0x301117AF, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4580", kNull␉␉},␊ |
498 | ␉{ 0x9598,␉0x30501787, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4610", kNull␉␉},␊ |
499 | ␉{ 0x9598,␉0x4570174B, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4570", kNull␉␉},␊ |
500 | ␉{ 0x9598,␉0x4580174B, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4580", kNull␉␉},␊ |
501 | ␉{ 0x9598,␉0x4610174B, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 4610", kNull␉␉},␊ |
502 | ␊ |
503 | ␉{ 0x95C0,␉0x3000148C, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 3550", kNull␉␉},␊ |
504 | ␉{ 0x95C0,␉0x3000174B, CHIP_FAMILY_RV620,␉␉"Sapphire Radeon HD 3550", kNull␉␉},␊ |
505 | ␉{ 0x95C0,␉0x3002174B, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 3570", kNull␉␉},␊ |
506 | ␉{ 0x95C0,␉0x3020174B, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4250", kNull␉␉},␊ |
507 | ␉{ 0x95C0,␉0xE3901745, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 3550", kNull␉␉},␊ |
508 | ␊ |
509 | ␉{ 0x95C5,␉0x01041A93, CHIP_FAMILY_RV620,␉␉"Qimonda Radeon HD 3450", kNull␉␉},␊ |
510 | ␉{ 0x95C5,␉0x01051A93, CHIP_FAMILY_RV620,␉␉"Qimonda Radeon HD 3450", kNull␉␉},␊ |
511 | ␉{ 0x95C5,␉0x3000148C, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 3450", kNull␉␉},␊ |
512 | ␉{ 0x95C5,␉0x3001148C, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 3550", kNull␉␉},␊ |
513 | ␉{ 0x95C5,␉0x3002148C, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4230", kNull␉␉},␊ |
514 | ␉{ 0x95C5,␉0x3003148C, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4250", kNull␉␉},␊ |
515 | ␉{ 0x95C5,␉0x3010174B, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4250", kNull␉␉},␊ |
516 | ␉{ 0x95C5,␉0x301017AF, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4230", kNull␉␉},␊ |
517 | ␉{ 0x95C5,␉0x3032148C, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4250", kNull␉␉},␊ |
518 | ␉{ 0x95C5,␉0x3033148C, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4230", kNull␉␉},␊ |
519 | ␉{ 0x95C5,␉0x30501787, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4250", kNull␉␉},␊ |
520 | ␉{ 0x95C5,␉0x4250174B, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 4250", kNull␉␉},␊ |
521 | ␊ |
522 | ␉/* Evergreen */␊ |
523 | ␉{ 0x6898,␉0x00D0106B, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5870", kLangur␉␉},␊ |
524 | ␉{ 0x6898,␉0x032E1043, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5870", kUakari␉␉},␊ |
525 | ␉{ 0x6898,␉0x038C1043, CHIP_FAMILY_CYPRESS,␉"ASUS 5870 Eyefinity 6", kNull␉␉},␊ |
526 | ␉{ 0x6898,␉0x0B001002, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5870", kZonalis␉},␊ |
527 | ␉{ 0x6898,␉0x29611682, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5870", kUakari␉␉},␊ |
528 | ␉{ 0x6898,␉0xE140174B, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5870", kUakari␉␉},␊ |
529 | ␊ |
530 | ␉{ 0x6899,␉0x200A1787, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5850", kUakari␉␉},␊ |
531 | ␉{ 0x6899,␉0x21E41458, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5850", kUakari␉␉},␊ |
532 | ␉{ 0x6899,␉0x22901787, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5850", kUakari␉␉},␊ |
533 | ␉{ 0x6899,␉0xE140174B, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5850", kUakari␉␉},␊ |
534 | ␉{ 0x6899,␉0xE174174B, CHIP_FAMILY_CYPRESS,␉"ATI Sapphire Radeon HD 5850", kUakari␉␉},␊ |
535 | ␊ |
536 | ␉{ 0x689C,␉0x034A1043, CHIP_FAMILY_HEMLOCK,␉"ATI Radeon HD 5970", kUakari␉␉},␊ |
537 | ␉{ 0x689C,␉0x03521043, CHIP_FAMILY_HEMLOCK,␉"ASUS ARES", kUakari␉␉},␊ |
538 | ␉{ 0x689C,␉0x039E1043, CHIP_FAMILY_HEMLOCK,␉"ASUS EAH5870", kUakari␉␉},␊ |
539 | ␉{ 0x689C,␉0x30201682, CHIP_FAMILY_HEMLOCK,␉"ATI Radeon HD 5970", kUakari␉␉},␊ |
540 | ␊ |
541 | ␉{ 0x68A0,␉0x03081025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5830",␉␉␉kNomascus␉},␊ |
542 | ␉{ 0x68A0,␉0x030A1025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5830",␉␉␉kNomascus␉},␊ |
543 | ␉{ 0x68A0,␉0x043A1028, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5870",␉␉␉kNomascus␉},␊ |
544 | ␊ |
545 | ␉{ 0x68A1,␉0x03081025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
546 | ␉{ 0x68A1,␉0x030A1025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
547 | ␉{ 0x68A1,␉0x03671025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
548 | ␉{ 0x68A1,␉0x03681025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
549 | ␉{ 0x68A1,␉0x038B1025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
550 | ␉{ 0x68A1,␉0x038C1025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
551 | ␉{ 0x68A1,␉0x042E1025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
552 | ␉{ 0x68A1,␉0x042F1025, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
553 | ␉{ 0x68A1,␉0x144D103C, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNomascus␉},␊ |
554 | ␉{ 0x68A1,␉0x1522103C, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kHoolock␉},␊ |
555 | ␉{ 0x68A1,␉0x22411462, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
556 | ␉{ 0x68A1,␉0x39961462, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5850",␉␉␉kNull␉},␊ |
557 | ␊ |
558 | ␉{ 0x68A8,␉0x050E1025, CHIP_FAMILY_CYPRESS,␉"AMD Radeon HD 6850M", kUakari␉␉},␊ |
559 | ␊ |
560 | ␉{ 0x68B8,␉0x00CF106B, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kHoolock␉},␊ |
561 | ␉{ 0x68B8,␉0x1482174B, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
562 | ␉{ 0x68B8,␉0x200A1787, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
563 | ␉{ 0x68B8,␉0x200B1787, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
564 | ␉{ 0x68B8,␉0x21D71458, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
565 | ␉{ 0x68B8,␉0x21F61458, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
566 | ␉{ 0x68B8,␉0x22881787, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
567 | ␉{ 0x68B8,␉0x29901682, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
568 | ␉{ 0x68B8,␉0x29911682, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
569 | ␉{ 0x68B8,␉0x30001002, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 6700", kVervet␉␉},␊ |
570 | ␉{ 0x68B8,␉0xE144174B, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kHoolock␉},␊ |
571 | ␉{ 0x68B8,␉0xE147174B, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770", kVervet␉␉},␊ |
572 | ␊ |
573 | ␉{ 0x68BA,␉0x03FE1043, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
574 | ␉{ 0x68BA,␉0x1482174B, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
575 | ␉{ 0x68BA,␉0x174B1482, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
576 | ␉{ 0x68BA,␉0x200A1787, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
577 | ␉{ 0x68BA,␉0x21421462, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
578 | ␉{ 0x68BA,␉0x25431458, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
579 | ␉{ 0x68BA,␉0x31501682, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
580 | ␉{ 0x68BA,␉0x31521682, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
581 | ␉{ 0x68BA,␉0x31531682, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
582 | ␉{ 0x68BA,␉0xE144174B, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6770", kVervet␉␉},␊ |
583 | ␊ |
584 | ␉{ 0x68BE,␉0x22881787, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5750", kVervet␉␉},␊ |
585 | ␉{ 0x68BE,␉0x3000148C, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 6750", kNull␉␉},␊ |
586 | ␉{ 0x68BE,␉0x3000174B, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 6750", kNull␉␉},␊ |
587 | ␉{ 0x68BE,␉0x300017AF, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 6750", kNull␉␉},␊ |
588 | ␉{ 0x68BE,␉0x39821642, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6750", kNull␉␉},␊ |
589 | ␊ |
590 | ␉{ 0x68BF,␉0x220E1458, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 6750", kVervet␉␉},␊ |
591 | ␉{ 0x68BF,␉0x31401682, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 6750", kVervet␉␉},␊ |
592 | ␊ |
593 | ␉{ 0x68C0,␉0x1594103C, CHIP_FAMILY_REDWOOD,␉"AMD Radeon HD 6570M", kNull␉␉},␊ |
594 | ␉{ 0x68C0,␉0x392717AA, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5730",␉␉␉kNull␉␉},␊ |
595 | ␉{ 0x68C0,␉0x395217AA, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5730",␉␉␉kNull␉␉},␊ |
596 | ␉{ 0x68C0,␉0x84721043, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5000",␉␉␉kNull␉␉},␊ |
597 | ␊ |
598 | ␉{ 0x68C1,␉0x02051025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
599 | ␉{ 0x68C1,␉0x02961025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
600 | ␉{ 0x68C1,␉0x030A1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
601 | ␉{ 0x68C1,␉0x033D1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
602 | ␉{ 0x68C1,␉0x033E1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kNull␉␉},␊ |
603 | ␉{ 0x68C1,␉0x03471025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
604 | ␉{ 0x68C1,␉0x03561025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
605 | ␉{ 0x68C1,␉0x03581025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
606 | ␉{ 0x68C1,␉0x035A1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
607 | ␉{ 0x68C1,␉0x035C1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
608 | ␉{ 0x68C1,␉0x03641025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
609 | ␉{ 0x68C1,␉0x036D1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kNull␉␉},␊ |
610 | ␉{ 0x68C1,␉0x03791025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
611 | ␉{ 0x68C1,␉0x037E1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
612 | ␉{ 0x68C1,␉0x03821025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5750",␉␉␉kNull␉␉},␊ |
613 | ␉{ 0x68C1,␉0x04121025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kNull␉␉},␊ |
614 | ␉{ 0x68C1,␉0x042E1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kNull␉␉},␊ |
615 | ␉{ 0x68C1,␉0x042F1025, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kNull␉␉},␊ |
616 | ␉{ 0x68C1,␉0x9071104D, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kEulemur␉},␊ |
617 | ␉{ 0x68C1,␉0xFD001179, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kEulemur␉},␊ |
618 | ␉{ 0x68C1,␉0xFD121179, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kEulemur␉},␊ |
619 | ␉{ 0x68C1,␉0xFD501179, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kEulemur␉},␊ |
620 | ␉{ 0x68C1,␉0xFDD01179, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5650",␉␉␉kEulemur␉},␊ |
621 | ␊ |
622 | ␉{ 0x68C8,␉0x2306103C, CHIP_FAMILY_REDWOOD,␉"ATI FirePro V4800 (FireGL)",␉␉␉kNull␉␉},␊ |
623 | ␉{ 0x68C8,␉0x240A1002, CHIP_FAMILY_REDWOOD,␉"ATI FirePro V4800 (FireGL)",␉␉␉kNull␉␉},␊ |
624 | ␉{ 0x68C8,␉0x240A1028, CHIP_FAMILY_REDWOOD,␉"ATI FirePro V4800 (FireGL)",␉␉␉kNull␉␉},␊ |
625 | ␊ |
626 | ␉{ 0x68D8,␉0x03561043, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kBaboon␉␉},␊ |
627 | ␉{ 0x68D8,␉0x03C01043, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kNull␉␉},␊ |
628 | ␉{ 0x68D8,␉0x20091787, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kNull␉␉},␊ |
629 | ␉{ 0x68D8,␉0x21D91458, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kBaboon␉␉},␊ |
630 | ␉{ 0x68D8,␉0x21F41458, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kNull␉␉},␊ |
631 | ␉{ 0x68D8,␉0x22051462, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5690", kNull␉␉},␊ |
632 | ␉{ 0x68D8,␉0x22941787, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5690", kNull␉␉},␊ |
633 | ␉{ 0x68D8,␉0x30001787, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5730", kNull␉␉},␊ |
634 | ␉{ 0x68D8,␉0x301017AF, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5730", kNull␉␉},␊ |
635 | ␉{ 0x68D8,␉0x301117AF, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5690", kNull␉␉},␊ |
636 | ␉{ 0x68D8,␉0x30601682, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5690", kNull␉␉},␊ |
637 | ␉{ 0x68D8,␉0x30651682, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5690", kNull␉␉},␊ |
638 | ␉{ 0x68D8,␉0x56701545, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5690", kNull␉␉},␊ |
639 | ␉{ 0x68D8,␉0x5690174B, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5690", kNull␉␉},␊ |
640 | ␉{ 0x68D8,␉0x5730174B, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5730", kNull␉␉},␊ |
641 | ␉{ 0x68D8,␉0x68E01028, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kBaboon␉␉},␊ |
642 | ␉{ 0x68D8,␉0xE151174B, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kEulemur␉},␊ |
643 | ␉{ 0x68D8,␉0xE155174B, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kNull␉␉},␊ |
644 | ␉{ 0x68D8,␉0xE166174B, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5670", kUakari␉␉},␊ |
645 | ␊ |
646 | //␉{ 0x68D9,␉0x03CE1043, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD ????", kNull␉␉},␊ |
647 | ␉{ 0x68D9,␉0x22401462, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5570", kNull␉␉},␊ |
648 | ␉{ 0x68D9,␉0x3000148C, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 6510", kNull␉␉},␊ |
649 | ␉{ 0x68D9,␉0x3000174B, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 6510", kNull␉␉},␊ |
650 | ␉{ 0x68D9,␉0x301017AF, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5630", kNull␉␉},␊ |
651 | ␉{ 0x68D9,␉0x39691642, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5570", kNull␉␉},␊ |
652 | ␊ |
653 | ␉{ 0x68DA,␉0x3000148C, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 6390", kNull␉␉},␊ |
654 | ␉{ 0x68DA,␉0x3000174B, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 6390", kNull␉␉},␊ |
655 | ␉{ 0x68DA,␉0x30001787, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5630", kNull␉␉},␊ |
656 | ␉{ 0x68DA,␉0x300017AF, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 6390", kNull␉␉},␊ |
657 | ␉{ 0x68DA,␉0x301017AF, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5630", kNull␉␉},␊ |
658 | ␉{ 0x68DA,␉0x5630174B, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5630", kNull␉␉},␊ |
659 | ␊ |
660 | ␉{ 0x68E0,␉0x02931025, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
661 | ␉{ 0x68E0,␉0x03581025, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
662 | ␉{ 0x68E0,␉0x03591025, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
663 | ␉{ 0x68E0,␉0x035C1025, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
664 | ␉{ 0x68E0,␉0x035D1025, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
665 | ␉{ 0x68E0,␉0x036D1025, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kLangur },␊ |
666 | ␉{ 0x68E0,␉0x04471028, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
667 | ␉{ 0x68E0,␉0x04561028, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
668 | ␉{ 0x68E0,␉0x04831025, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
669 | ␉{ 0x68E0,␉0x1433103C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
670 | ␉{ 0x68E0,␉0x1441103C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
671 | ␉{ 0x68E0,␉0x144A103C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
672 | ␉{ 0x68E0,␉0x1BF21043, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kNull },␊ |
673 | ␉{ 0x68E0,␉0x848F1043, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kNull },␊ |
674 | ␉{ 0x68E0,␉0xFD001179, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
675 | ␉{ 0x68E0,␉0xFD121179, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
676 | ␉{ 0x68E0,␉0xFD501179, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
677 | ␉{ 0x68E0,␉0xFD921179, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
678 | ␉{ 0x68E0,␉0xFDD01179, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
679 | ␊ |
680 | ␉{ 0x68E1,␉0x04661028, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
681 | ␉{ 0x68E1,␉0x10021B61, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450M", kEulemur␉},␊ |
682 | ␉{ 0x68E1,␉0x10501462, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
683 | ␉{ 0x68E1,␉0x1426103C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
684 | ␉{ 0x68E1,␉0x142A103C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 545vM", kEulemur␉},␊ |
685 | ␉{ 0x68E1,␉0x14E110CF, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5400M", kEulemur␉},␊ |
686 | ␉{ 0x68E1,␉0x21D81458, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
687 | ␉{ 0x68E1,␉0x21E21458, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
688 | ␉{ 0x68E1,␉0x21F11458, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
689 | ␉{ 0x68E1,␉0x22021458, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
690 | ␉{ 0x68E1,␉0x23421462, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
691 | ␉{ 0x68E1,␉0x23431462, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
692 | ␉{ 0x68E1,␉0x25481458, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5400M Series", kEulemur␉},␊ |
693 | ␉{ 0x68E1,␉0x254A1458, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5000M Series", kEulemur␉},␊ |
694 | ␉{ 0x68E1,␉0x30001043, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
695 | ␉{ 0x68E1,␉0x3000148C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
696 | ␉{ 0x68E1,␉0x30001682, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
697 | ␉{ 0x68E1,␉0x3000174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉}, ␊ |
698 | ␉{ 0x68E1,␉0x30001787, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
699 | ␉{ 0x68E1,␉0x300017AF, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
700 | ␉{ 0x68E1,␉0x3001148C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
701 | ␉{ 0x68E1,␉0x301417AF, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6350", kEulemur␉},␊ |
702 | ␉{ 0x68E1,␉0x3002148C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
703 | ␉{ 0x68E1,␉0x3003148C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450M", kEulemur␉},␊ |
704 | ␉{ 0x68E1,␉0x54501545, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
705 | ␉{ 0x68E1,␉0x5470174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470M", kEulemur␉},␊ |
706 | ␉{ 0x68E1,␉0x60001092, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
707 | ␉{ 0x68E1,␉0x60001682, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
708 | ␉{ 0x68E1,␉0x6000174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
709 | ␉{ 0x68E1,␉0x6230174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6350", kEulemur␉},␊ |
710 | ␉{ 0x68E1,␉0x6350174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6350", kEulemur␉},␊ |
711 | ␉{ 0x68E1,␉0xFDD01179, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5430M", kEulemur␉},␊ |
712 | ␊ |
713 | ␉{ 0x68E4,␉0x04821025, CHIP_FAMILY_CEDAR,␉␉"AMD Radeon HD 6370M", kNull␉␉},␊ |
714 | ␉{ 0x68E4,␉0x1426103C, CHIP_FAMILY_CEDAR,␉␉"AMD Radeon HD 6370M", kNull␉␉},␊ |
715 | ␉{ 0x68E4,␉0x1C921043, CHIP_FAMILY_CEDAR,␉␉"AMD Radeon HD 6370M", kNull␉␉},␊ |
716 | ␉{ 0x68E4,␉0x397917AA, CHIP_FAMILY_CEDAR,␉␉"AMD Radeon HD 6370M", kNull␉␉},␊ |
717 | ␉{ 0x68E4,␉0x84A01043, CHIP_FAMILY_CEDAR,␉␉"AMD Radeon HD 6370M", kNull␉␉},␊ |
718 | ␊ |
719 | ␉{ 0x68F9,␉0x010E1002, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
720 | ␉{ 0x68F9,␉0x03741043, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
721 | ␉{ 0x68F9,␉0x03CA1043, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
722 | ␉{ 0x68F9,␉0x174B3000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6230", kNull␉␉},␊ |
723 | ␉{ 0x68F9,␉0x174B6250, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6250", kNull␉␉},␊ |
724 | ␉{ 0x68F9,␉0x174B6290, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6290", kNull␉␉},␊ |
725 | ␉{ 0x68F9,␉0x20091787, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
726 | ␉{ 0x68F9,␉0x2126103C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6350", kNull␉␉},␊ |
727 | ␉{ 0x68F9,␉0x22911787, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
728 | ␉{ 0x68F9,␉0x22301462, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
729 | ␉{ 0x68F9,␉0x23401462, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
730 | ␉{ 0x68F9,␉0x30001787, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470", kNull␉␉},␊ |
731 | ␉{ 0x68F9,␉0x300017AF, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6250", kNull␉␉},␊ |
732 | ␉{ 0x68F9,␉0x3001148C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6250", kNull␉␉},␊ |
733 | ␉{ 0x68F9,␉0x30011787, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5530", kNull␉␉},␊ |
734 | ␉{ 0x68F9,␉0x3002148C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6290", kNull␉␉},␊ |
735 | ␉{ 0x68F9,␉0x30021787, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5490", kNull␉␉},␊ |
736 | ␉{ 0x68F9,␉0x300217AF, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6290", kNull␉␉},␊ |
737 | ␉{ 0x68F9,␉0x3003148C, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6230", kNull␉␉},␊ |
738 | ␉{ 0x68F9,␉0x301117AF, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470", kNull␉␉},␊ |
739 | ␉{ 0x68F9,␉0x301217AF, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5490", kNull␉␉},␊ |
740 | ␉{ 0x68F9,␉0x301317AF, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470", kNull␉␉},␊ |
741 | ␉{ 0x68F9,␉0x360317AA, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
742 | ␉{ 0x68F9,␉0x39971462, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
743 | ␉{ 0x68F9,␉0x3B311642, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6350A", kNull␉␉},␊ |
744 | ␉{ 0x68F9,␉0x5470174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5470", kNull␉␉},␊ |
745 | ␉{ 0x68F9,␉0x5490174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5490", kNull␉␉},␊ |
746 | ␉{ 0x68F9,␉0x5530174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5530", kNull␉␉},␊ |
747 | ␉{ 0x68F9,␉0xE145174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
748 | ␉{ 0x68F9,␉0xE153174B, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5450", kEulemur␉},␊ |
749 | ␊ |
750 | ␉/* Northen Islands */␊ |
751 | ␉{ 0x6718,␉0x0B001002, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970", kGibba␉␉},␊ |
752 | ␉{ 0x6718,␉0x20101458, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970", kGibba␉␉},␊ |
753 | ␉{ 0x6718,␉0x22001458, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970", kGibba␉␉},␊ |
754 | ␉{ 0x6718,␉0x23061787, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970", kGibba␉␉},␊ |
755 | ␉{ 0x6718,␉0x23701462, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970", kGibba␉␉},␊ |
756 | ␉{ 0x6718,␉0x31301682, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970", kGibba␉␉},␊ |
757 | ␉{ 0x6718,␉0x67181002, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970", kGibba␉␉},␊ |
758 | ␉{ 0x6718,␉0xE182174B, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970", kGibba␉␉},␊ |
759 | ␊ |
760 | ␉{ 0x6719,␉0x03D41043, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6950", kNull␉␉},␊ |
761 | ␉{ 0x6719,␉0x0B001002, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6950", kGibba␉␉},␊ |
762 | ␉{ 0x6719,␉0x186B174B, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6950", kNull␉␉},␊ |
763 | ␉{ 0x6719,␉0x20101787, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6950", kGibba␉␉},␊ |
764 | ␉{ 0x6719,␉0x21FD1458, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6950", kGibba␉␉},␊ |
765 | ␉{ 0x6719,␉0x23071787, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6950", kNull␉␉},␊ |
766 | ␊ |
767 | //␉{ 0x671D,␉0x0B2A1002, CHIP_FAMILY_ANTILLES,␉"AMD Radeon HD 6990", kNull␉␉},␊ |
768 | //␉{ 0x671D,␉0x1B2A1002, CHIP_FAMILY_ANTILLES,␉"AMD Radeon HD 6990", kNull␉␉},␊ |
769 | //␉{ 0x671D,␉0x31601682, CHIP_FAMILY_ANTILLES,␉"AMD Radeon HD 6990", kNull␉␉},␊ |
770 | ␊ |
771 | ␉{ 0x6720,␉0x04901028, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6970M", kElodea␉␉},␊ |
772 | ␉{ 0x6720,␉0x04BA1028, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6970M", kElodea␉␉},␊ |
773 | ␉{ 0x6720,␉0x51041558, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6990M", kElodea␉␉},␊ |
774 | ␊ |
775 | ␉{ 0x6738,␉0x00D01002, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
776 | ␉{ 0x6738,␉0x03AE1043, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
777 | ␉{ 0x6738,␉0x03C61043, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
778 | ␉{ 0x6738,␉0x174B174B, CHIP_FAMILY_BARTS,␉␉"Sapphire Radeon HD6870", kBulrushes␉}, // ?? kDuckweed ??␊ |
779 | ␉{ 0x6738,␉0x20101787, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
780 | ␉{ 0x6738,␉0x21FA1002, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
781 | ␉{ 0x6738,␉0x21FA1458, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
782 | ␉{ 0x6738,␉0x23051787, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
783 | ␉{ 0x6738,␉0x25101462, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
784 | ␉{ 0x6738,␉0x31031682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
785 | ␉{ 0x6738,␉0x31041682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
786 | ␉{ 0x6738,␉0x31071682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
787 | ␉{ 0x6738,␉0x31081682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉}, // ?? kJuncus ??␊ |
788 | ␉{ 0x6738,␉0x67381002, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
789 | ␉{ 0x6738,␉0xE178174B, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870", kDuckweed␉},␊ |
790 | ␊ |
791 | ␉{ 0x6739,␉0x03B41043, CHIP_FAMILY_BARTS,␉␉"ASUS EAH6850 DirectCU", kDuckweed␉},␊ |
792 | ␉{ 0x6739,␉0x174B174B, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
793 | ␉{ 0x6739,␉0x200F1787, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
794 | ␉{ 0x6739,␉0x21F81458, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kBulrushes␉},␊ |
795 | ␉{ 0x6739,␉0x23041787, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
796 | ␉{ 0x6739,␉0x24001462, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
797 | ␉{ 0x6739,␉0x24411462, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
798 | ␉{ 0x6739,␉0x30001787, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
799 | ␉{ 0x6739,␉0x31101682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
800 | ␉{ 0x6739,␉0x31131682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
801 | ␉{ 0x6739,␉0x31141682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
802 | ␉{ 0x6739,␉0x31171682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
803 | ␉{ 0x6739,␉0x67391002, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
804 | ␉{ 0x6739,␉0xAA881002, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
805 | ␉{ 0x6739,␉0xE174174B, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
806 | ␉{ 0x6739,␉0xE177174B, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
807 | ␉{ 0x6739,␉0xE183174B, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850", kDuckweed␉},␊ |
808 | ␊ |
809 | ␉{ 0x673E,␉0x174B174B, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6790", kNull␉␉},␊ |
810 | ␉{ 0x673E,␉0x23101787, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6790", kNull␉␉},␊ |
811 | ␉{ 0x673E,␉0x31701682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6790", kNull␉␉},␊ |
812 | ␉{ 0x673E,␉0x31721682, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6790", kNull␉␉},␊ |
813 | ␊ |
814 | ␉{ 0x6740,␉0x04A31028, CHIP_FAMILY_TURKS,␉␉"Dell HD 6770M", kNull␉␉}, // ??␊ |
815 | ␉{ 0x6740,␉0x1D121043, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6730M", kNull␉␉},␊ |
816 | ␉{ 0x6740,␉0x1631103C, CHIP_FAMILY_TURKS,␉␉"AMD FirePro M5950", kNull␉␉},␊ |
817 | ␉{ 0x6740,␉0x1657103C, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6770M", kNull␉␉},␊ |
818 | ␉{ 0x6740,␉0x165A103C, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6770M", kNull␉␉},␊ |
819 | ␉{ 0x6740,␉0x3388103C, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6770M", kNull␉␉},␊ |
820 | ␉{ 0x6740,␉0x3389103C, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6770M", kNull␉␉}, // ?? kHydrilla ??␊ |
821 | ␉{ 0x6740,␉0x6740106B, CHIP_FAMILY_TURKS,␉␉"Apple HD 6770M", kNull␉␉}, // ??␊ |
822 | ␊ |
823 | ␉{ 0x6741,␉0x050E1025, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6650M", kNull␉␉},␊ |
824 | ␉{ 0x6741,␉0x05131025, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6650M", kNull␉␉},␊ |
825 | ␉{ 0x6741,␉0x1646103C, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6750M", kNull␉␉},␊ |
826 | ␉{ 0x6741,␉0x1688103C, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 7690M", kNull␉␉},␊ |
827 | ␉{ 0x6741,␉0x358D103C, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6630M/6650M/6750M", kNull␉␉},␊ |
828 | ␉{ 0x6741,␉0x9080104D, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6630M", kNull␉␉},␊ |
829 | ␊ |
830 | ␉{ 0x6758,␉0x00121028, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6670", kBulrushes␉},␊ |
831 | ␉{ 0x6758,␉0x22051458, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6670", kBulrushes␉},␊ |
832 | ␉{ 0x6758,␉0x31811682, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6670", kBulrushes␉},␊ |
833 | ␉{ 0x6758,␉0x31831682, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6670", kBulrushes␉},␊ |
834 | ␉{ 0x6758,␉0x67581002, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6670", kBulrushes␉},␊ |
835 | ␉{ 0x6758,␉0xE1941746, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6670", kBulrushes␉},␊ |
836 | ␉{ 0x6758,␉0xE194174B, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6670", kBulrushes␉},␊ |
837 | ␊ |
838 | ␉{ 0x6759,␉0x20121787, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6570", kPithecia␉},␊ |
839 | ␉{ 0x6759,␉0xE193174B, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6570", kPithecia␉},␊ |
840 | ␊ |
841 | ␉{ 0x675F,␉0x23141787, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 5570", kNull␉␉},␊ |
842 | ␉{ 0x675F,␉0x254B1458, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 5570", kNull␉␉},␊ |
843 | ␉{ 0x675F,␉0x6510148C, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 5570", kNull␉␉},␊ |
844 | ␉{ 0x675F,␉0x6510174B, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 5570", kNull␉␉},␊ |
845 | ␊ |
846 | ␉{ 0x6760,␉0x00031179, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450M", kNull␉␉},␊ |
847 | ␉{ 0x6760,␉0x04C11028, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450M", kNull␉␉},␊ |
848 | ␉{ 0x6760,␉0x04CA1028, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450M", kNull␉␉},␊ |
849 | ␉{ 0x6760,␉0x04CC1028, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450M", kNull␉␉},␊ |
850 | ␉{ 0x6760,␉0x101C1043, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450M", kNull␉␉},␊ |
851 | ␉{ 0x6760,␉0x165A103C, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6470M", kNull␉␉},␊ |
852 | ␉{ 0x6760,␉0x167D103C, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6470M", kNull␉␉},␊ |
853 | ␉{ 0x6760,␉0x1CB21043, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6470M", kNull␉␉},␊ |
854 | //␉{ 0x6760,␉0x85171043, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD ?????", kNull␉␉},␊ |
855 | ␊ |
856 | ␉{ 0x6779,␉0x00001002, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
857 | ␉{ 0x6779,␉0x03DA1043, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
858 | ␉{ 0x6779,␉0x03DC1043, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
859 | ␉{ 0x6779,␉0x20121787, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
860 | ␉{ 0x6779,␉0x21201028, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
861 | ␉{ 0x6779,␉0x21251462, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
862 | ␉{ 0x6779,␉0x22031458, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
863 | ␉{ 0x6779,␉0x22041458, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
864 | ␉{ 0x6779,␉0x23111787, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
865 | ␉{ 0x6779,␉0x32001682, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
866 | ␉{ 0x6779,␉0x64501092, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
867 | ␉{ 0x6779,␉0x909D1B0A, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
868 | ␉{ 0x6779,␉0xE164174B, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kIpomoea␉},␊ |
869 | ␉{ 0x6779,␉0xE180174B, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kPithecia␉},␊ |
870 | ␉{ 0x6779,␉0xE190174B, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
871 | ␉{ 0x6779,␉0xE199174B, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450", kBulrushes␉},␊ |
872 | ␊ |
873 | ␉/* Southen Islands */␊ |
874 | ␊ |
875 | ␉{ 0x6798,␉0x04181043, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
876 | ␉{ 0x6798,␉0x04201043, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
877 | ␉{ 0x6798,␉0x0B001002, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
878 | ␉{ 0x6798,␉0x201C1787, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
879 | ␉{ 0x6798,␉0x23171787, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
880 | ␉{ 0x6798,␉0x254D1458, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
881 | ␉{ 0x6798,␉0x27701462, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
882 | ␉{ 0x6798,␉0x32101682, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
883 | ␉{ 0x6798,␉0x32111682, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
884 | ␉{ 0x6798,␉0x32121682, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
885 | ␉{ 0x6798,␉0x32131682, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
886 | ␉{ 0x6798,␉0xE208174B, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970", kNull␉␉},␊ |
887 | ␊ |
888 | ␉{ 0x679A,␉0x0B001002, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7950", kNull␉␉},␊ |
889 | ␉{ 0x679A,␉0x23161787, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7950", kNull␉␉},␊ |
890 | ␉{ 0x679A,␉0x254C1458, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7950", kNull␉␉},␊ |
891 | ␉{ 0x679A,␉0x27601462, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7950", kNull␉␉},␊ |
892 | ␉{ 0x679A,␉0x32211682, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7950", kNull␉␉},␊ |
893 | ␉{ 0x679A,␉0xE207174B, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7950", kNull␉␉},␊ |
894 | ␊ |
895 | ␉{ 0x6818,␉0x042F1043, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD 7870", kNull␉␉},␊ |
896 | ␉{ 0x6818,␉0xE217174B, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD 7870", kNull␉␉},␊ |
897 | ␉{ 0x6819,␉0x23201787, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD 7800 Series", kNull␉␉},␊ |
898 | ␊ |
899 | //␉{ 0x683D,␉0x04211043, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7770", kNull␉␉},␊ |
900 | //␉{ 0x683D,␉0x25561458, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7770", kNull␉␉},␊ |
901 | //␉{ 0x683D,␉0x27101462, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7770", kNull␉␉},␊ |
902 | //␉{ 0x683D,␉0x2B301002, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7770", kNull␉␉},␊ |
903 | //␉{ 0x683D,␉0x32331682, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7770", kNull␉␉},␊ |
904 | //␉{ 0x683D,␉0xE214174B, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7770", kNull␉␉},␊ |
905 | ␊ |
906 | //␉{ 0x683F,␉0x200B1787, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7750", kNull␉␉},␊ |
907 | //␉{ 0x683F,␉0x27921462, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7750", kNull␉␉},␊ |
908 | //␉{ 0x683F,␉0xE213174B, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7750", kNull␉␉},␊ |
909 | ␊ |
910 | ␉/*old series*/␊ |
911 | ␊ |
912 | ␉{ 0x5D48,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Mobile ", kNull␉␉ },␊ |
913 | ␉{ 0x5D49,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Mobile ", kNull␉␉ },␊ |
914 | ␉{ 0x5D4A,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Mobile ", kNull␉␉ },␊ |
915 | ␊ |
916 | ␉{ 0x5D4C,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
917 | ␉{ 0x5D4D,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
918 | ␉{ 0x5D4E,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
919 | ␉{ 0x5D4F,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
920 | ␉{ 0x5D50,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
921 | ␊ |
922 | ␉{ 0x5D52,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
923 | ␊ |
924 | ␉{ 0x5D57,␉0x00000000, CHIP_FAMILY_R420,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
925 | ␊ |
926 | ␉{ 0x5E48,␉0x00000000, CHIP_FAMILY_RV410,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
927 | ␊ |
928 | ␉{ 0x5E4A,␉0x00000000, CHIP_FAMILY_RV410,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
929 | ␉{ 0x5E4B,␉0x00000000, CHIP_FAMILY_RV410,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
930 | ␉{ 0x5E4C,␉0x00000000, CHIP_FAMILY_RV410,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
931 | ␉{ 0x5E4D,␉0x00000000, CHIP_FAMILY_RV410,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
932 | ␊ |
933 | ␉{ 0x5E4F,␉0x00000000, CHIP_FAMILY_RV410,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
934 | ␊ |
935 | ␉{ 0x7100,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
936 | ␉{ 0x7101,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Mobile ", kNull␉␉ },␊ |
937 | ␉{ 0x7102,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Mobile ", kNull␉␉ },␊ |
938 | ␉{ 0x7103,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Mobile ", kNull␉␉ },␊ |
939 | ␉{ 0x7104,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
940 | ␉{ 0x7105,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
941 | ␉{ 0x7106,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Mobile ", kNull␉␉ },␊ |
942 | ␉{ 0x7108,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
943 | ␉{ 0x7109,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
944 | ␉{ 0x710A,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
945 | ␉{ 0x710B,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
946 | ␉{ 0x710C,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
947 | ␊ |
948 | ␉{ 0x710E,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
949 | ␉{ 0x710F,␉0x00000000, CHIP_FAMILY_R520,␉␉"ATI Radeon HD Desktop ", kNull␉␉ },␊ |
950 | ␊ |
951 | ␉{ 0x7140,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
952 | ␉{ 0x7141,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
953 | ␉{ 0x7142,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
954 | ␉{ 0x7143,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
955 | ␉{ 0x7144,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
956 | ␉{ 0x7145,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
957 | ␉{ 0x7146,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
958 | ␉{ 0x7147,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
959 | ␊ |
960 | ␉{ 0x7149,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
961 | ␉{ 0x714A,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
962 | ␉{ 0x714B,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
963 | ␉{ 0x714C,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
964 | ␉{ 0x714D,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
965 | ␉{ 0x714E,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
966 | ␉{ 0x714F,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
967 | ␊ |
968 | ␉{ 0x7151,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
969 | ␉{ 0x7152,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
970 | ␉{ 0x7153,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
971 | ␊ |
972 | ␉{ 0x715E,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
973 | ␉{ 0x715F,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
974 | ␊ |
975 | ␉{ 0x7180,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
976 | ␉{ 0x7181,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
977 | ␉{ 0x7183,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
978 | ␊ |
979 | ␉{ 0x7186,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
980 | ␉{ 0x7187,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
981 | ␉{ 0x7188,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
982 | ␊ |
983 | ␉{ 0x718A,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
984 | ␉{ 0x718B,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
985 | ␉{ 0x718C,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
986 | ␉{ 0x718D,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
987 | ␊ |
988 | ␉{ 0x718F,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
989 | ␊ |
990 | ␉{ 0x7193,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
991 | ␊ |
992 | ␉{ 0x7196,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Mobile ", kCaretta␉␉ },␊ |
993 | ␊ |
994 | ␉{ 0x719B,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
995 | ␊ |
996 | ␉{ 0x719F,␉0x00000000, CHIP_FAMILY_RV515,␉␉"ATI Radeon HD Desktop ", kCaretta␉␉ },␊ |
997 | ␊ |
998 | ␉{ 0x71C0,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
999 | ␉{ 0x71C1,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1000 | ␉{ 0x71C2,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1001 | ␉{ 0x71C3,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1002 | ␉{ 0x71C4,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Mobile ", kWormy␉␉ },␊ |
1003 | ␊ |
1004 | ␉{ 0x71C5,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Mobile ", kWormy␉␉ },␊ |
1005 | ␉{ 0x71C6,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1006 | ␉{ 0x71C7,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1007 | ␊ |
1008 | ␉{ 0x71CD,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1009 | ␉{ 0x71CE,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1010 | ␊ |
1011 | ␉{ 0x71D2,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1012 | ␊ |
1013 | ␉{ 0x71D4,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Mobile ", kWormy␉␉ },␊ |
1014 | ␉{ 0x71D5,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Mobile ", kWormy␉␉ },␊ |
1015 | ␉{ 0x71D6,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Mobile ", kWormy␉␉ },␊ |
1016 | ␊ |
1017 | ␉{ 0x71DA,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1018 | ␊ |
1019 | ␉{ 0x71DE,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Mobile ", kWormy␉␉ },␊ |
1020 | ␊ |
1021 | ␉{ 0x7200,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Desktop ", kWormy␉␉ },␊ |
1022 | ␊ |
1023 | ␉{ 0x7210,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Mobile ", kWormy␉␉ },␊ |
1024 | ␉{ 0x7211,␉0x00000000, CHIP_FAMILY_RV530,␉␉"ATI Radeon HD Mobile ", kWormy␉␉ },␊ |
1025 | ␊ |
1026 | ␉{ 0x7240,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1027 | ␊ |
1028 | ␉{ 0x7243,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1029 | ␉{ 0x7244,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1030 | ␉{ 0x7245,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1031 | ␉{ 0x7246,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1032 | ␉{ 0x7247,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1033 | ␉{ 0x7248,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1034 | ␉{ 0x7249,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1035 | ␉{ 0x724A,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1036 | ␉{ 0x724B,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1037 | ␉{ 0x724C,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1038 | ␉{ 0x724D,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1039 | ␉{ 0x724E,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1040 | ␉{ 0x724F,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1041 | ␊ |
1042 | ␉{ 0x7280,␉0x00000000, CHIP_FAMILY_RV570,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1043 | ␉{ 0x7281,␉0x00000000, CHIP_FAMILY_RV560,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1044 | ␉{ 0x7283,␉0x00000000, CHIP_FAMILY_RV560,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1045 | ␉{ 0x7284,␉0x00000000, CHIP_FAMILY_R580,␉␉"ATI Radeon HD Mobile ", kAlopias␉␉ },␊ |
1046 | ␊ |
1047 | ␉{ 0x7287,␉0x00000000, CHIP_FAMILY_RV560,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1048 | ␉{ 0x7288,␉0x00000000, CHIP_FAMILY_RV570,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1049 | ␉{ 0x7289,␉0x00000000, CHIP_FAMILY_RV570,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1050 | ␊ |
1051 | ␉{ 0x728B,␉0x00000000, CHIP_FAMILY_RV570,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1052 | ␉{ 0x728C,␉0x00000000, CHIP_FAMILY_RV570,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1053 | ␊ |
1054 | ␉{ 0x7290,␉0x00000000, CHIP_FAMILY_RV560,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1055 | ␉{ 0x7291,␉0x00000000, CHIP_FAMILY_RV560,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1056 | ␊ |
1057 | ␉{ 0x7293,␉0x00000000, CHIP_FAMILY_RV560,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1058 | ␊ |
1059 | ␉{ 0x7297,␉0x00000000, CHIP_FAMILY_RV560,␉␉"ATI Radeon HD Desktop ", kAlopias␉␉ },␊ |
1060 | ␊ |
1061 | ␉/* IGP */␊ |
1062 | ␊ |
1063 | ␉{ 0x791E,␉0x00000000, CHIP_FAMILY_RS690,␉␉"ATI Radeon IGP ", kNull␉␉ },␊ |
1064 | ␉{ 0x791F,␉0x00000000, CHIP_FAMILY_RS690,␉␉"ATI Radeon IGP ", kNull␉␉},␊ |
1065 | ␉{ 0x796C,␉0x00000000, CHIP_FAMILY_RS740,␉␉"ATI Radeon IGP ", kNull␉␉ },␊ |
1066 | ␉{ 0x796D,␉0x00000000, CHIP_FAMILY_RS740,␉␉"ATI Radeon IGP ", kNull␉␉},␊ |
1067 | ␉{ 0x796E,␉0x00000000, CHIP_FAMILY_RS740,␉␉"ATI Radeon IGP ", kNull␉␉},␊ |
1068 | ␉{ 0x796F,␉0x00000000, CHIP_FAMILY_RS740,␉␉"ATI Radeon HD ", kNull␉␉ },␊ |
1069 | ␊ |
1070 | ␉/* standard/default models */␊ |
1071 | ␊ |
1072 | ␉{ 0x9400,␉0x00000000, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 XT", kNull␉␉},␊ |
1073 | ␉{ 0x9401,␉0x00000000, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 GT", kNull␉␉},␊ |
1074 | ␉{ 0x9402,␉0x00000000, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 GT", kNull␉␉},␊ |
1075 | ␉{ 0x9403,␉0x00000000, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 GT", kNull␉␉},␊ |
1076 | ␉{ 0x9405,␉0x00000000, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 GT", kNull␉␉},␊ |
1077 | ␉{ 0x940A,␉0x00000000, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 GT", kNull␉␉},␊ |
1078 | ␉{ 0x940B,␉0x00000000, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 GT", kNull␉␉},␊ |
1079 | ␉{ 0x940F,␉0x00000000, CHIP_FAMILY_R600,␉␉"ATI Radeon HD 2900 GT", kNull␉␉},␊ |
1080 | ␊ |
1081 | ␉{ 0x9440,␉0x00000000, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4800 Series",␉␉␉kMotmot␉␉},␊ |
1082 | ␉{ 0x9441,␉0x00000000, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4870 X2", kMotmot␉␉},␊ |
1083 | ␉{ 0x9442,␉0x00000000, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4800 Series",␉␉␉kMotmot␉␉},␊ |
1084 | ␉{ 0x9443,␉0x00000000, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4850 X2", kMotmot␉␉},␊ |
1085 | ␉{ 0x944A,␉0x00000000, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4800 Series",␉␉␉kMotmot␉␉},␊ |
1086 | ␉{ 0x944C,␉0x00000000, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4800 Series",␉␉␉kMotmot␉␉},␊ |
1087 | ␉{ 0x944E,␉0x00000000, CHIP_FAMILY_RV770,␉␉"ATI Radeon HD 4700 Series",␉␉␉kMotmot␉␉},␊ |
1088 | ␊ |
1089 | ␉{ 0x9450,␉0x00000000, CHIP_FAMILY_RV770,␉␉"AMD FireStream 9270", kMotmot␉␉},␊ |
1090 | ␉{ 0x9452,␉0x00000000, CHIP_FAMILY_RV770,␉␉"AMD FireStream 9250", kMotmot␉␉},␊ |
1091 | ␊ |
1092 | ␉{ 0x9460,␉0x00000000, CHIP_FAMILY_RV790,␉␉"ATI Radeon HD 4800 Series",␉␉␉kMotmot␉␉},␊ |
1093 | ␉{ 0x9462,␉0x00000000, CHIP_FAMILY_RV790,␉␉"ATI Radeon HD 4800 Series",␉␉␉kMotmot␉␉},␊ |
1094 | ␊ |
1095 | ␉{ 0x9480,␉0x00000000, CHIP_FAMILY_RV730,␉␉"ATI Mobility Radeon HD 4650 Series", kGliff␉␉},␊ |
1096 | ␊ |
1097 | ␉{ 0x9488,␉0x00000000, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4650 Series",␉␉␉kGliff␉},␊ |
1098 | ␊ |
1099 | ␉{ 0x9490,␉0x00000000, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600 Series",␉␉␉kFlicker␉},␊ |
1100 | ␊ |
1101 | ␉{ 0x9498,␉0x00000000, CHIP_FAMILY_RV730,␉␉"ATI Radeon HD 4600 Series",␉␉␉kFlicker␉},␊ |
1102 | ␊ |
1103 | ␉{ 0x94B3,␉0x00000000, CHIP_FAMILY_RV740,␉␉"ATI Radeon HD 4770", kFlicker␉},␊ |
1104 | ␉{ 0x94B4,␉0x00000000, CHIP_FAMILY_RV740,␉␉"ATI Radeon HD 4700 Series",␉␉␉kFlicker␉},␊ |
1105 | ␉{ 0x94B5,␉0x00000000, CHIP_FAMILY_RV740,␉␉"ATI Radeon HD 4770", kFlicker␉},␊ |
1106 | ␊ |
1107 | ␉{ 0x94C1,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1108 | ␊ |
1109 | ␉{ 0x94C3,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1110 | ␊ |
1111 | ␉{ 0x94C4,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1112 | ␉{ 0x94C5,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1113 | ␉{ 0x94C6,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1114 | ␉{ 0x94C7,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2350", kIago␉␉},␊ |
1115 | ␉{ 0x94C8,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1116 | ␉{ 0x94C9,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1117 | ␊ |
1118 | ␉{ 0x94CB,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1119 | ␉{ 0x94CC,␉0x00000000, CHIP_FAMILY_RV610,␉␉"ATI Radeon HD 2400 Series", kIago␉␉},␊ |
1120 | ␊ |
1121 | ␉{ 0x9500,␉0x00000000, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3800 Series", kMegalodon␉},␊ |
1122 | ␉{ 0x9501,␉0x00000000, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3800 Series", kMegalodon␉},␊ |
1123 | ␊ |
1124 | ␉{ 0x9505,␉0x00000000, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3800 Series", kMegalodon␉},␊ |
1125 | ␊ |
1126 | ␉{ 0x9507,␉0x00000000, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3850", kMegalodon␉},␊ |
1127 | ␊ |
1128 | ␉{ 0x950F,␉0x00000000, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3870 X2", kMegalodon␉},␊ |
1129 | ␊ |
1130 | ␉{ 0x9511,␉0x00000000, CHIP_FAMILY_RV670,␉␉"ATI Radeon HD 3850 X2", kMegalodon␉},␊ |
1131 | ␊ |
1132 | ␉{ 0x9513,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3850 X2", kMegalodon␉},␊ |
1133 | ␊ |
1134 | ␉{ 0x9519,␉0x00000000, CHIP_FAMILY_RV670,␉␉"AMD FireStream 9170", kMegalodon␉},␊ |
1135 | ␊ |
1136 | ␉{ 0x9540,␉0x00000000, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4550", kNull␉␉},␊ |
1137 | ␉{ 0x954F,␉0x00000000, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500 Series",␉␉kNull␉␉},␊ |
1138 | ␊ |
1139 | ␉{ 0x9552,␉0x00000000, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4300/4500 Series",␉␉kShrike␉␉},␊ |
1140 | ␉{ 0x9553,␉0x00000000, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD 4500M/5100M Series", kShrike ␉},␊ |
1141 | ␊ |
1142 | ␉{ 0x9555,␉0x00000000, CHIP_FAMILY_RV710,␉␉"ATI Radeon HD4300/HD4500 series",␉␉kNull␉␉}, ␊ |
1143 | ␊ |
1144 | ␉{ 0x9581,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3600 Series",␉␉␉kNull␉␉},␊ |
1145 | ␊ |
1146 | ␉{ 0x9583,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3600 Series",␉␉␉kNull␉␉},␊ |
1147 | ␊ |
1148 | ␉{ 0x9588,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600 XT", kNull␉␉},␊ |
1149 | ␉{ 0x9589,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3610 Series",␉␉␉kNull␉␉},␊ |
1150 | ␉{ 0x958A,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600 X2 Series",␉␉␉kLamna␉␉},␊ |
1151 | ␉{ 0x958B,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600 X2 Series",␉␉␉kLamna␉␉},␊ |
1152 | ␉{ 0x958C,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600 X2 Series",␉␉␉kLamna␉␉},␊ |
1153 | ␉{ 0x958D,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600 X2 Series",␉␉␉kLamna␉␉},␊ |
1154 | ␉{ 0x958E,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 2600 X2 Series",␉␉␉kLamna␉␉},␊ |
1155 | ␊ |
1156 | ␉{ 0x9591,␉0x00000000, CHIP_FAMILY_RV635,␉␉"ATI Radeon HD 3600 Series",␉␉␉kNull␉␉},␊ |
1157 | ␊ |
1158 | ␉{ 0x9598,␉0x00000000, CHIP_FAMILY_RV630,␉␉"ATI Radeon HD 3600 Series",␉␉␉kMegalodon␉},␊ |
1159 | ␊ |
1160 | ␉{ 0x95C0,␉0x00000000, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 3400 Series",␉␉␉kIago␉␉},␊ |
1161 | ␊ |
1162 | ␉{ 0x95C5,␉0x00000000, CHIP_FAMILY_RV620,␉␉"ATI Radeon HD 3400 Series",␉␉␉kIago␉␉},␊ |
1163 | ␊ |
1164 | ␉/* IGP */␊ |
1165 | ␉{ 0x9610,␉0x00000000, CHIP_FAMILY_RS780,␉␉"ATI Radeon HD 3200 Graphics",␉␉␉kNull␉␉},␊ |
1166 | ␉{ 0x9611,␉0x00000000, CHIP_FAMILY_RS780,␉␉"ATI Radeon 3100 Graphics", kNull␉␉},␊ |
1167 | ␊ |
1168 | ␉{ 0x9614,␉0x00000000, CHIP_FAMILY_RS780,␉␉"ATI Radeon HD 3300 Graphics",␉␉␉kNull␉␉},␊ |
1169 | ␊ |
1170 | ␉{ 0x9616,␉0x00000000, CHIP_FAMILY_RS780,␉␉"ATI Radeon 3000 Graphics", kNull␉␉},␊ |
1171 | ␊ |
1172 | ␉{ 0x9710,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 4200 Series",␉␉␉kNull␉␉},␊ |
1173 | ␊ |
1174 | ␉{ 0x9714,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 4290 Series",␉␉␉kNull␉␉},␊ |
1175 | ␉{ 0x9715,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 4250 Series",␉␉␉kNull␉␉},␊ |
1176 | ␊ |
1177 | ␉{ 0x9723,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 5450 Series",␉␉␉kNull␉␉},␊ |
1178 | ␊ |
1179 | ␉{ 0x9802,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 6310 Series",␉␉␉kNull␉␉},␊ |
1180 | ␉{ 0x9803,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 6310 Series",␉␉␉kNull␉␉},␊ |
1181 | ␉{ 0x9804,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 6310 Series",␉␉␉kNull␉␉},␊ |
1182 | ␉{ 0x9805,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 6250 Series",␉␉␉kNull␉␉},␊ |
1183 | ␉{ 0x9806,␉0x00000000, CHIP_FAMILY_RS880,␉␉"ATI Radeon HD 6320 Series",␉␉␉kNull␉␉},␊ |
1184 | ␊ |
1185 | ␉/* Evergreen */␊ |
1186 | ␉{ 0x688D,␉0x00000000, CHIP_FAMILY_CYPRESS,␉"AMD FireStream 9350 Series",␉␉␉kUakari␉␉},␊ |
1187 | ␊ |
1188 | ␉{ 0x6898,␉0x00000000, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5800 Series",␉␉␉kUakari␉␉},␊ |
1189 | ␉{ 0x6899,␉0x00000000, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5800 Series",␉␉␉kUakari␉␉},␊ |
1190 | ␊ |
1191 | ␉{ 0x689C,␉0x00000000, CHIP_FAMILY_HEMLOCK,␉"ATI Radeon HD 5900 Series",␉␉␉kUakari␉␉},␊ |
1192 | ␊ |
1193 | ␉{ 0x689E,␉0x00000000, CHIP_FAMILY_CYPRESS,␉"ATI Radeon HD 5800 Series",␉␉␉kUakari␉␉},␊ |
1194 | ␊ |
1195 | ␉{ 0x68A0,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"ATI Mobility Radeon HD 5800 Series", kNomascus␉}, // CHIP_FAMILY_BROADWAY ??␊ |
1196 | ␉{ 0x68A1,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"ATI Mobility Radeon HD 5800 Series", kNomascus␉}, // CHIP_FAMILY_BROADWAY ??␊ |
1197 | ␊ |
1198 | ␉{ 0x68A8,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"AMD Mobility Radeon HD 6800 Series", kUakari␉␉}, ␊ |
1199 | ␉{ 0x68A9,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"ATI FirePro V5800 (FireGL)",␉␉␉kNull␉␉},␊ |
1200 | ␊ |
1201 | ␊ |
1202 | ␉{ 0x68B0,␉0x00000000, CHIP_FAMILY_CYPRESS,␉"ATI Mobility Radeon HD 5800 Series", kNull␉␉}, // CHIP_FAMILY_BROADWAY ??␊ |
1203 | ␉{ 0x68B1,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5770 Series",␉␉␉kVervet␉␉},␊ |
1204 | ␊ |
1205 | ␉{ 0x68B8,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5700 Series",␉␉␉kVervet␉␉},␊ |
1206 | ␉{ 0x68B9,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5600 Series",␉␉␉kVervet␉␉},␊ |
1207 | ␉{ 0x68BA,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 6700 Series",␉␉␉kVervet␉␉},␊ |
1208 | ␊ |
1209 | ␉{ 0x68BE,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"ATI Radeon HD 5700 Series",␉␉␉kVervet␉␉},␊ |
1210 | ␉{ 0x68BF,␉0x00000000, CHIP_FAMILY_JUNIPER,␉"AMD Radeon HD 6700 Series",␉␉␉kVervet␉␉},␊ |
1211 | ␊ |
1212 | ␉{ 0x68C0,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"AMD Radeon HD 6570M/5700 Series",␉␉kNull␉␉},␊ |
1213 | ␉{ 0x68C1,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"AMD Radeon HD 6500M/5600/5700 Series", kNull␉␉},␊ |
1214 | ␉{ 0x68C8,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5650 Series",␉␉␉kVervet␉␉},␉␊ |
1215 | ␉{ 0x68C9,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"ATI FirePro V3800 (FireGL)",␉␉␉kNull␉␉},␊ |
1216 | ␊ |
1217 | ␉{ 0x68D8,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5600 Series",␉␉␉kBaboon␉␉},␊ |
1218 | ␉{ 0x68D9,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5500/5600 Series",␉␉kBaboon␉␉},␊ |
1219 | ␉{ 0x68DA,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD 5500 Series",␉␉␉kBaboon␉␉},␊ |
1220 | ␊ |
1221 | //␉{ 0x68DE,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"ATI Radeon HD ??? Series",␉␉␉kNull␉␉},␊ |
1222 | ␊ |
1223 | ␊ |
1224 | ␉{ 0x68E0,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5400 Series", kEulemur␉},␊ |
1225 | ␉{ 0x68E1,␉0x00000000, CHIP_FAMILY_REDWOOD,␉"ATI Mobility Radeon HD 5400 Series", kEulemur␉},␊ |
1226 | ␊ |
1227 | ␉{ 0x68E4,␉0x00000000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6300M Series",␉␉␉kNull␉␉},␊ |
1228 | ␉{ 0x68E5,␉0x00000000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 6300M Series",␉␉␉kNull␉␉},␊ |
1229 | ␊ |
1230 | //␉{ 0x68E8,␉0x00000000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD ??? Series",␉␉␉kNull␉␉},␊ |
1231 | //␉{ 0x68E9,␉0x00000000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD ??? Series",␉␉␉kNull␉␉},␊ |
1232 | ␊ |
1233 | //␉{ 0x68F8,␉0x00000000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD ??? Series",␉␉␉kNull␉␉},␊ |
1234 | ␉{ 0x68F9,␉0x00000000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 5400 Series",␉␉␉kNull␉␉},␊ |
1235 | ␉{ 0x68FA,␉0x00000000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD 7300 Series",␉␉␉kNull␉␉},␊ |
1236 | ␊ |
1237 | //␉{ 0x68FE,␉0x00000000, CHIP_FAMILY_CEDAR,␉␉"ATI Radeon HD ??? Series",␉␉␉kNull␉␉},␊ |
1238 | ␊ |
1239 | ␊ |
1240 | ␉/* Northen Islands */␊ |
1241 | ␉{ 0x6718,␉0x00000000, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970 Series",␉␉␉kNull␉␉},␊ |
1242 | ␉{ 0x6719,␉0x00000000, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6950 Series",␉␉␉kGibba␉␉},␊ |
1243 | ␊ |
1244 | ␉{ 0x671C,␉0x00000000, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6970 Series",␉␉␉kLotus␉␉},␊ |
1245 | ␉{ 0x671D,␉0x00000000, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6900 Series",␉␉␉kNull␉␉},␊ |
1246 | ␊ |
1247 | ␉{ 0x671F,␉0x00000000, CHIP_FAMILY_CAYMAN,␉␉"AMD Radeon HD 6900 Series",␉␉␉kNull␉␉},␊ |
1248 | ␊ |
1249 | ␉{ 0x6720,␉0x00000000, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6900M Series",␉␉␉kNull␉␉},␊ |
1250 | ␊ |
1251 | ␉{ 0x6738,␉0x00000000, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6870 Series",␉␉␉kDuckweed␉},␊ |
1252 | ␉{ 0x6739,␉0x00000000, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6850 Series",␉␉␉kDuckweed␉},␊ |
1253 | ␊ |
1254 | ␉{ 0x673E,␉0x00000000, CHIP_FAMILY_BARTS,␉␉"AMD Radeon HD 6790 Series",␉␉␉kNull␉␉},␊ |
1255 | ␊ |
1256 | ␉{ 0x6740,␉0x00000000, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6700M Series",␉␉␉kNull␉␉},␊ |
1257 | ␉{ 0x6741,␉0x00000000, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6600M/6700M Series",␉␉kNull␉␉},␊ |
1258 | ␊ |
1259 | ␉{ 0x6750,␉0x00000000, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6600A Series",␉␉␉kNull␉␉},␊ |
1260 | ␊ |
1261 | ␉{ 0x6758,␉0x00000000, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6670 Series",␉␉␉kBulrushes␉},␊ |
1262 | ␉{ 0x6759,␉0x00000000, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 6570/7570 Series",␉␉kNull␉␉},␊ |
1263 | ␊ |
1264 | ␉{ 0x675D,␉0x00000000, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 7500 Series",␉␉␉kNull␉␉},␊ |
1265 | ␊ |
1266 | ␉{ 0x675F,␉0x00000000, CHIP_FAMILY_TURKS,␉␉"AMD Radeon HD 5500 Series",␉␉␉kNull␉␉},␊ |
1267 | ␉{ 0x6760,␉0x00000000, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6400M Series",␉␉␉kNull␉␉},␊ |
1268 | ␉{ 0x6761,␉0x00000000, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6430M Series",␉␉␉kNull␉␉},␊ |
1269 | ␊ |
1270 | ␉{ 0x6770,␉0x00000000, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6400 Series",␉␉␉kNull␉␉},␊ |
1271 | ␊ |
1272 | ␉{ 0x6772,␉0x00000000, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 7400A Series",␉␉␉kNull␉␉},␊ |
1273 | ␊ |
1274 | ␉{ 0x6778,␉0x00000000, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 7000 Series",␉␉␉kNull␉␉},␊ |
1275 | ␉{ 0x6779,␉0x00000000, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 6450 Series",␉␉␉kBulrushes␉},␊ |
1276 | ␊ |
1277 | ␉{ 0x677B,␉0x00000000, CHIP_FAMILY_CAICOS,␉␉"AMD Radeon HD 7400 Series",␉␉␉kNull␉␉},␊ |
1278 | ␊ |
1279 | ␉/* Southen Islands */␊ |
1280 | ␊ |
1281 | //␉{ 0x6780,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1282 | ␊ |
1283 | //␉{ 0x6784,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1284 | ␊ |
1285 | //␉{ 0x6788,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1286 | ␊ |
1287 | //␉{ 0x678A,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1288 | ␊ |
1289 | //␉{ 0x6790,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1290 | ␊ |
1291 | ␉{ 0x6798,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7970 Series", kNull␉␉},␊ |
1292 | ␉{ 0x6799,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7990 Series", kNull␉␉},␊ |
1293 | ␉{ 0x679A,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD 7950 Series", kNull␉␉},␊ |
1294 | ␊ |
1295 | //␉{ 0x679E,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1296 | //␉{ 0x679F,␉0x00000000, CHIP_FAMILY_TAHITI,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1297 | ␊ |
1298 | //␉{ 0x6800,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1299 | //␉{ 0x6801,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1300 | //␉{ 0x6802,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1301 | ␊ |
1302 | //␉{ 0x6808,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1303 | //␉{ 0x6809,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1304 | //␉{ 0x6810,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1305 | ␊ |
1306 | ␉{ 0x6818,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD 7800 Series", kNull␉␉},␊ |
1307 | ␉{ 0x6819,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD 7800 Series", kNull␉␉},␊ |
1308 | //␉{ 0x6820,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7800M Series", kNull␉␉},␊ |
1309 | //␉{ 0x6821,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7800M Series", kNull␉␉},␊ |
1310 | ␊ |
1311 | //␉{ 0x6823,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1312 | //␉{ 0x6824,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7700M Series", kNull␉␉},␊ |
1313 | //␉{ 0x6825,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1314 | //␉{ 0x6826,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1315 | //␉{ 0x6827,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1316 | //␉{ 0x6828,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1317 | //␉{ 0x6829,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1318 | ␊ |
1319 | //␉{ 0x682D,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1320 | ␊ |
1321 | //␉{ 0x682F,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ???M Series", kNull␉␉},␊ |
1322 | ␊ |
1323 | //␉{ 0x6830,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1324 | //␉{ 0x6831,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1325 | ␊ |
1326 | //␉{ 0x6837,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1327 | //␉{ 0x6838,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1328 | //␉{ 0x6839,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1329 | ␊ |
1330 | //␉{ 0x683B,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1331 | ␊ |
1332 | //␉{ 0x683D,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7700 Series", kNull␉␉},␊ |
1333 | ␊ |
1334 | //␉{ 0x683F,␉0x00000000, CHIP_FAMILY_VERDE,␉␉"AMD Radeon HD 7700 Series", kNull␉␉},␊ |
1335 | ␊ |
1336 | //␉{ 0x6840,␉0x00000000, CHIP_FAMILY_THAMES,␉␉"AMD Radeon HD 7600M Series", kNull␉␉},␊ |
1337 | //␉{ 0x6841,␉0x00000000, CHIP_FAMILY_THAMES,␉␉"AMD Radeon HD 7850 Series", kNull␉␉},␊ |
1338 | //␉{ 0x6842,␉0x00000000, CHIP_FAMILY_THAMES,␉␉"AMD Radeon HD 7000M Series", kNull␉␉},␊ |
1339 | //␉{ 0x6843,␉0x00000000, CHIP_FAMILY_THAMES,␉␉"AMD Radeon HD 7670M Series", kNull␉␉},␊ |
1340 | ␊ |
1341 | //␉{ 0x684C,␉0x00000000, CHIP_FAMILY_PITCAIRN,␉"AMD Radeon HD ??? Series", kNull␉␉},␊ |
1342 | ␊ |
1343 | ␉{ 0x0000,␉0x00000000, CHIP_FAMILY_UNKNOW,␉␉NULL,␉␉␉␉␉␉kNull␉␉}␊ |
1344 | };␊ |
1345 | ␊ |
1346 | typedef struct {␊ |
1347 | ␉struct DevPropDevice␉*device;␊ |
1348 | ␉radeon_card_info_t␉␉*info;␊ |
1349 | ␉pci_dt_t␉␉␉␉*pci_dev;␊ |
1350 | ␉uint8_t␉␉␉␉␉*fb;␊ |
1351 | ␉uint8_t␉␉␉␉␉*mmio;␊ |
1352 | ␉uint8_t␉␉␉␉␉*io;␊ |
1353 | ␉uint8_t␉␉␉␉␉*rom;␊ |
1354 | ␉uint32_t␉␉␉␉rom_size;␊ |
1355 | ␉uint32_t␉␉␉␉vram_size;␊ |
1356 | ␉const char␉␉␉␉*cfg_name;␊ |
1357 | ␉uint8_t␉␉␉␉␉ports;␊ |
1358 | ␉uint32_t␉␉␉␉flags;␊ |
1359 | ␉bool␉␉␉␉␉posted;␊ |
1360 | } card_t;␊ |
1361 | card_t *card;␊ |
1362 | ␊ |
1363 | /* Flags */␊ |
1364 | #define MKFLAG(n)␉␉␉(1 << n)␊ |
1365 | #define FLAGTRUE␉␉␉MKFLAG(0)␊ |
1366 | #define EVERGREEN␉␉␉MKFLAG(1)␊ |
1367 | ␊ |
1368 | //static uint8_t atN = 0;␊ |
1369 | ␊ |
1370 | typedef struct {␊ |
1371 | ␉type_t␉␉␉␉␉type;␊ |
1372 | ␉uint32_t␉␉␉␉size;␊ |
1373 | ␉uint8_t␉␉␉␉␉*data;␊ |
1374 | } value_t;␊ |
1375 | ␊ |
1376 | static value_t aty_name;␊ |
1377 | static value_t aty_nameparent;␊ |
1378 | //static value_t aty_model;␊ |
1379 | ␊ |
1380 | #define DATVAL(x)␉␉␉{kPtr, sizeof(x), (uint8_t *)x}␊ |
1381 | #define STRVAL(x)␉␉␉{kStr, sizeof(x), (uint8_t *)x}␊ |
1382 | #define BYTVAL(x)␉␉␉{kCst, 1, (uint8_t *)x}␊ |
1383 | #define WRDVAL(x)␉␉␉{kCst, 2, (uint8_t *)x}␊ |
1384 | #define DWRVAL(x)␉␉␉{kCst, 4, (uint8_t *)x}␊ |
1385 | #define QWRVAL(x)␉␉␉{kCst, 8, (uint8_t *)x}␊ |
1386 | #define NULVAL␉␉␉␉{kNul, 0, (uint8_t *)NULL}␊ |
1387 | ␊ |
1388 | bool get_bootdisplay_val(value_t *val);␊ |
1389 | bool get_vrammemory_val(value_t *val);␊ |
1390 | bool get_name_val(value_t *val);␊ |
1391 | bool get_nameparent_val(value_t *val);␊ |
1392 | bool get_model_val(value_t *val);␊ |
1393 | bool get_conntype_val(value_t *val);␊ |
1394 | bool get_vrammemsize_val(value_t *val);␊ |
1395 | bool get_binimage_val(value_t *val);␊ |
1396 | bool get_romrevision_val(value_t *val);␊ |
1397 | bool get_deviceid_val(value_t *val);␊ |
1398 | bool get_mclk_val(value_t *val);␊ |
1399 | bool get_sclk_val(value_t *val);␊ |
1400 | bool get_refclk_val(value_t *val);␊ |
1401 | bool get_platforminfo_val(value_t *val);␊ |
1402 | bool get_vramtotalsize_val(value_t *val);␊ |
1403 | ␊ |
1404 | typedef struct {␊ |
1405 | ␉uint32_t␉␉␉␉flags;␊ |
1406 | ␉bool␉␉␉␉␉all_ports;␊ |
1407 | ␉char␉␉␉␉␉*name;␊ |
1408 | ␉bool␉␉␉␉␉(*get_value)(value_t *val);␊ |
1409 | ␉value_t␉␉␉␉␉default_val;␊ |
1410 | } dev_prop_t;␊ |
1411 | ␊ |
1412 | dev_prop_t ati_devprop_list[] = {␊ |
1413 | ␉{FLAGTRUE,␉false,␉"@0,AAPL,boot-display",␉␉get_bootdisplay_val,␉NULVAL␉␉␉␉␉␉␉},␊ |
1414 | //␉{FLAGTRUE,␉false,␉"@0,ATY,EFIDisplay",␉␉NULL,␉␉␉␉␉STRVAL("TMDSA")␉␉␉␉␉},␊ |
1415 | ␉␊ |
1416 | //␉{FLAGTRUE,␉true,␉"@0,AAPL,vram-memory",␉␉get_vrammemory_val,␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1417 | //␉{FLAGTRUE,␉true,␉"@0,compatible",␉␉␉get_name_val,␉␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1418 | //␉{FLAGTRUE,␉true,␉"@0,connector-type",␉␉get_conntype_val,␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1419 | //␉{FLAGTRUE,␉true,␉"@0,device_type",␉␉␉NULL,␉␉␉␉␉STRVAL("display")␉␉␉␉},␊ |
1420 | //␉{FLAGTRUE,␉false,␉"@0,display-connect-flags", NULL,␉␉␉␉␉DWRVAL((uint32_t)0)␉␉␉␉},␊ |
1421 | //␉{FLAGTRUE,␉true,␉"@0,display-type",␉␉␉NULL,␉␉␉␉␉STRVAL("NONE")␉␉␉␉␉},␊ |
1422 | ␉{FLAGTRUE,␉true,␉"@0,name",␉␉␉␉␉get_name_val,␉␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1423 | //␉{FLAGTRUE,␉true,␉"@0,VRAM,memsize",␉␉␉get_vrammemsize_val,␉NULVAL␉␉␉␉␉␉␉},␊ |
1424 | ␉␊ |
1425 | //␉{FLAGTRUE,␉false,␉"AAPL,aux-power-connected", NULL,␉␉␉␉␉DWRVAL((uint32_t)1)␉␉␉␉},␊ |
1426 | //␉{FLAGTRUE,␉false,␉"AAPL,backlight-control",␉NULL,␉␉␉␉␉DWRVAL((uint32_t)0)␉␉␉␉},␊ |
1427 | ␉{FLAGTRUE,␉false,␉"ATY,bin_image",␉␉␉get_binimage_val,␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1428 | ␉{FLAGTRUE,␉false,␉"ATY,Copyright",␉␉␉NULL,␉STRVAL("Copyright AMD Inc. All Rights Reserved. 2005-2011") },␊ |
1429 | ␉{FLAGTRUE,␉false,␉"ATY,Card#",␉␉␉␉get_romrevision_val,␉NULVAL␉␉␉␉␉␉␉},␊ |
1430 | ␉{FLAGTRUE,␉false,␉"ATY,VendorID",␉␉␉␉NULL,␉␉␉␉␉WRDVAL((uint16_t)0x1002)␉␉},␊ |
1431 | ␉{FLAGTRUE,␉false,␉"ATY,DeviceID",␉␉␉␉get_deviceid_val,␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1432 | ␉␊ |
1433 | //␉{FLAGTRUE,␉false,␉"ATY,MCLK",␉␉␉␉␉get_mclk_val,␉␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1434 | //␉{FLAGTRUE,␉false,␉"ATY,SCLK",␉␉␉␉␉get_sclk_val,␉␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1435 | //␉{FLAGTRUE,␉false,␉"ATY,RefCLK",␉␉␉␉get_refclk_val,␉␉␉DWRVAL((uint32_t)0x0a8c)␉␉},␊ |
1436 | ␉␊ |
1437 | //␉{FLAGTRUE,␉false,␉"ATY,PlatformInfo",␉␉␉get_platforminfo_val,␉NULVAL␉␉␉␉␉␉␉},␊ |
1438 | ␉␊ |
1439 | ␉{FLAGTRUE,␉false,␉"name",␉␉␉␉␉␉get_nameparent_val,␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1440 | ␉{FLAGTRUE,␉false,␉"device_type",␉␉␉␉get_nameparent_val,␉␉NULVAL␉␉␉␉␉␉␉},␊ |
1441 | ␉{FLAGTRUE,␉false,␉"model",␉␉␉␉␉get_model_val,␉␉␉STRVAL("ATI Radeon")␉␉␉},␊ |
1442 | //␉{FLAGTRUE,␉false,␉"VRAM,totalsize",␉␉␉get_vramtotalsize_val,␉NULVAL␉␉␉␉␉␉␉},␊ |
1443 | ␉␊ |
1444 | ␉{FLAGTRUE,␉false,␉NULL,␉␉␉␉␉␉NULL,␉␉␉␉␉NULVAL␉␉␉␉␉␉␉}␊ |
1445 | };␊ |
1446 | ␊ |
1447 | bool get_bootdisplay_val(value_t *val)␊ |
1448 | {␊ |
1449 | ␉static uint32_t v = 0;␊ |
1450 | ␉␊ |
1451 | ␉if (v)␊ |
1452 | ␉␉return false;␊ |
1453 | ␉␊ |
1454 | ␉if (!card->posted)␊ |
1455 | ␉␉return false;␊ |
1456 | ␉␊ |
1457 | ␉v = 1;␊ |
1458 | ␉val->type = kCst;␊ |
1459 | ␉val->size = 4;␊ |
1460 | ␉val->data = (uint8_t *)&v;␊ |
1461 | ␉␊ |
1462 | ␉return true;␊ |
1463 | }␊ |
1464 | ␊ |
1465 | bool get_vrammemory_val(value_t *val)␊ |
1466 | {␊ |
1467 | ␉return false;␊ |
1468 | }␊ |
1469 | ␊ |
1470 | bool get_name_val(value_t *val)␊ |
1471 | {␊ |
1472 | ␉val->type = aty_name.type;␊ |
1473 | ␉val->size = aty_name.size;␊ |
1474 | ␉val->data = aty_name.data;␊ |
1475 | ␉␊ |
1476 | ␉return true;␊ |
1477 | }␊ |
1478 | ␊ |
1479 | bool get_nameparent_val(value_t *val)␊ |
1480 | {␊ |
1481 | ␉val->type = aty_nameparent.type;␊ |
1482 | ␉val->size = aty_nameparent.size;␊ |
1483 | ␉val->data = aty_nameparent.data;␊ |
1484 | ␉␊ |
1485 | ␉return true;␊ |
1486 | }␊ |
1487 | ␊ |
1488 | bool get_model_val(value_t *val)␊ |
1489 | {␊ |
1490 | ␉if (!card->info->model_name)␊ |
1491 | ␉␉return false;␊ |
1492 | ␉␊ |
1493 | ␉val->type = kStr;␊ |
1494 | ␉val->size = strlen(card->info->model_name) + 1;␊ |
1495 | ␉val->data = (uint8_t *)card->info->model_name;␊ |
1496 | ␉␊ |
1497 | ␉return true;␊ |
1498 | }␊ |
1499 | ␊ |
1500 | bool get_conntype_val(value_t *val)␊ |
1501 | {␊ |
1502 | //Connector types:␊ |
1503 | //0x4 : DisplayPort␊ |
1504 | //0x400: DL DVI-I␊ |
1505 | //0x800: HDMI␊ |
1506 | ␊ |
1507 | ␉return false;␊ |
1508 | }␊ |
1509 | ␊ |
1510 | bool get_vrammemsize_val(value_t *val)␊ |
1511 | {␊ |
1512 | ␉static int idx = -1;␊ |
1513 | ␉static uint64_t memsize;␊ |
1514 | ␉␊ |
1515 | ␉idx++;␊ |
1516 | ␉memsize = ((uint64_t)card->vram_size << 32);␊ |
1517 | ␉if (idx == 0)␊ |
1518 | ␉␉memsize = memsize | (uint64_t)card->vram_size;␊ |
1519 | ␉␊ |
1520 | ␉val->type = kCst;␊ |
1521 | ␉val->size = 8;␊ |
1522 | ␉val->data = (uint8_t *)&memsize;␊ |
1523 | ␉␊ |
1524 | ␉return true;␊ |
1525 | }␊ |
1526 | ␊ |
1527 | bool get_binimage_val(value_t *val)␊ |
1528 | {␊ |
1529 | ␉if (!card->rom)␊ |
1530 | ␉␉return false;␊ |
1531 | ␉␊ |
1532 | ␉val->type = kPtr;␊ |
1533 | ␉val->size = card->rom_size;␊ |
1534 | ␉val->data = card->rom;␊ |
1535 | ␉␊ |
1536 | ␉return true;␊ |
1537 | }␊ |
1538 | ␊ |
1539 | bool get_romrevision_val(value_t *val)␊ |
1540 | {␊ |
1541 | ␉uint8_t *rev;␊ |
1542 | ␉if (!card->rom)␊ |
1543 | ␉␉return false;␊ |
1544 | ␉␊ |
1545 | ␉rev = card->rom + *(uint8_t *)(card->rom + OFFSET_TO_GET_ATOMBIOS_STRINGS_START);␊ |
1546 | ␊ |
1547 | ␉val->type = kPtr;␊ |
1548 | ␉val->size = strlen((char *)rev);␊ |
1549 | ␉val->data = malloc(val->size);␊ |
1550 | ␉␊ |
1551 | ␉if (!val->data)␊ |
1552 | ␉␉return false;␊ |
1553 | ␉␊ |
1554 | ␉memcpy(val->data, rev, val->size);␊ |
1555 | ␉␊ |
1556 | ␉return true;␊ |
1557 | }␊ |
1558 | ␊ |
1559 | bool get_deviceid_val(value_t *val)␊ |
1560 | {␊ |
1561 | ␉val->type = kCst;␊ |
1562 | ␉val->size = 2;␊ |
1563 | ␉val->data = (uint8_t *)&card->pci_dev->device_id;␊ |
1564 | ␉␊ |
1565 | ␉return true;␊ |
1566 | }␊ |
1567 | ␊ |
1568 | bool get_mclk_val(value_t *val)␊ |
1569 | {␊ |
1570 | ␉return false;␊ |
1571 | }␊ |
1572 | ␊ |
1573 | bool get_sclk_val(value_t *val)␊ |
1574 | {␊ |
1575 | ␉return false;␊ |
1576 | }␊ |
1577 | ␊ |
1578 | bool get_refclk_val(value_t *val)␊ |
1579 | {␊ |
1580 | ␉return false;␊ |
1581 | }␊ |
1582 | ␊ |
1583 | bool get_platforminfo_val(value_t *val)␊ |
1584 | {␊ |
1585 | ␉val->data = malloc(0x80);␊ |
1586 | ␉if (!val->data)␊ |
1587 | ␉␉return false;␊ |
1588 | ␉␊ |
1589 | ␉bzero(val->data, 0x80);␊ |
1590 | ␉␊ |
1591 | ␉val->type␉␉= kPtr;␊ |
1592 | ␉val->size␉␉= 0x80;␊ |
1593 | ␉val->data[0]␉= 1;␊ |
1594 | ␉␊ |
1595 | ␉return true;␊ |
1596 | }␊ |
1597 | ␊ |
1598 | bool get_vramtotalsize_val(value_t *val)␊ |
1599 | {␊ |
1600 | ␉val->type = kCst;␊ |
1601 | ␉val->size = 4;␊ |
1602 | ␉val->data = (uint8_t *)&card->vram_size;␊ |
1603 | ␉␊ |
1604 | ␉return true;␊ |
1605 | }␊ |
1606 | ␊ |
1607 | void free_val(value_t *val)␊ |
1608 | {␊ |
1609 | ␉if (val->type == kPtr)␊ |
1610 | ␉␉free(val->data);␊ |
1611 | ␉␊ |
1612 | ␉bzero(val, sizeof(value_t));␊ |
1613 | }␊ |
1614 | ␊ |
1615 | void devprop_add_list(dev_prop_t devprop_list[])␊ |
1616 | {␊ |
1617 | ␉value_t *val = malloc(sizeof(value_t));␊ |
1618 | ␉int i, pnum;␊ |
1619 | ␉␊ |
1620 | ␉for (i = 0; devprop_list[i].name != NULL; i++)␊ |
1621 | ␉{␊ |
1622 | ␉␉if ((devprop_list[i].flags == FLAGTRUE) || (devprop_list[i].flags | card->flags))␊ |
1623 | ␉␉{␊ |
1624 | ␉␉␉if (devprop_list[i].get_value && devprop_list[i].get_value(val))␊ |
1625 | ␉␉␉{␊ |
1626 | ␉␉␉␉devprop_add_value(card->device, devprop_list[i].name, val->data, val->size);␊ |
1627 | ␉␉␉␉free_val(val);␊ |
1628 | ␉␉␉␉␊ |
1629 | ␉␉␉␉if (devprop_list[i].all_ports)␊ |
1630 | ␉␉␉␉{␊ |
1631 | ␉␉␉␉␉for (pnum = 1; pnum < card->ports; pnum++)␊ |
1632 | ␉␉␉␉␉{␊ |
1633 | ␉␉␉␉␉␉if (devprop_list[i].get_value(val))␊ |
1634 | ␉␉␉␉␉␉{␊ |
1635 | ␉␉␉␉␉␉␉devprop_list[i].name[1] = 0x30 + pnum; // convert to ascii␊ |
1636 | ␉␉␉␉␉␉␉devprop_add_value(card->device, devprop_list[i].name, val->data, val->size);␊ |
1637 | ␉␉␉␉␉␉␉free_val(val);␊ |
1638 | ␉␉␉␉␉␉}␊ |
1639 | ␉␉␉␉␉}␊ |
1640 | ␉␉␉␉␉devprop_list[i].name[1] = 0x30; // write back our "@0," for a next possible card␊ |
1641 | ␉␉␉␉}␊ |
1642 | ␉␉␉}␊ |
1643 | ␉␉␉else␊ |
1644 | ␉␉␉{␊ |
1645 | ␉␉␉␉if (devprop_list[i].default_val.type != kNul)␊ |
1646 | ␉␉␉␉{␊ |
1647 | ␉␉␉␉␉devprop_add_value(card->device, devprop_list[i].name,␊ |
1648 | ␉␉␉␉␉␉devprop_list[i].default_val.type == kCst ?␊ |
1649 | ␉␉␉␉␉␉(uint8_t *)&(devprop_list[i].default_val.data) : devprop_list[i].default_val.data,␊ |
1650 | ␉␉␉␉␉␉devprop_list[i].default_val.size);␊ |
1651 | ␉␉␉␉}␊ |
1652 | ␉␉␉␉␊ |
1653 | ␉␉␉␉if (devprop_list[i].all_ports)␊ |
1654 | ␉␉␉␉{␊ |
1655 | ␉␉␉␉␉for (pnum = 1; pnum < card->ports; pnum++)␊ |
1656 | ␉␉␉␉␉{␊ |
1657 | ␉␉␉␉␉␉if (devprop_list[i].default_val.type != kNul)␊ |
1658 | ␉␉␉␉␉␉{␊ |
1659 | ␉␉␉␉␉␉␉devprop_list[i].name[1] = 0x30 + pnum; // convert to ascii␊ |
1660 | ␉␉␉␉␉␉␉devprop_add_value(card->device, devprop_list[i].name,␊ |
1661 | ␉␉␉␉␉␉␉␉devprop_list[i].default_val.type == kCst ?␊ |
1662 | ␉␉␉␉␉␉␉␉(uint8_t *)&(devprop_list[i].default_val.data) : devprop_list[i].default_val.data,␊ |
1663 | ␉␉␉␉␉␉␉␉devprop_list[i].default_val.size);␊ |
1664 | ␉␉␉␉␉␉}␊ |
1665 | ␉␉␉␉␉}␊ |
1666 | ␉␉␉␉␉devprop_list[i].name[1] = 0x30; // write back our "@0," for a next possible card␊ |
1667 | ␉␉␉␉}␊ |
1668 | ␉␉␉}␊ |
1669 | ␉␉}␊ |
1670 | ␉}␊ |
1671 | ␊ |
1672 | ␉free(val);␊ |
1673 | }␊ |
1674 | ␊ |
1675 | bool validate_rom(option_rom_header_t *rom_header, pci_dt_t *pci_dev)␊ |
1676 | {␊ |
1677 | ␉option_rom_pci_header_t *rom_pci_header;␊ |
1678 | ␉␊ |
1679 | ␉if (rom_header->signature != 0xaa55)␊ |
1680 | ␉␉return false;␊ |
1681 | ␉␊ |
1682 | ␉rom_pci_header = (option_rom_pci_header_t *)((uint8_t *)rom_header + rom_header->pci_header_offset);␊ |
1683 | ␉␊ |
1684 | ␉if (rom_pci_header->signature != 0x52494350)␊ |
1685 | ␉␉return false;␊ |
1686 | ␉␊ |
1687 | ␉if (rom_pci_header->vendor_id != pci_dev->vendor_id || rom_pci_header->device_id != pci_dev->device_id)␊ |
1688 | ␉␉return false;␊ |
1689 | ␉␊ |
1690 | ␉return true;␊ |
1691 | }␊ |
1692 | ␊ |
1693 | bool load_vbios_file(const char *key, uint16_t vendor_id, uint16_t device_id, uint32_t subsys_id)␊ |
1694 | {␊ |
1695 | ␉int fd;␊ |
1696 | ␉char file_name[24];␊ |
1697 | ␉bool do_load = false;␊ |
1698 | ␉␊ |
1699 | ␉getBoolForKey(key, &do_load, &bootInfo->chameleonConfig);␊ |
1700 | ␉if (!do_load)␊ |
1701 | ␉␉return false;␊ |
1702 | ␉␊ |
1703 | ␉sprintf(file_name, "/Extra/%04x_%04x_%08x.rom", vendor_id, device_id, subsys_id);␊ |
1704 | ␉if ((fd = open_bvdev("bt(0,0)", file_name, 0)) < 0)␊ |
1705 | ␉␉return false;␊ |
1706 | ␉␊ |
1707 | ␉card->rom_size = file_size(fd);␊ |
1708 | ␉card->rom = malloc(card->rom_size);␊ |
1709 | ␉if (!card->rom)␊ |
1710 | ␉␉return false;␊ |
1711 | ␉␊ |
1712 | ␉read(fd, (char *)card->rom, card->rom_size);␊ |
1713 | ␉␊ |
1714 | ␉if (!validate_rom((option_rom_header_t *)card->rom, card->pci_dev))␊ |
1715 | ␉{␊ |
1716 | ␉␉card->rom_size = 0;␊ |
1717 | ␉␉card->rom = 0;␊ |
1718 | ␉␉return false;␊ |
1719 | ␉}␊ |
1720 | ␉␊ |
1721 | ␉card->rom_size = ((option_rom_header_t *)card->rom)->rom_size * 512;␊ |
1722 | ␉␊ |
1723 | ␉close(fd);␊ |
1724 | ␉␊ |
1725 | ␉return true;␊ |
1726 | }␊ |
1727 | ␊ |
1728 | void get_vram_size(void)␊ |
1729 | {␊ |
1730 | ␉chip_family_t chip_family = card->info->chip_family;␊ |
1731 | ␉␊ |
1732 | ␉card->vram_size = 0;␊ |
1733 | ␉␊ |
1734 | ␉if (chip_family >= CHIP_FAMILY_CEDAR)␊ |
1735 | ␉␉// size in MB on evergreen␊ |
1736 | ␉␉// XXX watch for overflow!!!␊ |
1737 | ␉␉card->vram_size = RegRead32(R600_CONFIG_MEMSIZE) * 1024 * 1024;␊ |
1738 | ␉else␊ |
1739 | ␉␉if (chip_family >= CHIP_FAMILY_R600)␊ |
1740 | ␉␉␉card->vram_size = RegRead32(R600_CONFIG_MEMSIZE);␊ |
1741 | }␊ |
1742 | ␊ |
1743 | bool read_vbios(bool from_pci)␊ |
1744 | {␊ |
1745 | ␉option_rom_header_t *rom_addr;␊ |
1746 | ␉␊ |
1747 | ␉if (from_pci)␊ |
1748 | ␉{␊ |
1749 | ␉␉rom_addr = (option_rom_header_t *)(pci_config_read32(card->pci_dev->dev.addr, PCI_ROM_ADDRESS) & ~0x7ff);␊ |
1750 | ␉␉verbose(" @0x%x", rom_addr);␊ |
1751 | ␉}␊ |
1752 | ␉else␊ |
1753 | ␉␉rom_addr = (option_rom_header_t *)0xc0000;␊ |
1754 | ␉␊ |
1755 | ␉if (!validate_rom(rom_addr, card->pci_dev))␊ |
1756 | ␉␉return false;␊ |
1757 | ␉␊ |
1758 | ␉card->rom_size = rom_addr->rom_size * 512;␊ |
1759 | ␉if (!card->rom_size)␊ |
1760 | ␉␉return false;␊ |
1761 | ␉␊ |
1762 | ␉card->rom = malloc(card->rom_size);␊ |
1763 | ␉if (!card->rom)␊ |
1764 | ␉␉return false;␊ |
1765 | ␉␊ |
1766 | ␉memcpy(card->rom, (void *)rom_addr, card->rom_size);␊ |
1767 | ␉␊ |
1768 | ␉return true;␊ |
1769 | }␊ |
1770 | ␊ |
1771 | bool read_disabled_vbios(void)␊ |
1772 | {␊ |
1773 | ␉bool ret = false;␊ |
1774 | ␉chip_family_t chip_family = card->info->chip_family;␊ |
1775 | ␉␊ |
1776 | ␉if (chip_family >= CHIP_FAMILY_RV770)␊ |
1777 | ␉{␊ |
1778 | ␉␉uint32_t viph_control␉␉= RegRead32(RADEON_VIPH_CONTROL);␊ |
1779 | ␉␉uint32_t bus_cntl␉␉␉= RegRead32(RADEON_BUS_CNTL);␊ |
1780 | ␉␉uint32_t d1vga_control␉␉= RegRead32(AVIVO_D1VGA_CONTROL);␊ |
1781 | ␉␉uint32_t d2vga_control␉␉= RegRead32(AVIVO_D2VGA_CONTROL);␊ |
1782 | ␉␉uint32_t vga_render_control = RegRead32(AVIVO_VGA_RENDER_CONTROL);␊ |
1783 | ␉␉uint32_t rom_cntl␉␉␉= RegRead32(R600_ROM_CNTL);␊ |
1784 | ␉␉uint32_t cg_spll_func_cntl␉= 0;␊ |
1785 | ␉␉uint32_t cg_spll_status;␊ |
1786 | ␉␉␊ |
1787 | ␉␉// disable VIP␊ |
1788 | ␉␉RegWrite32(RADEON_VIPH_CONTROL, (viph_control & ~RADEON_VIPH_EN));␊ |
1789 | ␉␉␊ |
1790 | ␉␉// enable the rom␊ |
1791 | ␉␉RegWrite32(RADEON_BUS_CNTL, (bus_cntl & ~RADEON_BUS_BIOS_DIS_ROM));␊ |
1792 | ␉␉␊ |
1793 | ␉␉// Disable VGA mode␊ |
1794 | ␉␉RegWrite32(AVIVO_D1VGA_CONTROL, (d1vga_control & ~(AVIVO_DVGA_CONTROL_MODE_ENABLE | AVIVO_DVGA_CONTROL_TIMING_SELECT)));␊ |
1795 | ␉␉RegWrite32(AVIVO_D2VGA_CONTROL, (d2vga_control & ~(AVIVO_DVGA_CONTROL_MODE_ENABLE | AVIVO_DVGA_CONTROL_TIMING_SELECT)));␊ |
1796 | ␉␉RegWrite32(AVIVO_VGA_RENDER_CONTROL, (vga_render_control & ~AVIVO_VGA_VSTATUS_CNTL_MASK));␊ |
1797 | ␉␉␊ |
1798 | ␉␉if (chip_family == CHIP_FAMILY_RV730)␊ |
1799 | ␉␉{␊ |
1800 | ␉␉␉cg_spll_func_cntl = RegRead32(R600_CG_SPLL_FUNC_CNTL);␊ |
1801 | ␉␉␉␊ |
1802 | ␉␉␉// enable bypass mode␊ |
1803 | ␉␉␉RegWrite32(R600_CG_SPLL_FUNC_CNTL, (cg_spll_func_cntl | R600_SPLL_BYPASS_EN));␊ |
1804 | ␉␉␉␊ |
1805 | ␉␉␉// wait for SPLL_CHG_STATUS to change to 1␊ |
1806 | ␉␉␉cg_spll_status = 0;␊ |
1807 | ␉␉␉while (!(cg_spll_status & R600_SPLL_CHG_STATUS))␊ |
1808 | ␉␉␉␉cg_spll_status = RegRead32(R600_CG_SPLL_STATUS);␊ |
1809 | ␉␉␉␊ |
1810 | ␉␉␉RegWrite32(R600_ROM_CNTL, (rom_cntl & ~R600_SCK_OVERWRITE));␊ |
1811 | ␉␉}␊ |
1812 | ␉␉else␊ |
1813 | ␉␉␉RegWrite32(R600_ROM_CNTL, (rom_cntl | R600_SCK_OVERWRITE));␊ |
1814 | ␉␉␊ |
1815 | ␉␉ret = read_vbios(true);␊ |
1816 | ␉␉␊ |
1817 | ␉␉// restore regs␊ |
1818 | ␉␉if (chip_family == CHIP_FAMILY_RV730)␊ |
1819 | ␉␉{␊ |
1820 | ␉␉␉RegWrite32(R600_CG_SPLL_FUNC_CNTL, cg_spll_func_cntl);␊ |
1821 | ␉␉␉␊ |
1822 | ␉␉␉// wait for SPLL_CHG_STATUS to change to 1␊ |
1823 | ␉␉␉cg_spll_status = 0;␊ |
1824 | ␉␉␉while (!(cg_spll_status & R600_SPLL_CHG_STATUS))␊ |
1825 | ␉␉␉cg_spll_status = RegRead32(R600_CG_SPLL_STATUS);␊ |
1826 | ␉␉}␊ |
1827 | ␉␉RegWrite32(RADEON_VIPH_CONTROL, viph_control);␊ |
1828 | ␉␉RegWrite32(RADEON_BUS_CNTL, bus_cntl);␊ |
1829 | ␉␉RegWrite32(AVIVO_D1VGA_CONTROL, d1vga_control);␊ |
1830 | ␉␉RegWrite32(AVIVO_D2VGA_CONTROL, d2vga_control);␊ |
1831 | ␉␉RegWrite32(AVIVO_VGA_RENDER_CONTROL, vga_render_control);␊ |
1832 | ␉␉RegWrite32(R600_ROM_CNTL, rom_cntl);␊ |
1833 | ␉}␊ |
1834 | ␉else␊ |
1835 | ␉␉if (chip_family >= CHIP_FAMILY_R600)␊ |
1836 | ␉␉{␊ |
1837 | ␉␉␉uint32_t viph_control␉␉␉␉= RegRead32(RADEON_VIPH_CONTROL);␊ |
1838 | ␉␉␉uint32_t bus_cntl␉␉␉␉␉= RegRead32(RADEON_BUS_CNTL);␊ |
1839 | ␉␉␉uint32_t d1vga_control␉␉␉␉= RegRead32(AVIVO_D1VGA_CONTROL);␊ |
1840 | ␉␉␉uint32_t d2vga_control␉␉␉␉= RegRead32(AVIVO_D2VGA_CONTROL);␊ |
1841 | ␉␉␉uint32_t vga_render_control␉␉␉= RegRead32(AVIVO_VGA_RENDER_CONTROL);␊ |
1842 | ␉␉␉uint32_t rom_cntl␉␉␉␉␉= RegRead32(R600_ROM_CNTL);␊ |
1843 | ␉␉␉uint32_t general_pwrmgt␉␉␉␉= RegRead32(R600_GENERAL_PWRMGT);␊ |
1844 | ␉␉␉uint32_t low_vid_lower_gpio_cntl␉= RegRead32(R600_LOW_VID_LOWER_GPIO_CNTL);␊ |
1845 | ␉␉␉uint32_t medium_vid_lower_gpio_cntl = RegRead32(R600_MEDIUM_VID_LOWER_GPIO_CNTL);␊ |
1846 | ␉␉␉uint32_t high_vid_lower_gpio_cntl␉= RegRead32(R600_HIGH_VID_LOWER_GPIO_CNTL);␊ |
1847 | ␉␉␉uint32_t ctxsw_vid_lower_gpio_cntl␉= RegRead32(R600_CTXSW_VID_LOWER_GPIO_CNTL);␊ |
1848 | ␉␉␉uint32_t lower_gpio_enable␉␉␉= RegRead32(R600_LOWER_GPIO_ENABLE);␊ |
1849 | ␉␉␉␊ |
1850 | ␉␉␉// disable VIP␊ |
1851 | ␉␉␉RegWrite32(RADEON_VIPH_CONTROL, (viph_control & ~RADEON_VIPH_EN));␊ |
1852 | ␉␉␉␊ |
1853 | ␉␉␉// enable the rom␊ |
1854 | ␉␉␉RegWrite32(RADEON_BUS_CNTL, (bus_cntl & ~RADEON_BUS_BIOS_DIS_ROM));␊ |
1855 | ␉␉␉␊ |
1856 | ␉␉␉// Disable VGA mode␊ |
1857 | ␉␉␉RegWrite32(AVIVO_D1VGA_CONTROL, (d1vga_control & ~(AVIVO_DVGA_CONTROL_MODE_ENABLE | AVIVO_DVGA_CONTROL_TIMING_SELECT)));␊ |
1858 | ␉␉␉RegWrite32(AVIVO_D2VGA_CONTROL, (d2vga_control & ~(AVIVO_DVGA_CONTROL_MODE_ENABLE | AVIVO_DVGA_CONTROL_TIMING_SELECT)));␊ |
1859 | ␉␉␉RegWrite32(AVIVO_VGA_RENDER_CONTROL, (vga_render_control & ~AVIVO_VGA_VSTATUS_CNTL_MASK));␊ |
1860 | ␉␉␉RegWrite32(R600_ROM_CNTL, ((rom_cntl & ~R600_SCK_PRESCALE_CRYSTAL_CLK_MASK) | (1 << R600_SCK_PRESCALE_CRYSTAL_CLK_SHIFT) | R600_SCK_OVERWRITE));␊ |
1861 | ␉␉␉RegWrite32(R600_GENERAL_PWRMGT, (general_pwrmgt & ~R600_OPEN_DRAIN_PADS));␊ |
1862 | ␉␉␉RegWrite32(R600_LOW_VID_LOWER_GPIO_CNTL, (low_vid_lower_gpio_cntl & ~0x400));␊ |
1863 | ␉␉␉RegWrite32(R600_MEDIUM_VID_LOWER_GPIO_CNTL, (medium_vid_lower_gpio_cntl & ~0x400));␊ |
1864 | ␉␉␉RegWrite32(R600_HIGH_VID_LOWER_GPIO_CNTL, (high_vid_lower_gpio_cntl & ~0x400));␊ |
1865 | ␉␉␉RegWrite32(R600_CTXSW_VID_LOWER_GPIO_CNTL, (ctxsw_vid_lower_gpio_cntl & ~0x400));␊ |
1866 | ␉␉␉RegWrite32(R600_LOWER_GPIO_ENABLE, (lower_gpio_enable | 0x400));␊ |
1867 | ␉␉␉␊ |
1868 | ␉␉␉ret = read_vbios(true);␊ |
1869 | ␉␉␉␊ |
1870 | ␉␉␉// restore regs␊ |
1871 | ␉␉␉RegWrite32(RADEON_VIPH_CONTROL, viph_control);␊ |
1872 | ␉␉␉RegWrite32(RADEON_BUS_CNTL, bus_cntl);␊ |
1873 | ␉␉␉RegWrite32(AVIVO_D1VGA_CONTROL, d1vga_control);␊ |
1874 | ␉␉␉RegWrite32(AVIVO_D2VGA_CONTROL, d2vga_control);␊ |
1875 | ␉␉␉RegWrite32(AVIVO_VGA_RENDER_CONTROL, vga_render_control);␊ |
1876 | ␉␉␉RegWrite32(R600_ROM_CNTL, rom_cntl);␊ |
1877 | ␉␉␉RegWrite32(R600_GENERAL_PWRMGT, general_pwrmgt);␊ |
1878 | ␉␉␉RegWrite32(R600_LOW_VID_LOWER_GPIO_CNTL, low_vid_lower_gpio_cntl);␊ |
1879 | ␉␉␉RegWrite32(R600_MEDIUM_VID_LOWER_GPIO_CNTL, medium_vid_lower_gpio_cntl);␊ |
1880 | ␉␉␉RegWrite32(R600_HIGH_VID_LOWER_GPIO_CNTL, high_vid_lower_gpio_cntl);␊ |
1881 | ␉␉␉RegWrite32(R600_CTXSW_VID_LOWER_GPIO_CNTL, ctxsw_vid_lower_gpio_cntl);␊ |
1882 | ␉␉␉RegWrite32(R600_LOWER_GPIO_ENABLE, lower_gpio_enable);␊ |
1883 | ␉␉}␊ |
1884 | ␊ |
1885 | ␉return ret;␊ |
1886 | }␊ |
1887 | ␊ |
1888 | bool radeon_card_posted(void)␊ |
1889 | {␊ |
1890 | ␉uint32_t reg;␊ |
1891 | ␉␊ |
1892 | ␉// first check CRTCs␊ |
1893 | ␉reg = RegRead32(RADEON_CRTC_GEN_CNTL) | RegRead32(RADEON_CRTC2_GEN_CNTL);␊ |
1894 | ␉if (reg & RADEON_CRTC_EN)␊ |
1895 | ␉␉return true;␊ |
1896 | ␉␊ |
1897 | ␉// then check MEM_SIZE, in case something turned the crtcs off␊ |
1898 | ␉reg = RegRead32(R600_CONFIG_MEMSIZE);␊ |
1899 | ␉if (reg)␊ |
1900 | ␉␉return true;␊ |
1901 | ␉␊ |
1902 | ␉return false;␊ |
1903 | }␊ |
1904 | ␊ |
1905 | #if 0␊ |
1906 | bool devprop_add_pci_config_space(void)␊ |
1907 | {␊ |
1908 | ␉int offset;␊ |
1909 | ␉␊ |
1910 | ␉uint8_t *config_space = malloc(0x100);␊ |
1911 | ␉if (!config_space)␊ |
1912 | ␉␉return false;␊ |
1913 | ␉␊ |
1914 | ␉for (offset = 0; offset < 0x100; offset += 4)␊ |
1915 | ␉␉config_space[offset / 4] = pci_config_read32(card->pci_dev->dev.addr, offset);␊ |
1916 | ␉␊ |
1917 | ␉devprop_add_value(card->device, "ATY,PCIConfigSpace", config_space, 0x100);␊ |
1918 | ␉free(config_space);␊ |
1919 | ␉␊ |
1920 | ␉return true;␊ |
1921 | }␊ |
1922 | #endif␊ |
1923 | ␊ |
1924 | static bool init_card(pci_dt_t *pci_dev)␊ |
1925 | {␊ |
1926 | ␉bool␉add_vbios = true;␊ |
1927 | ␉char␉name[24];␊ |
1928 | ␉char␉name_parent[24];␊ |
1929 | ␉int␉␉i;␊ |
1930 | ␉int␉␉n_ports = 0;␊ |
1931 | ␉␊ |
1932 | ␉card = malloc(sizeof(card_t));␊ |
1933 | ␉if (!card)␊ |
1934 | ␉␉return false;␊ |
1935 | ␉bzero(card, sizeof(card_t));␊ |
1936 | ␉␊ |
1937 | ␉card->pci_dev = pci_dev;␊ |
1938 | ␉␊ |
1939 | ␉for (i = 0; radeon_cards[i].device_id ; i++)␊ |
1940 | ␉{␊ |
1941 | ␉␉if (radeon_cards[i].device_id == pci_dev->device_id)␊ |
1942 | ␉␉{␊ |
1943 | ␉␉␉card->info = &radeon_cards[i];␊ |
1944 | ␉␉␉if ((radeon_cards[i].subsys_id == 0x00000000) ||␊ |
1945 | ␉␉␉␉(radeon_cards[i].subsys_id == pci_dev->subsys_id.subsys_id))␊ |
1946 | ␉␉␉␉break;␊ |
1947 | ␉␉}␊ |
1948 | ␉}␊ |
1949 | ␉␊ |
1950 | //␉if (!card->info->device_id || !card->info->cfg_name)␊ |
1951 | ␉if (!card->info->device_id)␊ |
1952 | ␉{␊ |
1953 | ␉␉verbose("Unsupported ATI card! Device ID: [%04x:%04x] Subsystem ID: [%08x] \n", ␊ |
1954 | ␉␉␉␉pci_dev->vendor_id, pci_dev->device_id, pci_dev->subsys_id.subsys_id);␊ |
1955 | ␉␉return false;␊ |
1956 | ␉}␊ |
1957 | ␉␊ |
1958 | ␉card->fb␉␉= (uint8_t *)(pci_config_read32(pci_dev->dev.addr, PCI_BASE_ADDRESS_0) & ~0x0f);␊ |
1959 | ␉card->mmio␉␉= (uint8_t *)(pci_config_read32(pci_dev->dev.addr, PCI_BASE_ADDRESS_2) & ~0x0f);␊ |
1960 | ␉card->io␉␉= (uint8_t *)(pci_config_read32(pci_dev->dev.addr, PCI_BASE_ADDRESS_4) & ~0x03);␊ |
1961 | ␉␊ |
1962 | ␉verbose("Framebuffer @0x%08X MMIO @0x%08X␉I/O Port @0x%08X ROM Addr @0x%08X\n",␊ |
1963 | ␉␉card->fb, card->mmio, card->io, pci_config_read32(pci_dev->dev.addr, PCI_ROM_ADDRESS));␊ |
1964 | ␉␊ |
1965 | ␉card->posted = radeon_card_posted();␊ |
1966 | ␉verbose("ATI card %s, ", card->posted ? "POSTed" : "non-POSTed");␊ |
1967 | ␉␊ |
1968 | ␉get_vram_size();␊ |
1969 | ␉␊ |
1970 | ␉getBoolForKey(kATYbinimage, &add_vbios, &bootInfo->chameleonConfig);␊ |
1971 | ␉␊ |
1972 | ␉if (add_vbios)␊ |
1973 | ␉{␊ |
1974 | ␉␉if (!load_vbios_file(kUseAtiROM, pci_dev->vendor_id, pci_dev->device_id, pci_dev->subsys_id.subsys_id))␊ |
1975 | ␉␉{␊ |
1976 | ␉␉␉verbose("reading VBIOS from %s", card->posted ? "legacy space" : "PCI ROM");␊ |
1977 | ␉␉␉if (card->posted)␊ |
1978 | ␉␉␉␉read_vbios(false);␊ |
1979 | ␉␉␉else␊ |
1980 | ␉␉␉␉read_disabled_vbios();␊ |
1981 | ␉␉␉verbose("\n");␊ |
1982 | ␉␉}␊ |
1983 | ␉}␊ |
1984 | ␉␊ |
1985 | //␉card->ports = 2; // default - Azi: default is card_configs␊ |
1986 | ␉␊ |
1987 | ␉if (card->info->chip_family >= CHIP_FAMILY_CEDAR)␊ |
1988 | ␉{␊ |
1989 | ␉␉card->flags |= EVERGREEN;␊ |
1990 | //␉␉card->ports = 3; //Azi: use the AtiPorts key if needed␊ |
1991 | ␉}␊ |
1992 | ␉␊ |
1993 | //␉atN = 0;␊ |
1994 | ␉␊ |
1995 | ␉// Check AtiConfig key for a framebuffer name,␊ |
1996 | ␉card->cfg_name = getStringForKey(kAtiConfig, &bootInfo->chameleonConfig);␊ |
1997 | ␉// if none,␊ |
1998 | ␉if (!card->cfg_name)␊ |
1999 | ␉{␊ |
2000 | ␉␉// use cfg_name on radeon_cards, to retrive the default name from card_configs,␊ |
2001 | ␉␉card->cfg_name = card_configs[card->info->cfg_name].name;␊ |
2002 | ␉␉// Uncommented the following line and added verbose for debugging AtiPorts issues on some cards␊ |
2003 | ␉␉card->ports = card_configs[card->info->cfg_name].ports;␊ |
2004 | ␉␉// Report number of ports card reports␊ |
2005 | ␉␉verbose("Card reported ports: %d\n", card->ports);␊ |
2006 | ␉␉␊ |
2007 | ␉␉// which means one of the fb's or kNull␊ |
2008 | ␉␉verbose("Framebuffer set to: %s using device's default.\n", card->cfg_name);␊ |
2009 | ␉}␊ |
2010 | ␉else␊ |
2011 | ␉{␊ |
2012 | ␉␉// else, use the fb name returned by AtiConfig.␊ |
2013 | ␉␉verbose("Framebuffer set to: %s using AtiConfig=%s\n", card->cfg_name, card->cfg_name);␊ |
2014 | ␉}␊ |
2015 | ␉␊ |
2016 | ␉// Check AtiPorts key for nr of ports,␊ |
2017 | ␉card->ports = getIntForKey(kAtiPorts, &n_ports, &bootInfo->chameleonConfig);␊ |
2018 | ␉// if a value bigger than 0 ?? is found, (do we need >= 0 ?? that's null FB on card_configs)␊ |
2019 | ␉if (n_ports > 0)␊ |
2020 | ␉{␊ |
2021 | ␉␉card->ports = n_ports; // use it.␊ |
2022 | ␉␉verbose("Number of ports set to: %d using AtiPorts=%d\n", card->ports, card->ports);␊ |
2023 | }␊ |
2024 | ␉else// if (card->cfg_name > 0) // do we want 0 ports if fb is kNull or mistyped ?␊ |
2025 | ␉{␊ |
2026 | ␉␉// else, match cfg_name with card_configs list and retrive default nr of ports.␊ |
2027 | ␉␉for (i = 0; i < kCfgEnd; i++)␊ |
2028 | ␉␉␉if (strcmp(card->cfg_name, card_configs[i].name) == 0)␊ |
2029 | ␉␉␉␉card->ports = card_configs[i].ports; // default␊ |
2030 | ␉␉␊ |
2031 | ␉␉verbose("Number of ports set to: %d using framebuffer's default.\n", card->ports);␊ |
2032 | ␉}␊ |
2033 | //␉else␊ |
2034 | //␉␉card->ports = 2/1 ?; // set a min if 0 ports ?␊ |
2035 | //␉␉verbose("Nr of ports set to min: %d\n", card->ports);␊ |
2036 | ␉␊ |
2037 | ␉sprintf(name, "ATY,%s", card->cfg_name);␊ |
2038 | ␉aty_name.type = kStr;␊ |
2039 | ␉aty_name.size = strlen(name) + 1;␊ |
2040 | ␉aty_name.data = (uint8_t *)name;␊ |
2041 | ␉␊ |
2042 | ␉sprintf(name_parent, "ATY,%sParent", card->cfg_name);␊ |
2043 | ␉aty_nameparent.type = kStr;␊ |
2044 | ␉aty_nameparent.size = strlen(name_parent) + 1;␊ |
2045 | ␉aty_nameparent.data = (uint8_t *)name_parent;␊ |
2046 | ␉␊ |
2047 | ␉return true;␊ |
2048 | }␊ |
2049 | ␊ |
2050 | bool setup_ati_devprop(pci_dt_t *ati_dev)␊ |
2051 | {␊ |
2052 | ␉char *devicepath;␊ |
2053 | ␊ |
2054 | ␉// -------------------------------------------------␊ |
2055 | ␉// Find a better way to do this (in device_inject.c)␊ |
2056 | ␉if (!string)␊ |
2057 | ␉␉string = devprop_create_string();␊ |
2058 | ␉␊ |
2059 | ␉devicepath = get_pci_dev_path(ati_dev);␊ |
2060 | ␉if (!devicepath) {␊ |
2061 | ␉␉return false;␊ |
2062 | ␉}␊ |
2063 | ␉verbose("ATI VGA Controller [%04x:%04x] :: %s \n", ␊ |
2064 | ␉␉ati_dev->vendor_id, ati_dev->device_id, devicepath);␊ |
2065 | ␉if (!init_card(ati_dev))␊ |
2066 | ␉␉return false;␊ |
2067 | ␊ |
2068 | ␉card->device = devprop_add_device(string, devicepath);␊ |
2069 | ␉if (!card->device)␊ |
2070 | ␉␉return false;␊ |
2071 | ␉// -------------------------------------------------␊ |
2072 | ␉␊ |
2073 | #if 0␊ |
2074 | ␉uint64_t fb␉␉= (uint32_t)card->fb;␊ |
2075 | ␉uint64_t mmio␉= (uint32_t)card->mmio;␊ |
2076 | ␉uint64_t io␉␉= (uint32_t)card->io;␊ |
2077 | ␉devprop_add_value(card->device, "ATY,FrameBufferOffset", &fb, 8);␊ |
2078 | ␉devprop_add_value(card->device, "ATY,RegisterSpaceOffset", &mmio, 8);␊ |
2079 | ␉devprop_add_value(card->device, "ATY,IOSpaceOffset", &io, 8);␊ |
2080 | #endif␊ |
2081 | ␉␊ |
2082 | ␉devprop_add_list(ati_devprop_list);␊ |
2083 | ␉␊ |
2084 | ␉// -------------------------------------------------␊ |
2085 | ␉// Find a better way to do this (in device_inject.c)␊ |
2086 | ␉//Azi: XXX tried to fix a malloc error in vain; this is related to XCode 4 compilation!␊ |
2087 | ␉stringdata = malloc(sizeof(uint8_t) * string->length);␊ |
2088 | ␉memcpy(stringdata, (uint8_t*)devprop_generate_string(string), string->length);␊ |
2089 | ␉stringlength = string->length;␊ |
2090 | ␉// -------------------------------------------------␊ |
2091 | ␉␊ |
2092 | ␉verbose("%s %dMB [%04x:%04x] (subsys [%04x:%04x]) (%s:%s) :: %s\n",␊ |
2093 | ␉␉␉card->info->model_name, (uint32_t)(card->vram_size / (1024 * 1024)),␊ |
2094 | ␉␉␉ati_dev->vendor_id, ati_dev->device_id,␊ |
2095 | ␉␉␉ati_dev->subsys_id.subsys.vendor_id, ati_dev->subsys_id.subsys.device_id,␊ |
2096 | ␉␉␉chip_family_name[card->info->chip_family], card->cfg_name, ␊ |
2097 | ␉␉␉devicepath);␊ |
2098 | ␉␊ |
2099 | ␉free(card);␊ |
2100 | ␉␊ |
2101 | ␉return true;␊ |
2102 | }␊ |
2103 | |