[Patch] Sedlbauer PnP-Card SpeedWin

From: Martin Tessun (martin.tessun@class.de)
Date: Sat Jan 22 2000 - 14:00:18 EST


Hi,

attached is a patch which adds PnP-support for the
sedlbauer-SpeedWin-Card. Others are easily implemented, but I didnt know
their ISAPNP_FUNCTIONS.

Although the patch is a bit ugly, it works for me. (I only needed to
exclude IRQ 12 (PS/2-Mouse) in the isa-pnp-module.)

Perhaps someone, who has more time than me can make a better
implementation. This should be done for all ISDN-ISAPnP-Cards for the
new kernel.

Bye the way. The patch is against kernel-version 2.3.40

Bye
Martin

--- sedlbauer.c.orig Sat Jan 22 18:00:14 2000
+++ sedlbauer.c Sat Jan 22 19:37:36 2000
@@ -107,6 +107,7 @@
 #include "isar.h"
 #include "isdnl1.h"
 #include <linux/pci.h>
+#include <linux/isapnp.h>
 
 extern const char *CardType[];
 
@@ -177,6 +178,16 @@
 
 #define SEDL_RESET 0x3 /* same as DOS driver */
 
+/* ISAPNP only for SpeedWin PnP (because I know the funtion */
+#warning fixme: Add other Cards beside ISAPnP
+static struct {
+ unsigned short vendor, function;
+ char *name;
+} isapnp_list[] __initdata = {
+ { ISAPNP_VENDOR('S','A','G'), ISAPNP_FUNCTION(0x0001), "Sedlbauer SpeedWin" },
+ { 0, }
+};
+
 static inline u_char
 readreg(unsigned int ale, unsigned int adr, u_char off)
 {
@@ -625,6 +636,37 @@
                         bytecnt = 16;
                 }
         } else {
+ /* Could be a PnP-Card */
+ if (isapnp_present()) {
+ int i;
+
+ for (i = 0; isapnp_list[i].vendor != 0; i++) {
+ struct pci_dev *isadev = NULL;
+
+ while ((isadev = isapnp_find_dev(NULL, isapnp_list[i].vendor, isapnp_list[i].function, isadev))) {
+ /* Avoid already found cards from previous cards (from ne.c) */
+ if (isadev->prepare(isadev))
+ continue;
+ if (isadev->activate(isadev))
+ continue;
+
+ cs->irq = isadev->irq_resource[0].start;
+ /* No irq -> search next card */
+ if (!cs->irq)
+ continue;
+ /* We got it! */
+ break;
+ }
+ if (!isadev)
+ continue;
+ cs->hw.sedl.cfg_reg = isadev->resource[0].start;
+ printk(KERN_INFO "Sedlbauer: ISAPnP reports %s at IO %#x, IRQ %d.\n",isapnp_list[i].name, cs->hw.sedl.cfg_reg, cs->irq);
+ goto out;
+ }
+ } else {
+ printk(KERN_WARNING "Sedlbauer: PnP not enabled\n");
+ return (0);
+ }
 /* Probe for Sedlbauer speed pci */
 #if SEDLBAUER_PCI
 #if CONFIG_PCI
@@ -689,7 +731,7 @@
                /* In case of the sedlbauer pcmcia card, this region is in use,
            reserved for us by the card manager. So we do not check it
            here, it would fail. */
- if (cs->hw.sedl.bus != SEDL_BUS_PCMCIA &&
+out: if (cs->hw.sedl.bus != SEDL_BUS_PCMCIA &&
                 check_region((cs->hw.sedl.cfg_reg), bytecnt)) {
                 printk(KERN_WARNING
                         "HiSax: %s config port %x-%x already in use\n",

-
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/



This archive was generated by hypermail 2b29 : Sun Jan 23 2000 - 21:00:28 EST