Bug 2737 - Cyrix and nsc drivers should be enhanced to redirect to the other driver when needed
Cyrix and nsc drivers should be enhanced to redirect to the other driver when...
Status: RESOLVED WONTFIX
Product: xorg
Classification: Unclassified
Component: Driver/nsc
git
x86 (IA32) Linux (All)
: high normal
Assigned To: Xorg Project Team
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2005-03-15 04:41 UTC by Mike A. Harris
Modified: 2014-01-23 00:19 UTC (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mike A. Harris 2005-03-15 04:41:47 UTC
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
Subsystem: 1078:0001
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:

   outb(0x35, 0x3D4)
   check inb(0x3d5) = C
   outb(0x36, 0x3D5)
   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
software IMHO.
Comment 1 Mike A. Harris 2006-08-31 07:21:10 UTC
Not interested in tracking this any longer, and it seems rather unlikely
someone would be interested in aggregating the drivers at this point.
Comment 2 Martin-Éric Racine 2008-05-01 02:12:06 UTC
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.