?? scu2niuc.c
字號:
/*-------------------------------------------------------------------------*/ /*
Module: NiuC for niu interface , NiuC 0 is ABIS, NiuC 1 is cacsade
Name: Zhujing
History: Time Op
99/9/22 Create
*/ /*-------------------------------------------------------------------------*/
#include <psos.h>
#include "board.h"
#include "sdev.h"
#include "bspcomm.h"
#include "bspspec.h"
#include "scu2niuc.h"
#define BT8370_REG unsigned char
#define BT8370_DLINKS_PER_PORT 2
#define BT8370_SA_BYTES_PER_PORT 5
#define BT8370_TS_PER_PORT 32
#define BT8370_RUSLIP (1<<1)
#define BT8370_RFSLIP (1<<2)
#define BT8370_RSDIR (1<<3)
#define BT8370_ALOOP (1 << 0)
#define BT8370_FLOOP (1 << 1)
#define BT8370_LLOOP (1 << 2)
#define BT8370_PLOOP (1 << 3)
#define BT8370_RLOF (1 << 1)
#define BT8370_RLOS (1 << 2)
#define BT8370_RALOS (1 << 3)
#define BT8370_RAIS (1 << 4)
typedef struct {
BT8370_REG DID;
BT8370_REG CR0;
BT8370_REG JAT_CR;
BT8370_REG IRR;
BT8370_REG ISR7_ALARM1;
BT8370_REG ISR6_ALARM2;
BT8370_REG ISR5_ERROR;
BT8370_REG ISR4_COUNT;
BT8370_REG ISR3_TIMER;
BT8370_REG ISR2_DL[BT8370_DLINKS_PER_PORT];
BT8370_REG ISR0_PATT;
BT8370_REG IER7_ALARM1;
BT8370_REG IER6_ALARM2;
BT8370_REG IER5_ERROR;
BT8370_REG IER4_COUNT;
BT8370_REG IER3_TIMER;
BT8370_REG IER2_DL[BT8370_DLINKS_PER_PORT];
BT8370_REG IER0_PATT;
BT8370_REG LOOP;
BT8370_REG DL3_TS;
BT8370_REG DL3_BIT;
BT8370_REG FSTAT;
BT8370_REG PIO;
BT8370_REG POE;
BT8370_REG CMUX;
BT8370_REG TMUX;
BT8370_REG TEST;
BT8370_REG SPARE_1[3];
BT8370_REG LIU_CR;
BT8370_REG RSTAT;
BT8370_REG RLIU_CR;
BT8370_REG LPF;
BT8370_REG VGA_MAX;
BT8370_REG EQ_DAT;
BT8370_REG EQ_PTR;
BT8370_REG DSLICE;
BT8370_REG EQ_OUT;
BT8370_REG VGA;
BT8370_REG PRE_EQ;
BT8370_REG SPARE1[5];
BT8370_REG COEFF[8];
BT8370_REG GAIN[5];
BT8370_REG SPARE_2[3];
BT8370_REG RCR0;
BT8370_REG RPATT;
BT8370_REG RLB;
BT8370_REG LBA;
BT8370_REG LBD;
BT8370_REG RALM;
BT8370_REG LATCH;
BT8370_REG ALM1;
BT8370_REG ALM2;
BT8370_REG ALM3;
BT8370_REG SPARE_3[6];
BT8370_REG FERR[2];
BT8370_REG CERR[2];
BT8370_REG LCV[2];
BT8370_REG FEBE[2];
BT8370_REG BERR[2];
BT8370_REG AERR;
BT8370_REG RSA[BT8370_SA_BYTES_PER_PORT];
BT8370_REG SHAPE[8];
BT8370_REG TLIU_CR;
BT8370_REG SPARE_4[7];
BT8370_REG TCR0;
BT8370_REG TCR1;
BT8370_REG TFRM;
BT8370_REG TERROR;
BT8370_REG TMAN;
BT8370_REG TALM;
BT8370_REG TPATT;
BT8370_REG TLB;
BT8370_REG LBP;
BT8370_REG SPARE_5[2];
BT8370_REG TSA[BT8370_SA_BYTES_PER_PORT];
BT8370_REG SPARE_6[16];
BT8370_REG CLAD_CR;
BT8370_REG CSEL;
BT8370_REG CPHASE;
BT8370_REG CTEST;
BT8370_REG SPARE_7[12];
BT8370_REG BOP;
BT8370_REG TBOP;
BT8370_REG RBOP;
BT8370_REG BOP_STAT;
BT8370_REG DL1_TS;
BT8370_REG DL1_BIT;
BT8370_REG DL1_CTL;
BT8370_REG RDL1_FFC;
BT8370_REG RDL1;
BT8370_REG RDL1_STAT;
BT8370_REG PRM;
BT8370_REG TDL1_FEC;
BT8370_REG TDL1_EOM;
BT8370_REG TDL1;
BT8370_REG TDL1_STAT;
BT8370_REG DL2_TS;
BT8370_REG DL2_BIT;
BT8370_REG DL2_CTL;
BT8370_REG RDL2_FFC;
BT8370_REG RDL2;
BT8370_REG RDL2_STAT;
BT8370_REG SPARE_75[1];
BT8370_REG TDL2_FEC;
BT8370_REG TDL2_EOM;
BT8370_REG TDL2;
BT8370_REG TDL2_STAT;
BT8370_REG DL_TEST[5];
BT8370_REG SPARE_8[17];
BT8370_REG SBI_CR;
BT8370_REG RSB_CR;
BT8370_REG RSYNC_BIT;
BT8370_REG RSYNC_TS;
BT8370_REG TSB_CR;
BT8370_REG TSYNC_BIT;
BT8370_REG TSYNC_TS;
BT8370_REG RSIG_CR;
BT8370_REG RSYNC_FRM;
BT8370_REG SSTAT;
BT8370_REG STACK;
BT8370_REG RPHASE;
BT8370_REG TPHASE;
BT8370_REG PERR;
BT8370_REG SPARE_9[2];
BT8370_REG SBC[BT8370_TS_PER_PORT];
BT8370_REG TPC[BT8370_TS_PER_PORT];
BT8370_REG TSIG[BT8370_TS_PER_PORT];
BT8370_REG TSLIP_LO[BT8370_TS_PER_PORT];
BT8370_REG TSLIP_HI[BT8370_TS_PER_PORT];
BT8370_REG RPC[BT8370_TS_PER_PORT];
BT8370_REG RSIG[BT8370_TS_PER_PORT];
BT8370_REG RSLIP_LO[BT8370_TS_PER_PORT];
BT8370_REG RSLIP_HI[BT8370_TS_PER_PORT];
}BT8370Reg;
static void BT8370Init( BT8370Reg *bt8370, int mode ) /* mode=1 hdsl */
{
int i;
/*-----------------------------------------------------------------------*/
/* 全局控制狀態(tài)寄存器 */
/*-----------------------------------------------------------------------*/
bt8370->CR0 = 0; /* RESET = 0;
FRAME[3:0] = 0000, FAS only;
T1/E1 = 0, E1模式. */
bt8370->JAT_CR = 0; /* JEN = 0, JDIR = 0, E1通路;
JCENTER = 0, 正常模式;
JSIZE = 000,8 bits. */
/*-----------------------------------------------------------------------*/
/* 中斷使能寄存器 */
/*-----------------------------------------------------------------------*/
bt8370->IER7_ALARM1 = 0x1E; /* RAIS = 1, 使能RAIS,全1告警;
RALOS = 1, 使能RALOS,接收模擬信號丟失告警;
RLOS = 1, 使能RLOS,接收信號丟失告警;
RLOF = 1, 使能RLOF,接收幀丟失。 */
bt8370->IER6_ALARM2 = 0;
bt8370->IER5_ERROR = 0x40; /* RSLIP = 1, 使能RSLIP。 */
bt8370->IER4_COUNT = 0;
bt8370->IER3_TIMER = 0;
bt8370->IER2_DL[0] = 0;
bt8370->IER2_DL[1] = 0;
bt8370->IER0_PATT = 0;
/*-----------------------------------------------------------------------*/
/* 基本控制狀態(tài)寄存器 */
/*-----------------------------------------------------------------------*/
bt8370->LOOP = 0; /* 正常模式 */
bt8370->DL3_TS = 0x61;
bt8370->DL3_BIT = 0xff;
bt8370->FSTAT = 0x9;
bt8370->PIO = 0xE4; /* ONESEC_IO = 1, ONESEC 輸出;
RDL_IO = 1, RDLCKO 和 RDLO;
TDL_IO = 1, TDLCKO 和 TDLI 信號;
INDY_IO = 0, TNEGO 和 TPOSO;
RFSYNC_IO = 0, RFSYNC 輸入;
RMSYNC_IO = 1, RMSYNC 輸出;
TFSYNC_IO = 0, TFSYNC 輸入;
TMSYNC_IO = 0, TMSYNC 輸入. */
bt8370->POE = 0x0; /* 所有輸出使能. */
bt8370->CMUX = 0x40; /* RSBCKI[1:0] = 01, RSB 的時鐘源為 TSB;
TSBCKI[1:0] = 00, 正常的TSB時鐘;
CLADI[1:0] = 00, 正常的CLAD時鐘;
TCKI[1:0] = 00, TCKI 作為 TCKI 的時鐘源. */
bt8370->TMUX = 0;
bt8370->TEST = 0;
/*-----------------------------------------------------------------------*/
/* RLIU 寄存器 */
/*-----------------------------------------------------------------------*/
bt8370->LIU_CR = 0x41; /* RST_LIU = 0, 正常模式; (推薦0x41)
SQUELCH = 1;
FORCE_VGA = 0,
RDIGI = 0, E1輸入使能;
ATTN[1:0] = 11. */
bt8370->RSTAT = 0x2a;
bt8370->RLIU_CR = 0xb1; /* FRZ_SHORT = 0, (推薦0xb1)
HI_CSLICE = 0, 正常模式;
AGC[1:0] = 11, AGC 觀察周期, 2048bits;
EQ_FRZ=0,OOR_BLOCK = 0, RBLO = 0, LONG_EYE = 1 */
bt8370->LPF = 0x33; /* RPLL 低通濾波器增益 */
bt8370->VGA_MAX = 0x34; /* (推薦0x34) */
bt8370->EQ_DAT = 0xea;
bt8370->EQ_PTR = 0x0;
bt8370->DSLICE = 0xba; /* (推薦0xba) */
bt8370->EQ_OUT = 0xda; /* M1_ERR[1:0] = 11, 缺省值; (推薦0xda)
M2_ERR[1:0] = 01, 缺省值;
EQ_OUT[3:0] = 1010, 缺省值. */
bt8370->VGA = 0x12;
bt8370->PRE_EQ = 0xa6; /* (推薦0xa6)*/
bt8370->COEFF[0] = 0xe2;
bt8370->COEFF[1] = 0x7e;
bt8370->COEFF[2] = 0x76;
bt8370->COEFF[3] = 0x36;
bt8370->COEFF[4] = 0xe9;
bt8370->COEFF[5] = 0xb;
bt8370->COEFF[6] = 0xe5;
bt8370->COEFF[7] = 0xed;
bt8370->GAIN[0] = 0x16;
bt8370->GAIN[1] = 0x1f;
bt8370->GAIN[2] = 0x21;
bt8370->GAIN[3] = 0x24;
bt8370->GAIN[4] = 0x26;
/*-----------------------------------------------------------------------*/
/* RCVR 寄存器 */
/*-----------------------------------------------------------------------*/
bt8370->RCR0 = 0x9; /* RAMI=0,接收格式為B8ZS/HDB3(E1);
接收HDSL信號時,RAMI = 1;
RABORT = 0, 正常幀操作;
RFORCE = 0,
BT8370_RLOFD-A = 1100,
接收幀檢驗標(biāo)準(zhǔn)為三個連續(xù)的FAS錯誤;
RZCS = 0; */
bt8370->RPATT = 0x39;
bt8370->RLB = 0;
bt8370->LBA = 0;
bt8370->LBD = 0;
bt8370->RALM = 0x20; /* FS_NFAS = 1, FERR 和 FRED 包含 FS/NFAS. */
bt8370->LATCH = 0x0b;
/*-----------------------------------------------------------------------*/
/* TLIU 寄存器 */
/*-----------------------------------------------------------------------*/
bt8370->SHAPE[0] = 0x14;
bt8370->SHAPE[1] = 0x14;
bt8370->SHAPE[2] = 0x14;
bt8370->SHAPE[3] = 0x14;
bt8370->SHAPE[4] = 0;
bt8370->SHAPE[5] = 0;
bt8370->SHAPE[6] = 0;
bt8370->SHAPE[7] = 0;
bt8370->TLIU_CR = 0x4a; /* TURNS = 0, 1:1.36傳輸比;
TERM = 1,
LBO[1:0] = 00,
PULSE[2:0] = 101, 75歐同軸電纜, E1模式;
AISCLK = 0. */
/*-------------------------------------------------------------------------------------*/
/* TRANSMIT 寄存器 */
/*-------------------------------------------------------------------------------------*/
bt8370->TCR0 = 0; /* TFRAME[3:0] = 0000, 傳輸幀格式只包含F(xiàn)AS. */
bt8370->TCR1 = 0xD1; /* TNRZ = 1, TPOSO/TNEGO 由 TNRZO/MSYNCO 代替;
TABORT = 1,
TLOFC-A = 100, 傳輸失幀標(biāo)準(zhǔn)為連續(xù)的三個FAS錯誤;
TZCS[1:0] = 01, ZCS 為HDB3. */
bt8370->TFRM = 0x11; /* INS_MYEL = 0,
INS_YEL = 1, 插入遠端告警(YELLOW ALARM 在E1中即為遠端告警);
INS_MF = 0,
INS_FE = 0,
INS_CRC = 0,
INS_FBIT = 1, 插入幀頭 */
bt8370->TERROR = 0;
bt8370->TMAN = 0xf8;
bt8370->TALM = 0x10; /* AUTO_YEL = 1, 跟隨FRED狀態(tài)變化(FRED;addr0x49) */
bt8370->TPATT = 0;
bt8370->TLB = 0;
bt8370->LBP = 0xfe;
/*-------------------------------------------------------------------------------------*/
/* Transmit Sa-Byte 緩沖區(qū) */
/*-------------------------------------------------------------------------------------*/
bt8370->TSA[0] = 0xff;
bt8370->TSA[1] = 0xff;
bt8370->TSA[2] = 0xff;
bt8370->TSA[3] = 0xff;
bt8370->TSA[4] = 0xff;
/*-------------------------------------------------------------------------------------*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -