On Mon, 2 Feb 2004, Guido Guenther wrote:
> On Mon, Feb 02, 2004 at 12:45:35PM -0800, Mark Vojkovich wrote: > > Most of your architecture assignments are wrong. ALL of those > > in the above snipped are NV_ARCH_10. You should use the logic in > > the "nv" driver. > You mean: > > pNv->Architecture = (pNv->Chipset & 0x0f00) >> 4; > > if(pNv->Architecture < NV_ARCH_10) > pNv->Architecture = NV_ARCH_04; > > + we'd have to handle the RIVA128 differently. James, would you let such a > patch in? > We could kill the whole arch_rev field in riva_chip_info then. For current hardware including Riva128 it would be: pNv->Architecture = (pNv->Chipset & 0x0f00) >> 4; if(pNv->Chipset == 0x12D20018) pNv->Architecture = NV_ARCH_03; else if (pNv->Architecture < NV_ARCH_10) pNv->Architecture = NV_ARCH_04; A note of warning, however. The next generation of chips will not be following this formula, so there will need to be more exceptions made. In an upcoming "nv" driver I will be going back to a scenario like: switch (pNv->Chipset & 0x0ff0) { case 0x0100: /* GeForce 256 */ case 0x0110: /* GeForce2 MX */ case 0x0150: /* GeForce2 */ case 0x0170: /* GeForce4 MX */ case 0x0180: /* GeForce4 MX (8x AGP) */ case 0x01A0: /* nForce */ case 0x01F0: /* nForce2 */ pNv->Architecture = NV_ARCH_10; break; case 0x0200: /* GeForce3 */ case 0x0250: /* GeForce4 Ti */ case 0x0280: /* GeForce4 Ti (8x AGP) */ pNv->Architecture = NV_ARCH_20; break; case 0x0300: /* GeForceFX 5800 */ case 0x0310: /* GeForceFX 5600 */ case 0x0320: /* GeForceFX 5200 */ case 0x0330: /* GeForceFX 5900 */ case 0x0340: /* GeForceFX 5700 */ pNv->Architecture = NV_ARCH_30; break; case 0x0020: /* TNT, TNT2 */ pNv->Architecture = NV_ARCH_04; break; case 0x0010: /* Riva128 */ pNv->Architecture = NV_ARCH_03; break; default: /* unknown architecture */ break; } Mark.