diff -urN -X /usr/dontdiff /linux.vanilla/drivers/pcmcia/i82365.c /linux/drivers/pcmcia/i82365.c --- /linux.vanilla/drivers/pcmcia/i82365.c Sun Sep 2 23:42:50 2001 +++ /linux/drivers/pcmcia/i82365.c Mon Sep 3 00:28:16 2001 @@ -58,6 +58,7 @@ #include #include +#include /* ISA-bus controllers */ #include "i82365.h" @@ -821,33 +822,53 @@ #if defined(CONFIG_ISAPNP) || (defined(CONFIG_ISAPNP_MODULE) && defined(MODULE)) #define I82365_ISAPNP #endif +#ifdef CONFIG_PNPBIOS +#define I82365_PNPBIOS +#endif +#if defined(I82365_ISAPNP) || defined(I82365_PNPBIOS) +#define I82365_PNP +#endif -#ifdef I82365_ISAPNP +#ifdef I82365_PNP static struct isapnp_device_id id_table[] __initdata = { { ISAPNP_ANY_ID, ISAPNP_ANY_ID, ISAPNP_VENDOR('P', 'N', 'P'), - ISAPNP_FUNCTION(0x0e00), (unsigned long) "Intel 82365-Compatible" }, + ISAPNP_FUNCTION(0x0e00), (unsigned long) "PNP0e00" }, { ISAPNP_ANY_ID, ISAPNP_ANY_ID, ISAPNP_VENDOR('P', 'N', 'P'), - ISAPNP_FUNCTION(0x0e01), (unsigned long) "Cirrus Logic CL-PD6720" }, + ISAPNP_FUNCTION(0x0e01), (unsigned long) "PNP0e01" }, { ISAPNP_ANY_ID, ISAPNP_ANY_ID, ISAPNP_VENDOR('P', 'N', 'P'), - ISAPNP_FUNCTION(0x0e02), (unsigned long) "VLSI VL82C146" }, + ISAPNP_FUNCTION(0x0e02), (unsigned long) "PNP0e02" }, { 0 } }; MODULE_DEVICE_TABLE(isapnp, id_table); static struct pci_dev *i82365_pnpdev; + +static struct pci_dev *pnp_find_dev(struct isapnp_device_id *id) +{ + struct pci_dev *dev = NULL; +#ifdef I82365_ISAPNP + if ((dev = isapnp_find_dev(NULL, id->vendor, id->function, NULL))) + return dev; +#endif +#ifdef I82365_PNPBIOS + if ((dev = pnpbios_find_device((char *)id->driver_data, NULL))) + return dev; +#endif + return dev; +} #endif static void __init isa_probe(void) { int i, j, sock, k, ns, id; ioaddr_t port; -#ifdef I82365_ISAPNP +#ifdef I82365_PNP struct isapnp_device_id *devid; struct pci_dev *dev; for (devid = id_table; devid->vendor; devid++) { - if ((dev = isapnp_find_dev(NULL, devid->vendor, devid->function, NULL))) { - printk("ISAPNP "); + if ((dev = pnp_find_dev(devid))) { + printk("PNP "); if (dev->prepare && dev->prepare(dev) < 0) { printk("prepare failed\n"); @@ -1652,7 +1673,7 @@ i365_set(i, I365_CSCINT, 0); release_region(socket[i].ioaddr, 2); } -#if defined(CONFIG_ISA) && defined(I82365_ISAPNP) +#if defined(CONFIG_ISA) && defined(I82365_PNP) if (i82365_pnpdev && i82365_pnpdev->deactivate) i82365_pnpdev->deactivate(i82365_pnpdev); #endif