a) How do plain VGA registers (lots of documentation talks about
things like address 3B4h) get 'mapped' to the correct PCI device? Is
address 3B4h in C/BE#'s 'I/O Space', 'Memory Space', or some added
fields to the configuration space?
3B4h is in I/O space. And it's not in a BAR-mapped space. When our
PCI controller sees that address (and we've enabled VGA), it decodes a
limited range of "legacy" I/O space addresses. These are the only I/O
space addresses we support. All others are memory space.
Since these legacy addresses are not allocated to a particular device,
there are certainly concerns in a PC system about more than one device
attempting to accept them. I think the correct thing to do is have
the first VGA device figure out that it was initialized first (there's
a certain order in which a PC BIOS initializes devices, with the
console gfx card being very early) and be the only one to enable the
decode. (Enabling the decode would be device-dependent, I would
imagine.)
The MB's BIOS initializes only one of the graphic cards. As far as I
remember, the secondary card's boot message appeared only at the time
when X was started in dualhead mode.
Which one is being initialized at boot depends on bios settings, usually
you have a choice to init PCIe or PCI card first.
Result: we don't need to handle sharing of cards in any way. Reset =
turn off everything and if the bios is run, then initialize the card.
Question is how to detect which card's bios is being executed in case
you have 2 cards on same bus :)
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)