summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Smith <brad@cvs.openbsd.org>2014-10-04 18:20:51 +0000
committerBrad Smith <brad@cvs.openbsd.org>2014-10-04 18:20:51 +0000
commit373d10830dd169cd09162035ad66b26c4faf9c6e (patch)
tree2d8b94359394f1123da672aac66065fa696c32db
parent34343586bcc05ad3721ebff2b2418a0348327863 (diff)
- Recognize the Yukon Prime and Yukon Optima 2 chipsets.
- Recognize some more revs of the EC U and Supreme chipsets. - Add the PCI id for the Yukon 88E8079. ok jsg@
-rw-r--r--sys/dev/pci/if_msk.c47
-rw-r--r--sys/dev/pci/if_skreg.h10
2 files changed, 52 insertions, 5 deletions
diff --git a/sys/dev/pci/if_msk.c b/sys/dev/pci/if_msk.c
index 218cc082eb9..8bff6b82675 100644
--- a/sys/dev/pci/if_msk.c
+++ b/sys/dev/pci/if_msk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_msk.c,v 1.107 2014/09/23 21:16:42 brad Exp $ */
+/* $OpenBSD: if_msk.c,v 1.108 2014/10/04 18:20:50 brad Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
@@ -211,6 +211,7 @@ const struct pci_matchid mskc_devices[] = {
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8071 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8072 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8075 },
+ { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8079 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_C032 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_C033 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_C034 },
@@ -764,6 +765,8 @@ mskc_reset(struct sk_softc *sc)
case SK_YUKON_SUPR:
case SK_YUKON_ULTRA2:
case SK_YUKON_OPTIMA:
+ case SK_YUKON_PRM:
+ case SK_YUKON_OPTIMA2:
imtimer_ticks = SK_IMTIMER_TICKS_YUKON_EC;
break;
case SK_YUKON_FE:
@@ -830,6 +833,8 @@ msk_probe(struct device *parent, void *match, void *aux)
case SK_YUKON_SUPR:
case SK_YUKON_ULTRA2:
case SK_YUKON_OPTIMA:
+ case SK_YUKON_PRM:
+ case SK_YUKON_OPTIMA2:
return (1);
}
@@ -1213,11 +1218,17 @@ mskc_attach(struct device *parent, struct device *self, void *aux)
sc->sk_name = "Yukon-2 Supreme";
break;
case SK_YUKON_ULTRA2:
- sc->sk_name = "Yukon-2 Ultra2";
+ sc->sk_name = "Yukon-2 Ultra 2";
break;
case SK_YUKON_OPTIMA:
sc->sk_name = "Yukon-2 Optima";
break;
+ case SK_YUKON_PRM:
+ sc->sk_name = "Yukon-2 Optima Prime";
+ break;
+ case SK_YUKON_OPTIMA2:
+ sc->sk_name = "Yukon-2 Optima 2";
+ break;
default:
sc->sk_name = "Yukon (Unknown)";
}
@@ -1268,6 +1279,9 @@ mskc_attach(struct device *parent, struct device *self, void *aux)
case SK_YUKON_EC_U_REV_B0:
revstr = "B0";
break;
+ case SK_YUKON_EC_U_REV_B1:
+ revstr = "B1";
+ break;
default:
;
}
@@ -1302,9 +1316,34 @@ mskc_attach(struct device *parent, struct device *self, void *aux)
}
}
- if (sc->sk_type == SK_YUKON_SUPR && sc->sk_rev == SK_YUKON_SUPR_REV_A0)
- revstr = "A0";
+ if (sc->sk_type == SK_YUKON_SUPR) {
+ switch (sc->sk_rev) {
+ case SK_YUKON_SUPR_REV_A0:
+ revstr = "A0";
+ break;
+ case SK_YUKON_SUPR_REV_B0:
+ revstr = "B0";
+ break;
+ case SK_YUKON_SUPR_REV_B1:
+ revstr = "B1";
+ break;
+ default:
+ ;
+ }
+ }
+ if (sc->sk_type == SK_YUKON_PRM) {
+ switch (sc->sk_rev) {
+ case SK_YUKON_PRM_REV_Z1:
+ revstr = "Z1";
+ break;
+ case SK_YUKON_PRM_REV_A0:
+ revstr = "A0";
+ break;
+ default:
+ ;
+ }
+ }
/* Announce the product name. */
printf(", %s", sc->sk_name);
diff --git a/sys/dev/pci/if_skreg.h b/sys/dev/pci/if_skreg.h
index f3f0aa53a86..f2ac747c632 100644
--- a/sys/dev/pci/if_skreg.h
+++ b/sys/dev/pci/if_skreg.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_skreg.h,v 1.58 2013/03/17 10:56:23 brad Exp $ */
+/* $OpenBSD: if_skreg.h,v 1.59 2014/10/04 18:20:50 brad Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
@@ -354,6 +354,8 @@
#define SK_YUKON_SUPR 0xB9
#define SK_YUKON_ULTRA2 0xBA
#define SK_YUKON_OPTIMA 0xBC
+#define SK_YUKON_PRM 0xBD
+#define SK_YUKON_OPTIMA2 0xBE
#define SK_IS_GENESIS(sc) \
((sc)->sk_type == SK_GENESIS)
@@ -379,6 +381,7 @@
#define SK_YUKON_EC_U_REV_A0 0x1
#define SK_YUKON_EC_U_REV_A1 0x2
#define SK_YUKON_EC_U_REV_B0 0x3
+#define SK_YUKON_EC_U_REV_B1 0x5
#define SK_YUKON_FE_REV_A1 0x1
#define SK_YUKON_FE_REV_A2 0x2
@@ -389,6 +392,11 @@
#define SK_YUKON_EX_REV_B0 0x2
#define SK_YUKON_SUPR_REV_A0 0x0
+#define SK_YUKON_SUPR_REV_B0 0x1
+#define SK_YUKON_SUPR_REV_B1 0x3
+
+#define SK_YUKON_PRM_REV_Z1 0x1
+#define SK_YUKON_PRM_REV_A0 0x2
#define SK_IMCTL_IRQ_CLEAR 0x01
#define SK_IMCTL_STOP 0x02