[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: available slots
David,
These are my thoughts about the subject:
A software must detect empty slots in a PC. For this, the program must know
how many slots are in a PC, and WHICH IDSEL lines are routed to them. Then a
device driver could check each slot if there is a PCI card inserted. Looks
to me as a very complicated task as you will have to:
- have a way to determine which IDSEL goes to which PCI slot.
- write a device driver
- block all other software & interrupts while you mess with the
configuration cycles under windows
- look behind PCI-PCI bridges if they are available on the motherboard. (but
not the bridges on PCI cards!)
An other way to do this is the following:
build a database of existing motherboards with the following:
- recognition string (probably type & version of motherboard from bios)
- All PCI id's/subid's found on the motherboard
- Number of busses (PCI bus behind a bridge is a seperate bus, the AGP bus
is a seperate bus)
Now, you can enumerate all PCI devices on an running PC, look at unknown
ones, and substract that count of the count of available slots. If you
encounter an unknown PCI bus number, you have probably also found the bridge
for this. As a PCI card can have multiple devices on it, do not count them
seperatly.
A database can be created by sending a piece of software to users which
detects all above things in there computer, and asks them about theire
available slots. (I they don't know, no problem!) Then, sort these results,
and if two or more the same motherboards are found, compare the results, and
the differences are PCI cards in the PC. If only 1 person told you about his
available PCI slots, you know everything...
Still remains the question, how do you tell the difference between AGP and
PCI?
I'm dutch, took a 2 day course on PCI bus, took a 1 day refresh course, and
have only some experience in building PCI target card & NT4 drivers. So
don't take the above to seriously, but shoot on it. Regards, Eric.