Source-Changes-HG archive

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

[src/trunk]: src/sys/dev/pci sync with latest Linux driver, avoid framing err...



details:   https://anonhg.NetBSD.org/src/rev/f672c0e12cc6
branches:  trunk
changeset: 512943:f672c0e12cc6
user:      itojun <itojun%NetBSD.org@localhost>
date:      Thu Jul 19 17:02:05 2001 +0000

description:
sync with latest Linux driver, avoid framing error on LMC1200 (T1/E1).
from hal%vailsys.com@localhost

diffstat:

 sys/dev/pci/if_lmc_media.c |  97 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 79 insertions(+), 18 deletions(-)

diffs (137 lines):

diff -r 989e18e13069 -r f672c0e12cc6 sys/dev/pci/if_lmc_media.c
--- a/sys/dev/pci/if_lmc_media.c        Thu Jul 19 16:36:14 2001 +0000
+++ b/sys/dev/pci/if_lmc_media.c        Thu Jul 19 17:02:05 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_lmc_media.c,v 1.8 2001/07/19 16:14:50 itojun Exp $  */
+/*     $NetBSD: if_lmc_media.c,v 1.9 2001/07/19 17:02:05 itojun Exp $  */
 
 /*-
  * Copyright (c) 1997-1999 LAN Media Corporation (LMC)
@@ -902,25 +902,65 @@
        lmc_mii_writereg(sc, 0, 16, mii16 | LMC_MII16_T1_RST);
        lmc_mii_writereg(sc, 0, 16, mii16);
 
-       /* set T1 or E1 line impedance */
-       /* mii16 &= ~LMC_MII16_T1_Z; */
+       /* set T1 line impedance */
        mii16 |= LMC_MII16_T1_Z;
        lmc_mii_writereg(sc, 0, 16, mii16);
 
-       /* Standard LMC1200 init code */
-       lmc_t1_write(sc, 0x01, 0x1B);  /* CR0     - primary control          */
-       lmc_t1_write(sc, 0x02, 0x42);  /* JAT_CR  - jitter atten config      */
-       lmc_t1_write(sc, 0x14, 0x00);  /* LOOP    - loopback config          */
-       lmc_t1_write(sc, 0x15, 0x00);  /* DL3_TS  - xtrnl datalink timeslot  */
-       lmc_t1_write(sc, 0x18, 0xFF);  /* PIO     - programmable I/O         */
-       lmc_t1_write(sc, 0x19, 0x30);  /* POE     - programmable OE          */
-       lmc_t1_write(sc, 0x1A, 0x0F);  /* CMUX    - clock input mux          */
-       lmc_t1_write(sc, 0x20, 0x41);  /* LIU_CR  - RX LIU config            */
-       lmc_t1_write(sc, 0x22, 0x76);  /* RLIU_CR - RX LIU config            */
+
+       /* CR0 - Set framing to ESF + Force CRC - Set T1 */
+       lmc_t1_write(sc, 0x01, 0x1b);
+
+       /* Reset Elastic store to center - 64 bit elastic store */
+       lmc_t1_write(sc, 0x02, 0x4b);
+
+       /* Release Elastic store reset */
+       lmc_t1_write(sc, 0x02, 0x43);
+
+       /* Disable all interrupts except BOP receive */
+       lmc_t1_write(sc, 0x0C, 0x00);
+       lmc_t1_write(sc, 0x0D, 0x00);
+       lmc_t1_write(sc, 0x0E, 0x00);
+       lmc_t1_write(sc, 0x0F, 0x00);
+       lmc_t1_write(sc, 0x10, 0x00);
+       lmc_t1_write(sc, 0x11, 0x00);
+       lmc_t1_write(sc, 0x12, 0x80);
+       lmc_t1_write(sc, 0x13, 0x00);
+
+       lmc_t1_write(sc, 0x14, 0x00);  /* LOOP    - loopback config         */
+       lmc_t1_write(sc, 0x15, 0x00);  /* DL3_TS  - xtrnl datalink timeslot */
+       lmc_t1_write(sc, 0x18, 0xFF);  /* PIO     - programmable I/O        */
+       lmc_t1_write(sc, 0x19, 0x30);  /* POE     - programmable OE         */
+       lmc_t1_write(sc, 0x1A, 0x0F);  /* CMUX    - clock input mux         */
+
+       lmc_t1_write(sc, 0x20, 0xC1);  /* LIU_CR  - RX LIU config           */
+       lmc_t1_write(sc, 0x20, 0x41);  /* LIU_CR  - RX LIU config           */
+
+       lmc_t1_write(sc, 0x22, 0xB1);  /* RLIU_CR - RX LIU config           */
+       lmc_t1_write(sc, 0x24, 0x21);  /* VGA_MAX -20db sesitivity          */
+       lmc_t1_write(sc, 0x2A, 0xA6);  /* Force off the pre-equalizer       */
+
+       /* Equalizer Gain threshholds */
+       lmc_t1_write(sc, 0x38, 0x24);  /* RX_TH0  - RX gain threshold 0      */
+       lmc_t1_write(sc, 0x39, 0x28);  /* RX_TH1  - RX gain threshold 0      */
+       lmc_t1_write(sc, 0x3A, 0x2C);  /* RX_TH2  - RX gain threshold 0      */
+       lmc_t1_write(sc, 0x3B, 0x30);  /* RX_TH3  - RX gain threshold 0      */
+       lmc_t1_write(sc, 0x3C, 0x34);  /* RX_TH4  - RX gain threshold 0      */
+
+       /* Reset LIU */
+       lmc_t1_write(sc, 0x20, 0x81);  /* LIU_CR  - RX LIU (reset RLIU)      */
+       lmc_t1_write(sc, 0x20, 0x01);  /* LIU_CR  - RX LIU (clear reset)     */
+
        lmc_t1_write(sc, 0x40, 0x03);  /* RCR0    - RX config                */
+       lmc_t1_write(sc, 0x41, 0x00);  /* Zero test pattern generator        */
+
+       lmc_t1_write(sc, 0x42, 0x09);  /* DN_LEN is 8, UP_LEN is 5           */
+       lmc_t1_write(sc, 0x43, 0x08);  /* Loopback activate                  */
+       lmc_t1_write(sc, 0x44, 0x24);  /* Loopback deactivate                */
+
        lmc_t1_write(sc, 0x45, 0x00);  /* RALM    - RX alarm config          */
-       lmc_t1_write(sc, 0x46, 0x05);  /* LATCH   - RX alarm/err/cntr latch  */
-       lmc_t1_write(sc, 0x68, 0x40);  /* TLIU_CR - TX LIU config            */
+       lmc_t1_write(sc, 0x46, 0x08);  /* LATCH   - RX alarm/err/cntr latch  */
+
+       lmc_t1_write(sc, 0x68, 0x4E);  /* TLIU_CR - TX LIU config            */
        lmc_t1_write(sc, 0x70, 0x0D);  /* TCR0    - TX framer config         */
        lmc_t1_write(sc, 0x71, 0x05);  /* TCR1    - TX config                */
        lmc_t1_write(sc, 0x72, 0x0B);  /* TFRM    - TX frame format          */
@@ -929,23 +969,44 @@
        lmc_t1_write(sc, 0x75, 0x00);  /* TALM    - TX alarm signal config   */
        lmc_t1_write(sc, 0x76, 0x00);  /* TPATT   - TX test pattern config   */
        lmc_t1_write(sc, 0x77, 0x00);  /* TLB     - TX inband loopback confg */
-       lmc_t1_write(sc, 0x90, 0x05);  /* CLAD_CR - clock rate adapter confg */
+       lmc_t1_write(sc, 0x90, 0x06);  /* CLAD_CR - clock rate adapter confg */
        lmc_t1_write(sc, 0x91, 0x05);  /* CSEL    - clad freq sel            */
-       lmc_t1_write(sc, 0xA6, 0x00);  /* DL1_CTL - DL1 control              */
+       lmc_t1_write(sc, 0x92, 0x00);  /* CLAD Phase Det                     */
+       lmc_t1_write(sc, 0x93, 0x00);  /* No CLAD Test                       */
+
+       /* Activate BOP */
+       lmc_t1_write(sc, 0xA0, 0xea);  /* BOP  - Bit oriented protocol xcvr  */
+
+       lmc_t1_write(sc, 0xA4, 0x40);  /* DL1_TS  - DL1 time slot enable     */
+       lmc_t1_write(sc, 0xA5, 0x00);  /* DL1_BIT - DL1 bit enable           */
+       lmc_t1_write(sc, 0xA6, 0x03);  /* DL1_CTL - DL1 control              */
+       lmc_t1_write(sc, 0xA7, 0x00);  /* RDL1_FFC - DL1 FIFO Size           */
+       lmc_t1_write(sc, 0xAB, 0x00);  /* TDL1_FFC - DL1 Empty Control       */
+
+       lmc_t1_write(sc, 0xAA, 0x00);  /* PRM - no perf report messages      */
        lmc_t1_write(sc, 0xB1, 0x00);  /* DL2_CTL - DL2 control              */
        lmc_t1_write(sc, 0xD0, 0x47);  /* SBI_CR  - sys bus iface config     */
        lmc_t1_write(sc, 0xD1, 0x70);  /* RSB_CR  - RX sys bus config        */
        lmc_t1_write(sc, 0xD4, 0x30);  /* TSB_CR  - TX sys bus config        */
+
        for (i = 0; i < 32; i++) {
                lmc_t1_write(sc, 0x0E0+i, 0x00); /*SBCn sysbus perchannel ctl */
                lmc_t1_write(sc, 0x100+i, 0x00); /* TPCn - TX per-channel ctl */
                lmc_t1_write(sc, 0x180+i, 0x00); /* RPCn - RX per-channel ctl */
        }
        for (i = 1; i < 25; i++) {
+               /* SBCn - sys bus per-channel ctl */
                lmc_t1_write(sc, 0x0E0+i, 0x0D);
-                                       /* SBCn - sys bus per-channel ctl    */
        }
 
+       /* PFM */
+       lmc_t1_write(sc, 0xA4, 0x40);  /* DL1_TS  -  DL1 time slot enable     */
+       lmc_t1_write(sc, 0xA5, 0x00);  /* DL1_BIT -  DL1 bit enable           */
+       lmc_t1_write(sc, 0xA6, 0x03);  /* DL1_CTL -  DL1 control              */
+       lmc_t1_write(sc, 0xA7, 0x00);  /* RDL1_FFC - DL1 FIFO Size            */
+       lmc_t1_write(sc, 0xAB, 0x00);  /* TDL1_FFC - DL1 Empty Control        */
+
+
        mii16 |= LMC_MII16_T1_XOE;
        lmc_mii_writereg (sc, 0, 16, mii16);
        sc->lmc_miireg16 = mii16; 



Home | Main Index | Thread Index | Old Index