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