diff options
-rw-r--r-- | sys/dev/cs/if_cs.c | 3 | ||||
-rw-r--r-- | sys/dev/cs/if_cs_pccard.c | 6 | ||||
-rw-r--r-- | sys/dev/cs/if_csvar.h | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/cs/if_cs.c b/sys/dev/cs/if_cs.c index 4c501ad..e700cd4 100644 --- a/sys/dev/cs/if_cs.c +++ b/sys/dev/cs/if_cs.c @@ -467,7 +467,8 @@ cs_cs89x0_probe(device_t dev) } if (!error) { - cs_writereg(sc, pp_isaint, irq); + if (!(sc->flags & CS_NO_IRQ)) + cs_writereg(sc, pp_isaint, irq); } else { device_printf(dev, "Unknown or invalid irq\n"); return (ENXIO); diff --git a/sys/dev/cs/if_cs_pccard.c b/sys/dev/cs/if_cs_pccard.c index 29c6d7a..fad2a6f 100644 --- a/sys/dev/cs/if_cs_pccard.c +++ b/sys/dev/cs/if_cs_pccard.c @@ -80,11 +80,13 @@ cs_pccard_match(device_t dev) static int cs_pccard_probe(device_t dev) { + struct cs_softc *sc = device_get_softc(dev); int error; + sc->flags |= CS_NO_IRQ; error = cs_cs89x0_probe(dev); - cs_release_resources(dev); - return (error); + cs_release_resources(dev); + return (error); } static int diff --git a/sys/dev/cs/if_csvar.h b/sys/dev/cs/if_csvar.h index 2e2991a..ba1070e 100644 --- a/sys/dev/cs/if_csvar.h +++ b/sys/dev/cs/if_csvar.h @@ -57,6 +57,8 @@ struct cs_softc { struct resource* irq_res; /* resource for irq */ void* irq_handle; /* handle for irq handler */ + int flags; +#define CS_NO_IRQ 0x1 int nic_addr; /* Base IO address of card */ int send_cmd; int line_ctl; /* */ |