| ==================================== | 
 | SGI IOC4 PCI (multi function) device | 
 | ==================================== | 
 |  | 
 | The SGI IOC4 PCI device is a bit of a strange beast, so some notes on | 
 | it are in order. | 
 |  | 
 | First, even though the IOC4 performs multiple functions, such as an | 
 | IDE controller, a serial controller, a PS/2 keyboard/mouse controller, | 
 | and an external interrupt mechanism, it's not implemented as a | 
 | multifunction device.  The consequence of this from a software | 
 | standpoint is that all these functions share a single IRQ, and | 
 | they can't all register to own the same PCI device ID.  To make | 
 | matters a bit worse, some of the register blocks (and even registers | 
 | themselves) present in IOC4 are mixed-purpose between these several | 
 | functions, meaning that there's no clear "owning" device driver. | 
 |  | 
 | The solution is to organize the IOC4 driver into several independent | 
 | drivers, "ioc4", "sgiioc4", and "ioc4_serial".  Note that there is no | 
 | PS/2 controller driver as this functionality has never been wired up | 
 | on a shipping IO card. | 
 |  | 
 | ioc4 | 
 | ==== | 
 | This is the core (or shim) driver for IOC4.  It is responsible for | 
 | initializing the basic functionality of the chip, and allocating | 
 | the PCI resources that are shared between the IOC4 functions. | 
 |  | 
 | This driver also provides registration functions that the other | 
 | IOC4 drivers can call to make their presence known.  Each driver | 
 | needs to provide a probe and remove function, which are invoked | 
 | by the core driver at appropriate times.  The interface of these | 
 | IOC4 function probe and remove operations isn't precisely the same | 
 | as PCI device probe and remove operations, but is logically the | 
 | same operation. | 
 |  | 
 | sgiioc4 | 
 | ======= | 
 | This is the IDE driver for IOC4.  Its name isn't very descriptive | 
 | simply for historical reasons (it used to be the only IOC4 driver | 
 | component).  There's not much to say about it other than it hooks | 
 | up to the ioc4 driver via the appropriate registration, probe, and | 
 | remove functions. | 
 |  | 
 | ioc4_serial | 
 | =========== | 
 | This is the serial driver for IOC4.  There's not much to say about it | 
 | other than it hooks up to the ioc4 driver via the appropriate registration, | 
 | probe, and remove functions. |