patch-2.4.20 linux-2.4.20/drivers/isdn/hisax/hfcscard.c
Next file: linux-2.4.20/drivers/isdn/hisax/hisax.h
Previous file: linux-2.4.20/drivers/isdn/hisax/hfc_sx.c
Back to the patch index
Back to the overall index
- Lines: 92
- Date:
Thu Nov 28 15:53:13 2002
- Orig file:
linux-2.4.19/drivers/isdn/hisax/hfcscard.c
- Orig date:
Fri Dec 21 09:41:54 2001
diff -urN linux-2.4.19/drivers/isdn/hisax/hfcscard.c linux-2.4.20/drivers/isdn/hisax/hfcscard.c
@@ -12,6 +12,7 @@
#define __NO_VERSION__
#include <linux/init.h>
+#include <linux/isapnp.h>
#include "hisax.h"
#include "hfc_2bds0.h"
#include "isdnl1.h"
@@ -139,6 +140,36 @@
return(0);
}
+#ifdef __ISAPNP__
+static struct isapnp_device_id hfc_ids[] __initdata = {
+ { ISAPNP_VENDOR('A', 'N', 'X'), ISAPNP_FUNCTION(0x1114),
+ ISAPNP_VENDOR('A', 'N', 'X'), ISAPNP_FUNCTION(0x1114),
+ (unsigned long) "Acer P10" },
+ { ISAPNP_VENDOR('B', 'I', 'L'), ISAPNP_FUNCTION(0x0002),
+ ISAPNP_VENDOR('B', 'I', 'L'), ISAPNP_FUNCTION(0x0002),
+ (unsigned long) "Billion 2" },
+ { ISAPNP_VENDOR('B', 'I', 'L'), ISAPNP_FUNCTION(0x0001),
+ ISAPNP_VENDOR('B', 'I', 'L'), ISAPNP_FUNCTION(0x0001),
+ (unsigned long) "Billion 1" },
+ { ISAPNP_VENDOR('T', 'A', 'G'), ISAPNP_FUNCTION(0x7410),
+ ISAPNP_VENDOR('T', 'A', 'G'), ISAPNP_FUNCTION(0x7410),
+ (unsigned long) "IStar PnP" },
+ { ISAPNP_VENDOR('T', 'A', 'G'), ISAPNP_FUNCTION(0x2610),
+ ISAPNP_VENDOR('T', 'A', 'G'), ISAPNP_FUNCTION(0x2610),
+ (unsigned long) "Teles 16.3c" },
+ { ISAPNP_VENDOR('S', 'F', 'M'), ISAPNP_FUNCTION(0x0001),
+ ISAPNP_VENDOR('S', 'F', 'M'), ISAPNP_FUNCTION(0x0001),
+ (unsigned long) "Tornado Tipa C" },
+ { ISAPNP_VENDOR('K', 'Y', 'E'), ISAPNP_FUNCTION(0x0001),
+ ISAPNP_VENDOR('K', 'Y', 'E'), ISAPNP_FUNCTION(0x0001),
+ (unsigned long) "Genius Speed Surfer" },
+ { 0, }
+};
+
+static struct isapnp_device_id *hdev = &hfc_ids[0];
+static struct pci_bus *pnp_c __devinitdata = NULL;
+#endif
+
int __init
setup_hfcs(struct IsdnCard *card)
{
@@ -147,6 +178,46 @@
strcpy(tmp, hfcs_revision);
printk(KERN_INFO "HiSax: HFC-S driver Rev. %s\n", HiSax_getrev(tmp));
+
+#ifdef __ISAPNP__
+ if (!card->para[1] && isapnp_present()) {
+ struct pci_bus *pb;
+ struct pci_dev *pd;
+
+ while(hdev->card_vendor) {
+ if ((pb = isapnp_find_card(hdev->card_vendor,
+ hdev->card_device, pnp_c))) {
+ pnp_c = pb;
+ pd = NULL;
+ if ((pd = isapnp_find_dev(pnp_c,
+ hdev->vendor, hdev->function, pd))) {
+ printk(KERN_INFO "HiSax: %s detected\n",
+ (char *)hdev->driver_data);
+ pd->prepare(pd);
+ pd->deactivate(pd);
+ pd->activate(pd);
+ card->para[1] = pd->resource[0].start;
+ card->para[0] = pd->irq_resource[0].start;
+ if (!card->para[0] || !card->para[1]) {
+ printk(KERN_ERR "HFC PnP:some resources are missing %ld/%lx\n",
+ card->para[0], card->para[1]);
+ pd->deactivate(pd);
+ return(0);
+ }
+ break;
+ } else {
+ printk(KERN_ERR "HFC PnP: PnP error card found, no device\n");
+ }
+ }
+ hdev++;
+ pnp_c=NULL;
+ }
+ if (!hdev->card_vendor) {
+ printk(KERN_INFO "HFC PnP: no ISAPnP card found\n");
+ return(0);
+ }
+ }
+#endif
cs->hw.hfcD.addr = card->para[1] & 0xfffe;
cs->irq = card->para[0];
cs->hw.hfcD.cip = 0;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)