Module Name: src
Committed By: kiyohara
Date: Wed Dec 2 12:51:50 UTC 2009
Modified Files:
src/sys/dev/ic: lan9118.c lan9118reg.h
Log Message:
Maybe supported LAN9218 Family.
To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/dev/ic/lan9118.c
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/ic/lan9118reg.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/ic/lan9118.c
diff -u src/sys/dev/ic/lan9118.c:1.9 src/sys/dev/ic/lan9118.c:1.10
--- src/sys/dev/ic/lan9118.c:1.9 Sun Nov 29 10:17:01 2009
+++ src/sys/dev/ic/lan9118.c Wed Dec 2 12:51:50 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: lan9118.c,v 1.9 2009/11/29 10:17:01 kiyohara Exp $ */
+/* $NetBSD: lan9118.c,v 1.10 2009/12/02 12:51:50 kiyohara Exp $ */
/*
* Copyright (c) 2008 KIYOHARA Takashi
* All rights reserved.
@@ -25,11 +25,10 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lan9118.c,v 1.9 2009/11/29 10:17:01 kiyohara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lan9118.c,v 1.10 2009/12/02 12:51:50 kiyohara Exp $");
/*
* The LAN9118 Family
- *
* * The LAN9118 is targeted for 32-bit applications requiring high
* performance, and provides the highest level of performance possible for
* a non-PCI 10/100 Ethernet controller.
@@ -43,6 +42,9 @@
* is for 32-bit host processors, while the LAN9115 is for 16-bit
* applications, which may also require an external PHY. Both devices
* deliver superior levels of performance.
+ *
+ * The LAN9218 Family
+ * Also support HP Auto-MDIX.
*/
#include "bpfilter.h"
@@ -178,8 +180,8 @@
sc->sc_id = LAN9118_ID_REV_ID(val);
sc->sc_rev = LAN9118_ID_REV_REV(val);
-#define LAN9xxx_ID(id) ((id) >= 0x9000 ? (id) & 0xfff : \
- ((id) >= 0x1000 ? ((id) >> 4) + 0x100 : (id)))
+#define LAN9xxx_ID(id) \
+ (IS_LAN9118(id) ? (id) : (IS_LAN9218(id) ? ((id) >> 4) + 0x100 : (id) & 0xfff))
aprint_normal(": SMSC LAN9%03x Rev %d\n",
LAN9xxx_ID(sc->sc_id), sc->sc_rev);
@@ -236,7 +238,8 @@
* number that above.
*/
sc->sc_mii.mii_instance++;
- if (sc->sc_id == LAN9118_ID_9115 || sc->sc_id == LAN9118_ID_9117) {
+ if (sc->sc_id == LAN9118_ID_9115 || sc->sc_id == LAN9118_ID_9117 ||
+ sc->sc_id == LAN9218_ID_9215 || sc->sc_id == LAN9218_ID_9217) {
if (bus_space_read_4(sc->sc_iot, sc->sc_ioh, LAN9118_HW_CFG) &
LAN9118_HW_CFG_EXT_PHY_DET) {
/*
Index: src/sys/dev/ic/lan9118reg.h
diff -u src/sys/dev/ic/lan9118reg.h:1.1 src/sys/dev/ic/lan9118reg.h:1.2
--- src/sys/dev/ic/lan9118reg.h:1.1 Sun Aug 9 06:40:10 2009
+++ src/sys/dev/ic/lan9118reg.h Wed Dec 2 12:51:50 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: lan9118reg.h,v 1.1 2009/08/09 06:40:10 kiyohara Exp $ */
+/* $NetBSD: lan9118reg.h,v 1.2 2009/12/02 12:51:50 kiyohara Exp $ */
/*
* Copyright (c) 2008 KIYOHARA Takashi
* All rights reserved.
@@ -30,10 +30,16 @@
#define LAN9118_IOSIZE 0x100
-#define LAN9118_ID_9115 0x115
-#define LAN9118_ID_9116 0x116
-#define LAN9118_ID_9117 0x117
-#define LAN9118_ID_9118 0x118
+#define LAN9118_ID_9115 0x0115
+#define LAN9118_ID_9116 0x0116
+#define LAN9118_ID_9117 0x0117
+#define LAN9118_ID_9118 0x0118
+#define LAN9218_ID_9215 0x115a
+#define LAN9218_ID_9217 0x117a
+#define LAN9218_ID_9218 0x118a
+
+#define IS_LAN9118(id) ((id) >= LAN9118_ID_9115 && (id) <= LAN9118_ID_9118)
+#define IS_LAN9218(id) ((id) >= LAN9218_ID_9215 && (id) <= LAN9218_ID_9218)
#define LAN9118_IPHY_ADDR 0x01 /* Internal PHY Address */