Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev Support some differences in the Macronix 98715AEC-C ...



details:   https://anonhg.NetBSD.org/src/rev/e218b59dcd4b
branches:  trunk
changeset: 495692:e218b59dcd4b
user:      castor <castor%NetBSD.org@localhost>
date:      Thu Aug 03 03:07:30 2000 +0000

description:
Support some differences in the Macronix 98715AEC-C and E chips from the other
98715* series.

The MX98715AEC-[C,E] use a different location in the serial eerom for
LED control, and programming it with the original location's values
caused unpredictable behavior.

Also, start integrating fixes where media changes on an adapter
under load may fail.  There's more work to be done here, but I need
to sort out our internal changes a little more carefully.

diffstat:

 sys/dev/ic/tulip.c       |  20 ++++++++++++++++++--
 sys/dev/ic/tulipreg.h    |  13 +++++++++++--
 sys/dev/ic/tulipvar.h    |  22 +++++++++++++---------
 sys/dev/pci/if_tlp_pci.c |   6 +++++-
 4 files changed, 47 insertions(+), 14 deletions(-)

diffs (223 lines):

diff -r 70ae916a6158 -r e218b59dcd4b sys/dev/ic/tulip.c
--- a/sys/dev/ic/tulip.c        Thu Aug 03 03:00:04 2000 +0000
+++ b/sys/dev/ic/tulip.c        Thu Aug 03 03:07:30 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: tulip.c,v 1.70 2000/07/04 04:18:17 thorpej Exp $       */
+/*     $NetBSD: tulip.c,v 1.71 2000/08/03 03:07:30 castor Exp $        */
 
 /*-
  * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -313,6 +313,7 @@
        case TULIP_CHIP_MX98713A:       /* 21143-like */
        case TULIP_CHIP_MX98715:        /* 21143-like */
        case TULIP_CHIP_MX98715A:       /* 21143-like */
+       case TULIP_CHIP_MX98715AEC_X:   /* 21143-like */
        case TULIP_CHIP_MX98725:        /* 21143-like */
                /*
                 * Run these chips in ring mode.
@@ -1759,6 +1760,7 @@
        case TULIP_CHIP_MX98713A:
        case TULIP_CHIP_MX98715:
        case TULIP_CHIP_MX98715A:
+       case TULIP_CHIP_MX98715AEC_X:
        case TULIP_CHIP_MX98725:
                TULIP_WRITE(sc, CSR_PMAC_TOR, PMAC_TOR_98715);
                break;
@@ -2035,6 +2037,7 @@
        TULIP_WRITE(sc, CSR_INTEN, 0);
 
        /* Stop the transmit and receive processes. */
+       sc->sc_opmode = 0;
        TULIP_WRITE(sc, CSR_OPMODE, 0);
        TULIP_WRITE(sc, CSR_RXLIST, 0);
        TULIP_WRITE(sc, CSR_TXLIST, 0);
@@ -3021,6 +3024,8 @@
 {
        struct tulip_softc *sc = ifp->if_softc;
 
+       if ((ifp->if_flags & IFF_UP) == 0)
+               return (0);
        return ((*sc->sc_mediasw->tmsw_set)(sc));
 }
 
@@ -3568,6 +3573,15 @@
                 */
                TULIP_WRITE(sc, CSR_MIIROM, sc->sc_srom[0x77] << 24);
                break;
+       case TULIP_CHIP_MX98715AEC_X:
+               /*
+                * Set the LED operating mode.  This information is located
+                * in the EEPROM at byte offset 0x76, per the MX98715AEC
+                * application note.
+                */
+               TULIP_WRITE(sc, CSR_MIIROM, ((0xf & sc->sc_srom[0x76]) << 28)
+                   | ((0xf0 & sc->sc_srom[0x76]) << 20));
+               break;
 
        default:
                /* Nothing. */
@@ -3804,6 +3818,7 @@
        case TULIP_CHIP_82C115:
        case TULIP_CHIP_MX98715:
        case TULIP_CHIP_MX98715A:
+       case TULIP_CHIP_MX98715AEC_X:
        case TULIP_CHIP_MX98725:
                tm->tm_sia = tsti->tsti_21142;  /* struct assignment */
                break;
@@ -4023,6 +4038,7 @@
        case TULIP_CHIP_MX98713A:
        case TULIP_CHIP_MX98715:
        case TULIP_CHIP_MX98715A:
+       case TULIP_CHIP_MX98715AEC_X:
        case TULIP_CHIP_MX98725:
                siaconn = PMAC_SIACONN_MASK;
                siatxrx = PMAC_SIATXRX_MASK;
@@ -5440,7 +5456,7 @@
  *     MX98713A                        21143-like MII or SIA/SYM media.
  *
  *     MX98715, MX98715A, MX98725,     21143-like SIA/SYM media.
- *     82C115
+ *     82C115, MX98715AEC-C, -E
  *
  * So, what we do here is fake MII-on-SIO or ISV media info, and
  * use the ISV media switch get/set functions to handle the rest.
diff -r 70ae916a6158 -r e218b59dcd4b sys/dev/ic/tulipreg.h
--- a/sys/dev/ic/tulipreg.h     Thu Aug 03 03:00:04 2000 +0000
+++ b/sys/dev/ic/tulipreg.h     Thu Aug 03 03:07:30 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: tulipreg.h,v 1.20 2000/05/25 22:50:11 thorpej Exp $    */
+/*     $NetBSD: tulipreg.h,v 1.21 2000/08/03 03:07:30 castor Exp $     */
 
 /*-
  * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
@@ -55,6 +55,9 @@
  *       have only GPR media and the NWay block.  The 98715,
  *       98715A, and 98725 support power management.
  *
+ *        The 98715AEC adds 802.3x flow Frame based Flow Control to the
+ *       98715A.
+ *
  *     - Lite-On 82C115 (PNIC II):
  *
  *       A clone of the Macronix MX98725, with the following differences:
@@ -746,6 +749,7 @@
                                                   (21041) */
 #define        SIASTAT_ANS_DIS         0x00000000      /*     disabled */
 #define        SIASTAT_ANS_TXDIS       0x00001000      /*     transmit disabled */
+#define        SIASTAT_ANS_START       0x00001000      /*     (MX98715AEC) */
 #define        SIASTAT_ANS_ABD         0x00002000      /*     ability detect */
 #define        SIASTAT_ANS_ACKD        0x00003000      /*     acknowledge detect */
 #define        SIASTAT_ANS_ACKC        0x00004000      /*     complete acknowledge */
@@ -1059,7 +1063,7 @@
 
 
 /*
- * Macronix 98713, 98713A, 98715, 98715A, 98725 and
+ * Macronix 98713, 98713A, 98715, 98715A, 98715AEC, 98725 and
  * Lite-On 82C115 registers.
  */
 
@@ -1119,7 +1123,12 @@
         * this does not appear to be necessary.  This is probably
         * one of the things that frobbing the Test Operation Register
         * does.
+        *
+        * MX98715AEC uses this register for Auto Compensation.
+        * CSR20<14> and CSR20<9> are called DS130 and DS120
         */
+#define        PMAC_NWAYSTAT_DS120     0x00000200      /* Auto-compensation circ */
+#define        PMAC_NWAYSTAT_DS130     0x00004000      /* Auto-compensation circ */
 #define        PMAC_NWAYSTAT_EQTEST    0x00001000      /* EQ test */
 #define        PMAC_NWAYSTAT_PCITEST   0x00010000      /* PCI test */
 #define        PMAC_NWAYSTAT_10TXH     0x08000000      /* 10t accepted */
diff -r 70ae916a6158 -r e218b59dcd4b sys/dev/ic/tulipvar.h
--- a/sys/dev/ic/tulipvar.h     Thu Aug 03 03:00:04 2000 +0000
+++ b/sys/dev/ic/tulipvar.h     Thu Aug 03 03:07:30 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: tulipvar.h,v 1.36 2000/05/26 16:38:14 thorpej Exp $    */
+/*     $NetBSD: tulipvar.h,v 1.37 2000/08/03 03:07:30 castor Exp $     */
 
 /*-
  * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -137,14 +137,15 @@
        TULIP_CHIP_MX98713A  = 12,      /* Macronix 98713A PMAC */
        TULIP_CHIP_MX98715   = 13,      /* Macronix 98715 PMAC */
        TULIP_CHIP_MX98715A  = 14,      /* Macronix 98715A PMAC */
-       TULIP_CHIP_MX98725   = 15,      /* Macronix 98725 PMAC */
-       TULIP_CHIP_WB89C840F = 16,      /* Winbond 89C840F */
-       TULIP_CHIP_DM9102    = 17,      /* Davicom DM9102 */
-       TULIP_CHIP_DM9102A   = 18,      /* Davicom DM9102A */
-       TULIP_CHIP_AL981     = 19,      /* ADMtek AL981 */
-       TULIP_CHIP_AX88140   = 20,      /* ASIX AX88140 */
-       TULIP_CHIP_AX88141   = 21,      /* ASIX AX88141 */
-       TULIP_CHIP_X3201_3   = 22,      /* Xircom X3201-3 */
+       TULIP_CHIP_MX98715AEC_X = 15,   /* Macronix 98715AEC-C, -E PMAC */
+       TULIP_CHIP_MX98725   = 16,      /* Macronix 98725 PMAC */
+       TULIP_CHIP_WB89C840F = 17,      /* Winbond 89C840F */
+       TULIP_CHIP_DM9102    = 18,      /* Davicom DM9102 */
+       TULIP_CHIP_DM9102A   = 19,      /* Davicom DM9102A */
+       TULIP_CHIP_AL981     = 20,      /* ADMtek AL981 */
+       TULIP_CHIP_AX88140   = 21,      /* ASIX AX88140 */
+       TULIP_CHIP_AX88141   = 22,      /* ASIX AX88141 */
+       TULIP_CHIP_X3201_3   = 23,      /* Xircom X3201-3 */
 } tulip_chip_t;
 
 #define        TULIP_CHIP_NAMES                                                \
@@ -164,6 +165,7 @@
        "Macronix MX98713A",                                            \
        "Macronix MX98715",                                             \
        "Macronix MX98715A",                                            \
+       "Macronix MX98715AEC-x",                                        \
        "Macronix MX98725",                                             \
        "Winbond 89C840F",                                              \
        "Davicom DM9102",                                               \
@@ -318,6 +320,7 @@
        u_long          ts_tx_lc;       /* late collision count */
 };
 
+#ifndef _STANDALONE
 /*
  * Software state per device.
  */
@@ -437,6 +440,7 @@
 
        int     sc_rxptr;               /* next ready RX descriptor/descsoft */
 };
+#endif
 
 /* sc_flags */
 #define        TULIPF_WANT_SETUP       0x00000001      /* want filter setup */
diff -r 70ae916a6158 -r e218b59dcd4b sys/dev/pci/if_tlp_pci.c
--- a/sys/dev/pci/if_tlp_pci.c  Thu Aug 03 03:00:04 2000 +0000
+++ b/sys/dev/pci/if_tlp_pci.c  Thu Aug 03 03:07:30 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_tlp_pci.c,v 1.45 2000/07/17 18:12:00 tron Exp $     */
+/*     $NetBSD: if_tlp_pci.c,v 1.46 2000/08/03 03:07:31 castor Exp $   */
 
 /*-
  * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -406,6 +406,8 @@
        case TULIP_CHIP_MX98715:
                if (sc->sc_rev >= 0x20)
                        sc->sc_chip = TULIP_CHIP_MX98715A;
+               if (sc->sc_rev >= 0x25)
+                       sc->sc_chip = TULIP_CHIP_MX98715AEC_X;
                if (sc->sc_rev >= 0x30)
                        sc->sc_chip = TULIP_CHIP_MX98725;
                break;
@@ -465,6 +467,7 @@
        case TULIP_CHIP_MX98713A:
        case TULIP_CHIP_MX98715:
        case TULIP_CHIP_MX98715A:
+       case TULIP_CHIP_MX98715AEC_X:
        case TULIP_CHIP_MX98725:
        case TULIP_CHIP_DM9102:
        case TULIP_CHIP_DM9102A:
@@ -784,6 +787,7 @@
 
        case TULIP_CHIP_MX98713A:
        case TULIP_CHIP_MX98715A:
+       case TULIP_CHIP_MX98715AEC_X:
        case TULIP_CHIP_MX98725:
                /*
                 * The MX98713A has an MII as well as an internal Nway block,



Home | Main Index | Thread Index | Old Index