The cyrix and nsc drivers have PCI ID overlap. Natsemi reused the same PCI ID
with the same graphics chip, but changed the BIOS in an incompatible way
from what I understand. The net result is that hardware autodetection software
that relies solely on the PCI device and vendor ID and subvendor/device ID,
and even revision fields in PCI config space, can not uniquely distinguish
between certain cyrix hardware and nsc hardware.
00:12.4 Class 0300: 1078:0104
Flags: medium devsel
Memory at 40800000 (32-bit, non-prefetchable) [size=8M]
The only way to detect wether the hardware should use the cyrix or nsc
drivers is to do:
check inb(0x3d5) = C
check inb(0x3D5) = X - if so VSA2 -> NSC driver
Both the cyrix and nsc drivers should be enhanced to do this autodetection
and if the wrong chip is detected, the driver should autoreload the
correct driver something like the "ati" driver does if possible. Otherwise
it should steadfastly fail to load and print an error telling the user the
right driver to use.
The place to put this type of code is in the drivers, not in the configuration
Not interested in tracking this any longer, and it seems rather unlikely
someone would be interested in aggregating the drivers at this point.
We're currently toying with the idea of merging "cyrix" and "nsc", to eliminate duplicate work between the two drivers and, eventually, merge the result into the unified "geode" driver that was renamed from "amd" recently.
We have access to some NSC hardware (specifically, the SC2200) but not to Cyrix hardware. Thus, the best that we can currently accomplish is to merge "nsc" into "geode", without any guaranty that this will still work for Cyrix hardware.
Since the "nsc" code has been neglected for too long, a simpler path might be to copy the recently cleaned gx_ files from the "geode" driver and call them gx1_, then add chipset-specific parts from "nsc" to complete the picture.
See http://wiki.x.org/wiki/AMDGeodeDriver for details on this proposal.