summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/ed/if_ed_pccard.c6
-rw-r--r--sys/dev/ed/if_edreg.h14
2 files changed, 17 insertions, 3 deletions
diff --git a/sys/dev/ed/if_ed_pccard.c b/sys/dev/ed/if_ed_pccard.c
index c2abc38..ed3bf4b 100644
--- a/sys/dev/ed/if_ed_pccard.c
+++ b/sys/dev/ed/if_ed_pccard.c
@@ -477,13 +477,17 @@ ed_pccard_ax88190(device_t dev)
iobase = rman_get_start(sc->port_res);
ed_pccard_memwrite(dev, ED_AX88190_IOBASE0, iobase & 0xff);
ed_pccard_memwrite(dev, ED_AX88190_IOBASE1, (iobase >> 8) & 0xff);
+ sc->type_str = "AX88190";
+ if (ed_asic_inb(sc, ED_ASIX_TEST) != 0) {
+ ed_pccard_memwrite(dev, ED_AX88790_CSR, ED_AX88790_CSR_PWRDWN);
+ sc->type_str = "AX88790";
+ }
ax88190_geteprom(sc);
ed_release_resources(dev);
error = ed_probe_Novell(dev, 0, flags);
if (error == 0) {
sc->vendor = ED_VENDOR_NOVELL;
sc->type = ED_TYPE_NE2000;
- sc->type_str = "AX88190";
}
return (error);
}
diff --git a/sys/dev/ed/if_edreg.h b/sys/dev/ed/if_edreg.h
index b38cc58..2674df6 100644
--- a/sys/dev/ed/if_edreg.h
+++ b/sys/dev/ed/if_edreg.h
@@ -1117,13 +1117,23 @@ struct ed_ring {
#define ED_CHIP_TYPE_DL100XX 0x03
/*
- * AX88190 IOBASE registers.
+ * AX88190 configuration status register.
+ */
+#define ED_AX88790_CSR 0x3c2
+#define ED_AX88790_CSR_PWRDWN 0x04
+/*
+ * AX88190 IOBASE registers, I'm pretty sure these don't need to be written
+ * to to make the card work by ed.
*/
-
#define ED_AX88190_IOBASE0 0x3ca
#define ED_AX88190_IOBASE1 0x3cc
/*
+ * Test for AX88790 vs 88190 cards.
+ */
+#define ED_ASIX_TEST 0x05
+
+/*
* MII bus definitions.
*/
#define ED_MII_STARTDELIM 0x01
OpenPOWER on IntegriCloud