Re: Ideas for abstracting driver IO from bus implementation?

David Howells (David.Howells@nexor.co.uk)
Thu, 18 Mar 1999 12:15:39 GMT


> I2O owns entire devices on the bus. At startup you query each I2O I/O
> processor and you get back things like
>
> "I just drive my own on card I/O stuff"
>
> "Im a motherboard controller, I know about your aic7xxx and your eepro100,
> right now I'm configured to drive the eepro100 only"
>
> You may find two controllers offering to handle the eepro100, or neither. You
> may prefer to run the native driver. Who "owns" a PCI device is a run time
> configurable item

Am I right in thinking an I2O controller can:
(a) be associated with a particular device (maybe on board physically).
(b) be separate (say on the motherboard), and as such be capable of
being assigned more than one device to look after (maybe at the
whim of the O/S).

Am I right in thinking that attaching a PCI device to an I2O controller does
not involve a renumbering of PCI devices and buses?

Does the real device still require/use I/O, IRQ, etc. resources when being
driven from an I2O controller? I presume an I2O controller get resources
through which it can be communicated with.

How would I handle this? Well, there're a number of possible ways:

(1) In my configuration manager, each device points to an 'interface' that
implements a set of device operations (mostly to do with reconfiguring at
the moment, but they do include device register accessing, and can be
extended).

If, say, an I2O controller wanted to handle a device, this interface could
be substituted for another which redirects accesses through the I2O
controller framework.

(2) The I2O driver could steal the real device definition at an appropriate
point, attach this to itself, and put forward another device definition
using itself as the 'interface'.

(3) A new type of resource token could be added representing interface types
and access operations. The I2O driver could then interpose its own token
in front or instead of the original one.

David Howells

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/