diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:20:36 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 15:20:36 -0700 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/eisa/pci_eisa.c |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'drivers/eisa/pci_eisa.c')
-rw-r--r-- | drivers/eisa/pci_eisa.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/drivers/eisa/pci_eisa.c b/drivers/eisa/pci_eisa.c new file mode 100644 index 00000000000..9e913629ef3 --- /dev/null +++ b/drivers/eisa/pci_eisa.c @@ -0,0 +1,66 @@ +/* + * Minimalist driver for a generic PCI-to-EISA bridge. + * + * (C) 2003 Marc Zyngier <maz@wild-wind.fr.eu.org> + * + * This code is released under the GPL version 2. + * + * Ivan Kokshaysky <ink@jurassic.park.msu.ru> : + * Generalisation from i82375 to PCI_CLASS_BRIDGE_EISA. + */ + +#include <linux/kernel.h> +#include <linux/device.h> +#include <linux/eisa.h> +#include <linux/pci.h> +#include <linux/module.h> +#include <linux/init.h> + +/* There is only *one* pci_eisa device per machine, right ? */ +static struct eisa_root_device pci_eisa_root; + +static int __devinit pci_eisa_init (struct pci_dev *pdev, + const struct pci_device_id *ent) +{ + int rc; + + if ((rc = pci_enable_device (pdev))) { + printk (KERN_ERR "pci_eisa : Could not enable device %s\n", + pci_name(pdev)); + return rc; + } + + pci_eisa_root.dev = &pdev->dev; + pci_eisa_root.dev->driver_data = &pci_eisa_root; + pci_eisa_root.res = pdev->bus->resource[0]; + pci_eisa_root.bus_base_addr = pdev->bus->resource[0]->start; + pci_eisa_root.slots = EISA_MAX_SLOTS; + pci_eisa_root.dma_mask = pdev->dma_mask; + + if (eisa_root_register (&pci_eisa_root)) { + printk (KERN_ERR "pci_eisa : Could not register EISA root\n"); + return -1; + } + + return 0; +} + +static struct pci_device_id pci_eisa_pci_tbl[] = { + { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, + PCI_CLASS_BRIDGE_EISA << 8, 0xffff00, 0 }, + { 0, } +}; + +static struct pci_driver pci_eisa_driver = { + .name = "pci_eisa", + .id_table = pci_eisa_pci_tbl, + .probe = pci_eisa_init, +}; + +static int __init pci_eisa_init_module (void) +{ + return pci_register_driver (&pci_eisa_driver); +} + +device_initcall(pci_eisa_init_module); +MODULE_DEVICE_TABLE(pci, pci_eisa_pci_tbl); |