Index: trunk/i386/libsaio/nvidia.c =================================================================== --- trunk/i386/libsaio/nvidia.c (revision 650) +++ trunk/i386/libsaio/nvidia.c (revision 651) @@ -323,10 +323,6 @@ { 0x10DE065A, "Quadro FX 1700M" }, { 0x10DE065B, "GeForce 9400 GT" }, { 0x10DE065C, "Quadro FX 770M" }, - { 0x10DE06C0, "GeForce GTX 480" }, - { 0x10DE06C4, "GeForce GTX 465" }, - { 0x10DE06CA, "GeForce GTX 480M" }, - { 0x10DE06CD, "GeForce GTX 470" }, { 0x10DE06E0, "GeForce 9300 GE" }, { 0x10DE06E1, "GeForce 9300 GS" }, { 0x10DE06E4, "GeForce 8400 GS" }, @@ -363,16 +359,73 @@ { 0x10DE0CA9, "GeForce GTS 250M" }, { 0x10DE0CB1, "GeForce GTS 360M" }, { 0x10DE0CA3, "GeForce GT240" }, - { 0x10DE0E22, "GeForce GTX 460" }, - { 0x10DE0E24, "GeForce GTX 460" }, + + // 06C0 - 06DFF + { 0x10DE06C0, "GeForce GTX 480" }, + { 0x10DE06C3, "GeForce GTX D12U" }, + { 0x10DE06C4, "GeForce GTX 465" }, + { 0x10DE06CA, "GeForce GTX 480M" }, + { 0x10DE06CD, "GeForce GTX 470" }, { 0x10DE06D1, "Tesla C2050" }, // TODO: sub-device id: 0x0771 { 0x10DE06D1, "Tesla C2070" }, // TODO: sub-device id: 0x0772 + { 0x10DE06D2, "Tesla M2070" }, + { 0x10DE06D8, "Quadro 6000" }, + { 0x10DE06D9, "Quadro 5000" }, + { 0x10DE06DA, "Quadro 5000M" }, + { 0x10DE06DC, "Quadro 6000" }, { 0x10DE06DE, "Tesla M2050" }, // TODO: sub-device id: 0x0846 { 0x10DE06DE, "Tesla M2070" }, // TODO: sub-device id: ? + // 0x10DE06DE also applies to misc S2050, X2070, M2050, M2070 { 0x10DE06DD, "Quadro 4000" }, + + // 0DC0 - 0DFF + { 0x10DE0DC0, "GeForce GT 440" }, + { 0x10DE0DC1, "D12-P1-35" }, + { 0x10DE0DC2, "D12-P1-35" }, { 0x10DE0DC4, "GeForce GTS 450" }, + { 0x10DE0DC5, "GeForce GTS 450" }, + { 0x10DE0DC6, "GeForce GTS 450" }, + { 0x10DE0DCA, "GF10x" }, + { 0x10DE0DD1, "GeForce GTX 460M" }, + { 0x10DE0DD2, "GeForce GT 445M" }, + { 0x10DE0DD3, "GeForce GT 435M" }, + { 0x10DE0DD8, "Quadro 2000" }, + { 0x10DE0DDE, "GF106-ES" }, + { 0x10DE0DDF, "GF106-INT" }, { 0x10DE0DE1, "GeForce GT 430" }, - { 0x10DE1080, "GeForce GTX 580" } + { 0x10DE0DE2, "GeForce GT 420" }, + { 0x10DE0DEB, "GeForce GT 555M" }, + { 0x10DE0DEE, "GeForce GT 415M" }, + { 0x10DE0DF0, "GeForce GT 425M" }, + { 0x10DE0DF1, "GeForce GT 420M" }, + { 0x10DE0DF2, "GeForce GT 435M" }, + { 0x10DE0DF3, "GeForce GT 420M" }, + { 0x10DE0DF8, "Quadro 600" }, + { 0x10DE0DFE, "GF108 ES" }, + { 0x10DE0DFF, "GF108 INT" }, + + // 0E20 - 0E3F + { 0x10DE0E21, "D12U-25" }, + { 0x10DE0E22, "GeForce GTX 460" }, + { 0x10DE0E23, "GeForce GTX 460 SE" }, + { 0x10DE0E24, "GeForce GTX 460" }, + { 0x10DE0E25, "D12U-50" }, + { 0x10DE0E30, "GeForce GTX 470M" }, + { 0x10DE0E38, "GF104GL" }, + { 0x10DE0E3E, "GF104-ES" }, + { 0x10DE0E3F, "GF104-INT" }, + + // 0EE0 - 0EFF: none yet + // 0F00 - 0F3F: none yet + // 1040 - 107F: none yet + + // 1080 - 109F + { 0x10DE1080, "GeForce GTX 580" }, + { 0x10DE1081, "D13U" }, + { 0x10DE1082, "D13U" }, + { 0x10DE1083, "D13U" }, + { 0x10DE1098, "D13U" }, + { 0x10DE109A, "N12E-Q5" }, }; static uint16_t swap16(uint16_t x) @@ -680,16 +733,15 @@ vram_size = REG32(NV04_PFB_FIFO_DATA); vram_size &= NV10_PFB_FIFO_DATA_RAM_AMOUNT_MB_MASK; } - else if (nvCardType >= NV_ARCH_C0) { - vram_size = REG32(NVC0_MEM_CTRLR_COUNT); - vram_size *= REG32(NVC0_MEM_CTRLR_RAM_AMOUNT); - vram_size <<= 20; - } - else { + else if (nvCardType < NV_ARCH_C0) { vram_size = REG32(NV04_PFB_FIFO_DATA); vram_size |= (vram_size & 0xff) << 32; vram_size &= 0xffffffff00ll; } + else { // >= NV_ARCH_C0 + vram_size = REG32(NVC0_MEM_CTRLR_RAM_AMOUNT) << 20; + vram_size *= REG32(NVC0_MEM_CTRLR_COUNT); + } return vram_size; } @@ -719,8 +771,6 @@ devicepath = get_pci_dev_path(nvda_dev); bar[0] = pci_config_read32(nvda_dev->dev.addr, 0x10 ); regs = (uint8_t *) (bar[0] & ~0x0f); - - delay(50); // get card type nvCardType = (REG32(0) >> 20) & 0x1ff;