summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorBrad Smith <brad@cvs.openbsd.org>2007-10-02 07:35:56 +0000
committerBrad Smith <brad@cvs.openbsd.org>2007-10-02 07:35:56 +0000
commitc651063e59543db813ee24eabc42ac76a312a78c (patch)
treea3d4ddc7afaf32e11577973187b7f99625ac1e85 /sys
parentb92521afdad4853356725423e31f6f24fefcbd5e (diff)
add initial support for the Marvell PCIe Yukon FE+ Fast Ethernet chipsets.
Inspired by similar changes to the Linux sky2 driver. Tested by dunceor, Schoeberle Daniel, moritz@ and brad@ on existing known working adapters. These chipsets are not actually available in hardware yet. ok dlg@
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/if_msk.c14
-rw-r--r--sys/dev/pci/if_skreg.h5
2 files changed, 14 insertions, 5 deletions
diff --git a/sys/dev/pci/if_msk.c b/sys/dev/pci/if_msk.c
index 8ef66d11e48..e08eeecc702 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.57 2007/09/17 08:46:52 brad Exp $ */
+/* $OpenBSD: if_msk.c,v 1.58 2007/10/02 07:35:55 brad Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
@@ -200,6 +200,8 @@ const struct pci_matchid mskc_devices[] = {
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8036 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8038 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8039 },
+ { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8040 },
+ { PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8048 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8050 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8052 },
{ PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_YUKON_8053 },
@@ -947,6 +949,7 @@ msk_probe(struct device *parent, void *match, void *aux)
case SK_YUKON_EX:
case SK_YUKON_EC:
case SK_YUKON_FE:
+ case SK_YUKON_FE_P:
return (1);
}
@@ -1062,7 +1065,8 @@ msk_attach(struct device *parent, struct device *self, void *aux)
ifp->if_start = msk_start;
ifp->if_watchdog = msk_watchdog;
ifp->if_baudrate = 1000000000;
- if (sc->sk_type != SK_YUKON_FE)
+ if (sc->sk_type != SK_YUKON_FE &&
+ sc->sk_type != SK_YUKON_FE_P)
ifp->if_hardmtu = SK_JUMBO_MTU;
IFQ_SET_MAXLEN(&ifp->if_snd, MSK_TX_RING_CNT - 1);
IFQ_SET_READY(&ifp->if_snd);
@@ -1291,6 +1295,9 @@ mskc_attach(struct device *parent, struct device *self, void *aux)
case SK_YUKON_FE:
sc->sk_name = "Yukon-2 FE";
break;
+ case SK_YUKON_FE_P:
+ sc->sk_name = "Yukon-2 FE+";
+ break;
default:
sc->sk_name = "Yukon (Unknown)";
}
@@ -1884,7 +1891,8 @@ msk_init_yukon(struct sk_if_softc *sc_if)
YU_SMR_MFL_VLAN |
YU_SMR_IPG_DATA(0x1e);
- if (sc->sk_type != SK_YUKON_FE)
+ if (sc->sk_type != SK_YUKON_FE &&
+ sc->sk_type != SK_YUKON_FE_P)
reg |= YU_SMR_MFL_JUMBO;
SK_YU_WRITE_2(sc_if, YUKON_SMR, reg);
diff --git a/sys/dev/pci/if_skreg.h b/sys/dev/pci/if_skreg.h
index 0b81c4b6f65..47f82e6298f 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.44 2007/02/26 20:27:17 kettenis Exp $ */
+/* $OpenBSD: if_skreg.h,v 1.45 2007/10/02 07:35:55 brad Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
@@ -350,13 +350,14 @@
#define SK_YUKON_EX 0xB5
#define SK_YUKON_EC 0xB6
#define SK_YUKON_FE 0xB7
+#define SK_YUKON_FE_P 0xB8
#define SK_IS_GENESIS(sc) \
((sc)->sk_type == SK_GENESIS)
#define SK_IS_YUKON(sc) \
((sc)->sk_type >= SK_YUKON && (sc)->sk_type <= SK_YUKON_LP)
#define SK_IS_YUKON2(sc) \
- ((sc)->sk_type >= SK_YUKON_XL && (sc)->sk_type <= SK_YUKON_FE)
+ ((sc)->sk_type >= SK_YUKON_XL && (sc)->sk_type <= SK_YUKON_FE_P)
/* Known revisions in SK_CONFIG */
#define SK_YUKON_LITE_REV_A0 0x0 /* invented, see test in skc_attach */