Chameleon

View nvidia.patch

1*** /chameleon/trunk/i386/libsaio/nvidia.c2011-12-11 03:18:19.000000000 +0000
2--- /patched/nvidia.c2011-12-14 19:20:18.000000000 +0000
3***************
4*** 99,107 ****
5
6 static struct nv_chipsets_t NVKnownChipsets[] = {
7 { 0x00000000, "Unknown" },
8- // temporary placement
9- { 0x10DE0DF4, "GeForce GT 450M" }, //Azi + issue #99
10- { 0x10DE1251, "GeForce GTX 560M" }, // Asus G74SX
11 //========================================
12 // 0040 - 004F
13 { 0x10DE0040, "GeForce 6800 Ultra" },
14--- 99,104 ----
15***************
16*** 400,405 ****
17--- 397,403 ----
18 { 0x10DE05E2, "GeForce GTX 260" },
19 { 0x10DE05E3, "GeForce GTX 285" },
20 { 0x10DE05E6, "GeForce GTX 275" },
21+ { 0x10DE05E7, "Tesla C1060" },
22 { 0x10DE05EA, "GeForce GTX 260" },
23 { 0x10DE05EB, "GeForce GTX 295" },
24 { 0x10DE05ED, "Quadroplex 2200 D2" },
25***************
26*** 439,446 ****
27--- 437,446 ----
28 { 0x10DE061B, "Quadro VX 200" },
29 { 0x10DE061C, "Quadro FX 3600M" },
30 { 0x10DE061D, "Quadro FX 2800M" },
31+ { 0x10DE061E, "Quadro FX 3700M" },
32 { 0x10DE061F, "Quadro FX 3800M" },
33 // 0620 - 062F
34+ { 0x10DE0621, "GeForce GT 230" },
35 { 0x10DE0622, "GeForce 9600 GT" },
36 { 0x10DE0623, "GeForce 9600 GS" },
37 { 0x10DE0625, "GeForce 9600 GSO 512"},
38***************
39*** 448,453 ****
40--- 448,454 ----
41 { 0x10DE0627, "GeForce GT 140" },
42 { 0x10DE0628, "GeForce 9800M GTS" },
43 { 0x10DE062A, "GeForce 9700M GTS" },
44+ { 0x10DE062B, "GeForce 9800M GS" },
45 { 0x10DE062C, "GeForce 9800M GTS" },
46 { 0x10DE062D, "GeForce 9600 GT" },
47 { 0x10DE062E, "GeForce 9600 GT" },
48***************
49*** 477,482 ****
50--- 478,484 ----
51 { 0x10DE0652, "GeForce GT 130M" },
52 { 0x10DE0653, "GeForce GT 120M" },
53 { 0x10DE0654, "GeForce GT 220M" },
54+ { 0x10DE0655, "GeForce GT 120" },
55 { 0x10DE0656, "GeForce 9650 S" },
56 { 0x10DE0658, "Quadro FX 380" },
57 { 0x10DE0659, "Quadro FX 580" },
58***************
59*** 507,512 ****
60--- 509,515 ----
61 { 0x10DE06DD, "Quadro 4000" },
62 { 0x10DE06DE, "Tesla M2050" },// TODO: sub-device id: 0x0846
63 { 0x10DE06DE, "Tesla M2070" },// TODO: sub-device id: ?
64+ { 0x10DE06DF, "Tesla M2070-Q" },
65 // 0x10DE06DE also applies to misc S2050, X2070, M2050, M2070
66 // 06E0 - 06EF
67 { 0x10DE06E0, "GeForce 9300 GE" },
68***************
69*** 524,534 ****
70--- 527,539 ----
71 { 0x10DE06EC, "GeForce G 105M" },
72 { 0x10DE06EF, "GeForce G 103M" },
73 // 06F0 - 06FF
74+ { 0x10DE06F1, "GeForce G105M" },
75 { 0x10DE06F8, "Quadro NVS 420" },
76 { 0x10DE06F9, "Quadro FX 370 LP" },
77 { 0x10DE06FA, "Quadro NVS 450" },
78 { 0x10DE06FB, "Quadro FX 370M" },
79 { 0x10DE06FD, "Quadro NVS 295" },
80+ { 0x10DE06FF, "HICx16 + Graphics" },
81 // 0700 - 070F
82 // 0710 - 071F
83 // 0720 - 072F
84***************
85*** 555,560 ****
86--- 560,566 ----
87 // 0820 - 082F
88 // 0830 - 083F
89 // 0840 - 084F
90+ { 0x10DE0840, "GeForce 8200M" },
91 { 0x10DE0844, "GeForce 9100M G" },
92 { 0x10DE0845, "GeForce 8200M G" },
93 { 0x10DE0846, "GeForce 9200" },
94***************
95*** 577,582 ****
96--- 583,589 ----
97 { 0x10DE0866, "GeForce 9400M G" },
98 { 0x10DE0867, "GeForce 9400" },
99 { 0x10DE0868, "nForce 760i SLI" },
100+ { 0x10DE0869, "GeForce 9400" },
101 { 0x10DE086A, "GeForce 9400" },
102 { 0x10DE086C, "GeForce 9300 / nForce 730i" },
103 { 0x10DE086D, "GeForce 9200" },
104***************
105*** 596,601 ****
106--- 603,610 ----
107 // 0880 - 088F
108 // 0890 - 089F
109 // 08A0 - 08AF
110+ { 0x10DE08A0, "GeForce 320M" },
111+ { 0x10DE08A4, "GeForce 320M" },
112 // 08B0 - 08BF
113 // 08C0 - 08CF
114 // 08D0 - 08DF
115***************
116*** 623,628 ****
117--- 632,639 ----
118 { 0x10DE0A20, "GeForce GT220" },
119 { 0x10DE0A22, "GeForce 315" },
120 { 0x10DE0A23, "GeForce 210" },
121+ { 0x10DE0A26, "GeForce 405" },
122+ { 0x10DE0A27, "GeForce 405" },
123 { 0x10DE0A28, "GeForce GT 230M" },
124 { 0x10DE0A29, "GeForce GT 330M" },
125 { 0x10DE0A2A, "GeForce GT 230M" },
126***************
127*** 632,637 ****
128--- 643,649 ----
129 // 0A30 - 0A3F
130 { 0x10DE0A34, "GeForce GT 240M" },
131 { 0x10DE0A35, "GeForce GT 325M" },
132+ { 0x10DE0A38, "Quadro 400" },
133 { 0x10DE0A3C, "Quadro FX 880M" },
134 // 0A40 - 0A4F
135 // 0A50 - 0A5F
136***************
137*** 656,662 ****
138--- 668,676 ----
139 { 0x10DE0A73, "GeForce 305M" },
140 { 0x10DE0A74, "GeForce G210M" },
141 { 0x10DE0A75, "GeForce G310M" },
142+ { 0x10DE0A76, "ION" },
143 { 0x10DE0A78, "Quadro FX 380 LP" },
144+ { 0x10DE0A7A, "GeForce 315M" },
145 { 0x10DE0A7C, "Quadro FX 380M" },
146 // 0A80 - 0A8F
147 // 0A90 - 0A9F
148***************
149*** 697,706 ****
150 { 0x10DE0CA2, "GeForce GT 320" },
151 { 0x10DE0CA3, "GeForce GT 240" },
152 { 0x10DE0CA4, "GeForce GT 340" },
153 { 0x10DE0CA7, "GeForce GT 330" },
154 { 0x10DE0CA8, "GeForce GTS 260M" },
155 { 0x10DE0CA9, "GeForce GTS 250M" },
156! { 0x10DE0CAC, "GeForce 315" },
157 { 0x10DE0CAF, "GeForce GT 335M" },
158 // 0CB0 - 0CBF
159 { 0x10DE0CB0, "GeForce GTS 350M" },
160--- 711,721 ----
161 { 0x10DE0CA2, "GeForce GT 320" },
162 { 0x10DE0CA3, "GeForce GT 240" },
163 { 0x10DE0CA4, "GeForce GT 340" },
164+ { 0x10DE0CA5, "GeForce GT 220" },
165 { 0x10DE0CA7, "GeForce GT 330" },
166 { 0x10DE0CA8, "GeForce GTS 260M" },
167 { 0x10DE0CA9, "GeForce GTS 250M" },
168! { 0x10DE0CAC, "GeForce GT 220" },
169 { 0x10DE0CAF, "GeForce GT 335M" },
170 // 0CB0 - 0CBF
171 { 0x10DE0CB0, "GeForce GTS 350M" },
172***************
173*** 730,740 ****
174--- 745,759 ----
175 { 0x10DE0DC5, "GeForce GTS 450" },
176 { 0x10DE0DC6, "GeForce GTS 450" },
177 { 0x10DE0DCA, "GF10x" },
178+ { 0x10DE0DCD, "GeForce GT 555M" },
179+ { 0x10DE0DCE, "GeForce GT 555M" },
180 // 0DD0 - 0DDF
181 { 0x10DE0DD1, "GeForce GTX 460M" },
182 { 0x10DE0DD2, "GeForce GT 445M" },
183 { 0x10DE0DD3, "GeForce GT 435M" },
184+ { 0x10DE0DD6, "GeForce GT 550M" },
185 { 0x10DE0DD8, "Quadro 2000" },
186+ { 0x10DE0DDA, "Quadro 2000M" },
187 { 0x10DE0DDE, "GF106-ES" },
188 { 0x10DE0DDF, "GF106-INT" },
189 // 0DE0 - 0DEF
190***************
191*** 743,755 ****
192--- 762,781 ----
193 { 0x10DE0DE2, "GeForce GT 420" },
194 { 0x10DE0DE5, "GeForce GT 530" },
195 { 0x10DE0DEB, "GeForce GT 555M" },
196+ { 0x10DE0DEC, "GeForce GT 525M" },
197+ { 0x10DE0DED, "GeForce GT 520M" },
198 { 0x10DE0DEE, "GeForce GT 415M" },
199 // 0DF0 - 0DFF
200 { 0x10DE0DF0, "GeForce GT 425M" },
201 { 0x10DE0DF1, "GeForce GT 420M" },
202 { 0x10DE0DF2, "GeForce GT 435M" },
203 { 0x10DE0DF3, "GeForce GT 420M" },
204+ { 0x10DE0DF4, "GeForce GT 540M" },
205+ { 0x10DE0DF5, "GeForce GT 525M" },
206+ { 0x10DE0DF6, "GeForce GT 550M" },
207+ { 0x10DE0DF7, "GeForce GT 520M" },
208 { 0x10DE0DF8, "Quadro 600" },
209+ { 0x10DE0DFA, "Quadro 1000M" },
210 { 0x10DE0DFE, "GF108 ES" },
211 { 0x10DE0DFF, "GF108 INT" },
212 // 0E00 - 0E0F
213***************
214*** 762,768 ****
215--- 788,797 ----
216 { 0x10DE0E25, "D12U-50" },
217 // 0E30 - 0E3F
218 { 0x10DE0E30, "GeForce GTX 470M" },
219+ { 0x10DE0E31, "GeForce GTX 485M" },
220 { 0x10DE0E38, "GF104GL" },
221+ { 0x10DE0E3A, "Quadro 3000M" },
222+ { 0x10DE0E3B, "Quadro 4000M" },
223 { 0x10DE0E3E, "GF104-ES" },
224 { 0x10DE0E3F, "GF104-INT" },
225 // 0E40 - 0E4F
226***************
227*** 798,825 ****
228 // 1020 - 102F
229 // 1030 - 103F
230 // 1040 - 104F
231! { 0x10DE1040, "GeForce GT 520" },
232 // 1050 - 105F
233 { 0x10DE1050, "GeForce GT 520M" },
234 // 1060 - 106F
235 // 1070 - 107F
236 // 1080 - 108F
237 { 0x10DE1080, "GeForce GTX 580" },
238 { 0x10DE1081, "GeForce GTX 570" },
239 { 0x10DE1082, "GeForce GTX 560 Ti" },
240 { 0x10DE1083, "D13U" },
241 { 0x10DE1088, "GeForce GTX 590" },
242 // 1090 - 109F
243 { 0x10DE1098, "D13U" },
244! { 0x10DE109A, "N12E-Q5" },
245 // 10A0 - 10AF
246 // 10B0 - 10BF
247 // 10C0 - 10CF
248 { 0x10DE10C3, "GeForce 8400 GS" },
249 // 1200 -
250 { 0x10DE1200, "GeForce GTX 560 Ti" },
251 { 0x10DE1244, "GeForce GTX 550 Ti" },
252! { 0x10DE1245, "GeForce GTS 450" },
253 };
254
255 static uint16_t swap16(uint16_t x)
256--- 827,873 ----
257 // 1020 - 102F
258 // 1030 - 103F
259 // 1040 - 104F
260! { 0x10DE1040, "GeForce GT 520" },
261 // 1050 - 105F
262 { 0x10DE1050, "GeForce GT 520M" },
263+ { 0x10DE1054, "GeForce GT 410M" },
264+ { 0x10DE1056, "NVS 4200M" },
265+ { 0x10DE1057, "NVS 4200M" },
266 // 1060 - 106F
267 // 1070 - 107F
268+ { 0x10DE107F, "NVIDIA GF119-ES" },
269 // 1080 - 108F
270 { 0x10DE1080, "GeForce GTX 580" },
271 { 0x10DE1081, "GeForce GTX 570" },
272 { 0x10DE1082, "GeForce GTX 560 Ti" },
273 { 0x10DE1083, "D13U" },
274+ { 0x10DE1084, "GeForce GTX 560" },
275+ { 0x10DE1086, "GeForce GTX 570" },
276+ { 0x10DE1087, "GeForce GTX 560 Ti-448" },
277 { 0x10DE1088, "GeForce GTX 590" },
278+ { 0x10DE1089, "GeForce GTX 580" },
279+ { 0x10DE108B, "GeForce GTX 590" },
280 // 1090 - 109F
281+ { 0x10DE1091, "Tesla M2090" },
282 { 0x10DE1098, "D13U" },
283! { 0x10DE109A, "Quadro 5010M" },
284! { 0x10DE109B, "Quadro 7000" },
285 // 10A0 - 10AF
286 // 10B0 - 10BF
287 // 10C0 - 10CF
288+ { 0x10DE10C0, "GeForce 9300 GS" },
289 { 0x10DE10C3, "GeForce 8400 GS" },
290+ { 0x10DE10C5, "GeForce 405" },
291+ // 10D0 - 10DF
292+ { 0x10DE10D8, "NVS 300" },
293 // 1200 -
294 { 0x10DE1200, "GeForce GTX 560 Ti" },
295+ { 0x10DE1201, "GeForce GTX 560" },
296+ { 0x10DE1241, "GeForce GT 545" },
297+ { 0x10DE1243, "GeForce GT 545" },
298 { 0x10DE1244, "GeForce GTX 550 Ti" },
299! { 0x10DE1245, "GeForce GTS 450" },
300! { 0x10DE1251, "GeForce GTX 560M" },
301 };
302
303 static uint16_t swap16(uint16_t x)
304***************
305*** 830,839 ****
306 static uint16_t read16(uint8_t *ptr, uint16_t offset)
307 {
308 uint8_t ret[2];
309!
310 ret[0] = ptr[offset+1];
311 ret[1] = ptr[offset];
312!
313 return *((uint16_t*)&ret);
314 }
315
316--- 878,887 ----
317 static uint16_t read16(uint8_t *ptr, uint16_t offset)
318 {
319 uint8_t ret[2];
320!
321 ret[0] = ptr[offset+1];
322 ret[1] = ptr[offset];
323!
324 return *((uint16_t*)&ret);
325 }
326
327***************
328*** 851,862 ****
329 static uint32_t read32(uint8_t *ptr, uint16_t offset)
330 {
331 uint8_t ret[4];
332!
333 ret[0] = ptr[offset+3];
334 ret[1] = ptr[offset+2];
335 ret[2] = ptr[offset+1];
336 ret[3] = ptr[offset];
337!
338 return *((uint32_t*)&ret);
339 }
340 #endif
341--- 899,910 ----
342 static uint32_t read32(uint8_t *ptr, uint16_t offset)
343 {
344 uint8_t ret[4];
345!
346 ret[0] = ptr[offset+3];
347 ret[1] = ptr[offset+2];
348 ret[2] = ptr[offset+1];
349 ret[3] = ptr[offset];
350!
351 return *((uint32_t*)&ret);
352 }
353 #endif
354***************
355*** 869,875 ****
356 }
357
358 uint16_t dcbptr = swap16(read16(rom, 0x36));
359!
360 if (!dcbptr) {
361 printf("no dcb table found\n");
362 return PATCH_ROM_FAILED;
363--- 917,923 ----
364 }
365
366 uint16_t dcbptr = swap16(read16(rom, 0x36));
367!
368 if (!dcbptr) {
369 printf("no dcb table found\n");
370 return PATCH_ROM_FAILED;
371***************
372*** 892,898 ****
373 headerlength = dcbtable[1];
374 numentries = dcbtable[2];
375 recordlength = dcbtable[3];
376!
377 sig = *(uint32_t *)&dcbtable[6];
378 }
379 else
380--- 940,946 ----
381 headerlength = dcbtable[1];
382 numentries = dcbtable[2];
383 recordlength = dcbtable[3];
384!
385 sig = *(uint32_t *)&dcbtable[6];
386 }
387 else
388***************
389*** 942,948 ****
390 {
391 uint32_t connection;
392 connection = *(uint32_t *)&dcbtable[headerlength + recordlength * i];
393!
394 /* Should we allow discontinuous DCBs? Certainly DCB I2C tables can be discontinuous */
395 if ((connection & 0x0000000f) == 0x0000000f) /* end of records */
396 continue;
397--- 990,996 ----
398 {
399 uint32_t connection;
400 connection = *(uint32_t *)&dcbtable[headerlength + recordlength * i];
401!
402 /* Should we allow discontinuous DCBs? Certainly DCB I2C tables can be discontinuous */
403 if ((connection & 0x0000000f) == 0x0000000f) /* end of records */
404 continue;
405***************
406*** 1201,1212 ****
407 vram_size *= REG32(NVC0_MEM_CTRLR_COUNT);
408 }
409
410! // Workaround for GT 420/430 & 9600M GT
411 switch (nvda_dev->device_id)
412 {
413 case 0x0DE1: vram_size = 1024*1024*1024; break; // GT 430
414 case 0x0DE2: vram_size = 1024*1024*1024; break; // GT 420
415! case 0x0649: vram_size = 512*1024*1024; break;// 9600M GT
416 default: break;
417 }
418
419--- 1249,1262 ----
420 vram_size *= REG32(NVC0_MEM_CTRLR_COUNT);
421 }
422
423! // Workaround for 9600M GT, GT 420/430/440 & GT 525M
424 switch (nvda_dev->device_id)
425 {
426+ case 0x0649: vram_size = 512*1024*1024; break;// 9600M GT
427+ case 0x0DE0: vram_size = 1024*1024*1024; break; // GT 440
428 case 0x0DE1: vram_size = 1024*1024*1024; break; // GT 430
429 case 0x0DE2: vram_size = 1024*1024*1024; break; // GT 420
430! case 0x0DEC: vram_size = 1024*1024*1024; break; // GT 525M
431 default: break;
432 }
433
434

Archive Download this file

Attachment to issue 202

Created: 12 years 4 months ago by ErmaC