亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? peb2254.c

?? 這是單板上DPRAM的驅動程序
?? C
字號:
#include <psos.h>
#include "board.h"
#include "bspcomm.h"
#include "bspspec.h"

/************************************/
/* PEB2254 控制寄存器地址           */
/************************************/
#define E1_XFIFOH   0x00
#define E1_XFIFOL   0x01
#define E1_MODE     0x03 
#define E1_IPC      0x08 
#define E1_CCR1     0x09 
#define E1_IMR0     0x14 
#define E1_IMR1     0x15 
#define E1_IMR2     0x16 
#define E1_IMR3     0x17 
#define E1_IMR4     0x18 
#define E1_FMR0     0x1A 
#define E1_FMR1     0x1B 
#define E1_FMR2     0x1C 
#define E1_LOOP     0x1D
#define E1_XSW      0x1E 
#define E1_XSP      0x1F 
#define E1_XC0      0x20 
#define E1_XC1      0x21 
#define E1_RC0      0x22 
#define E1_RC1      0x23 
#define E1_XPM0     0x24 
#define E1_XPM1     0x25 
#define E1_XPM2     0x26 
#define E1_TSWM     0x27 
#define E1_IDLE     0x29 
#define E1_ICB1     0x30 
#define E1_ICB2     0x31 
#define E1_ICB3     0x32 
#define E1_ICB4     0x33 
#define E1_LIM0     0x34 
#define E1_LIM1     0x35
#define E1_PCD      0x36 
#define E1_PCR      0x37 
#define E1_DEC      0x60 

/**********************************/
/* PEB2254 狀態寄存器地址         */
/**********************************/
#define E1_RFIFOH     0x00
#define E1_RFIFOL     0x01
#define E1_FRS0       0x4C
#define E1_FRS1       0x4D
#define E1_RSW        0x4E
#define E1_RSP        0x4F
#define E1_FECL       0x50
#define E1_FECH       0x51
#define E1_CVCL       0x52
#define E1_CVCH       0x53
#define E1_CEC1L      0x54
#define E1_CEC1H      0x55
#define E1_EBCL       0x56
#define E1_EBCH       0x57
#define E1_CEC2L      0x58
#define E1_CEC2H      0x59
#define E1_CEC3L      0x5A
#define E1_CEC3H      0x5B
#define E1_RSA4       0x5C
#define E1_RSA5       0x5D
#define E1_RSA6       0x5E
#define E1_RSA7       0x5F
#define E1_RSA8       0x60
#define E1_SIS        0x64
#define E1_RSIS       0x65
#define E1_RBCL       0x66
#define E1_RBCH       0x67
#define E1_ISR0       0x68
#define E1_ISR1       0x69
#define E1_ISR2       0x6A
#define E1_ISR3       0x6B
#define E1_GIS        0x6E


#define TIMEPERIOD    50
#define SLPVALVE      0x5
#define SLNVALVE      0x5

#define E1WriteChar(BaseAddr,RegName,Data) \
    *((unsigned char *)(BaseAddr+RegName))=(unsigned char)Data
#define E1ReadChar(BaseAddr,RegName) \
    *((unsigned char *)(BaseAddr+RegName)) 

static void PEB2254Init(void *pDataBuf, PEB2254CfgStruct *cfg)
{
    PEB2254CfgStruct *pCfg = (PEB2254CfgStruct*)(pDataBuf);
/*-------------------------<< Initial data >>-------------------------------*/
    memmove(pCfg,cfg,sizeof(PEB2254CfgStruct));

    pCfg->Timer=0;
    pCfg->SlpCount=0;
    pCfg->SlnCount=0;
    pCfg->E1Los=FALSE;
    pCfg->E1Lfa=FALSE;
    (pCfg->TokenWin).LattestToken=0x0;
    (pCfg->TokenWin).LastToken=0x0;    
    (pCfg->TokenWin).CurToken=0x0;
    
    /* PCM30, send double frame,2Mbps,should set DEC register to read counter */
    E1WriteChar(pCfg->BaseAddr,E1_FMR1,0x02);    
    /* CLKX pin output 4M,active high,RCLK pin output in synchronization state*/
    E1WriteChar(pCfg->BaseAddr,E1_LIM0,0x34);    
    /* RL1/2 differ between 1.04v,ternary code,transmit slicer active */
    E1WriteChar(pCfg->BaseAddr,E1_LIM1,0x10);    
    if(pCfg->Coax_Or_Twist==Coax_Cable)
       E1WriteChar(pCfg->BaseAddr,E1_XPM0,0x9C);
    else
       E1WriteChar(pCfg->BaseAddr,E1_XPM0,0xBD); /* 9cH for 75,bdh for 120 */
    E1WriteChar(pCfg->BaseAddr,E1_XPM1,0x03);    /* for both 75 and 120 */
    E1WriteChar(pCfg->BaseAddr,E1_XPM2,0x00);    /* for both 75 and 120 */
    /* receive code or send code is AMI,AIS according to G.732 */
    E1WriteChar(pCfg->BaseAddr,E1_FMR0,0xf4);    
    /* the interupt can be visible,Int pin active low */
    E1WriteChar(pCfg->BaseAddr,E1_IPC,0x80);    
    /* CAS synchronise according to G.732,RTR/TTR disable */
    E1WriteChar(pCfg->BaseAddr,E1_CCR1,0x00);    
    E1WriteChar(pCfg->BaseAddr,E1_IMR0,0xff);    /* mask all interrupts */
    E1WriteChar(pCfg->BaseAddr,E1_IMR1,0xff);    
    E1WriteChar(pCfg->BaseAddr,E1_IMR2,0xff);
    E1WriteChar(pCfg->BaseAddr,E1_IMR3,0xff);
    /*recv 2 frame, recv from statis buf,AIS auto send to RDO,A-bit auto send */
    E1WriteChar(pCfg->BaseAddr,E1_FMR2,0x02);    
    E1WriteChar(pCfg->BaseAddr,E1_LOOP,0x00);    /* not in test */
    E1WriteChar(pCfg->BaseAddr,E1_MODE,0xe0);    /* not HDLC frame,recv stop*/
    E1WriteChar(pCfg->BaseAddr,E1_XSW,0x9f);     /* service word is fixed val*/
    E1WriteChar(pCfg->BaseAddr,E1_XSP,0x07);     /* CAS inactive */
    E1WriteChar(pCfg->BaseAddr,E1_XC0,0x01);     /* the offset value */
    E1WriteChar(pCfg->BaseAddr,E1_XC1,0x3e);     /* the offset value */
    E1WriteChar(pCfg->BaseAddr,E1_RC0,0x05);
    /* 3 consecutive FAS or service word lost will lead to asynchronization */
    E1WriteChar(pCfg->BaseAddr,E1_RC1,0x80);     
    E1WriteChar(pCfg->BaseAddr,E1_PCD,0xff);    /* LOS set period is 2ms */
    E1WriteChar(pCfg->BaseAddr,E1_PCR,0xff);    /* LOS reset period is 2ms */
    E1WriteChar(pCfg->BaseAddr,E1_DEC,0x00);    /* not read any counter */
    E1WriteChar(pCfg->BaseAddr,E1_MODE,0xe0);   /* not HDLC frame,recv stop */ 
    /* FAS and service word been generated by FALC54 */
    E1WriteChar(pCfg->BaseAddr,E1_TSWM,0x00);   
    E1WriteChar(pCfg->BaseAddr,E1_IDLE,0x54);   /* IDLE set 0x54 */
    E1WriteChar(pCfg->BaseAddr,E1_ICB1,0x00);
    E1WriteChar(pCfg->BaseAddr,E1_ICB2,0x00);
    E1WriteChar(pCfg->BaseAddr,E1_ICB3,0x00);
    E1WriteChar(pCfg->BaseAddr,E1_ICB4,0x00);   /* no IDLE has been selected */
}

static int PEB2254Cntrl(void *pDataBuf, int cmd, void *pParam, int maxlen)
{
    unsigned char RegValue;
    struct TE1ChipStatus *pE1Alarm;
    
    PEB2254CfgStruct* pCfg =(PEB2254CfgStruct *)(pDataBuf);   
    switch(cmd)
    {
        case SDC_REINIT:
            PEB2254Init(pDataBuf, pCfg);
            break;
            
        case SDC_SET_LOOPBACK_MODE:
            RegValue=E1ReadChar(pCfg->BaseAddr,E1_LIM0);
            RegValue|=0x02;
            E1WriteChar(pCfg->BaseAddr,E1_LIM0,RegValue);
            RegValue=E1ReadChar(pCfg->BaseAddr,E1_FMR1);
            RegValue|=0x01;
            E1WriteChar(pCfg->BaseAddr,E1_FMR1,RegValue);
            break;

        case SDC_SET_NORMAL_MODE:
            RegValue=E1ReadChar(pCfg->BaseAddr,E1_LIM0);
            RegValue&=0xFD;
            E1WriteChar(pCfg->BaseAddr,E1_LIM0,RegValue);
            RegValue=E1ReadChar(pCfg->BaseAddr,E1_FMR1);
            RegValue&=0xFE;
            E1WriteChar(pCfg->BaseAddr,E1_FMR1,RegValue);
            break;    
   
         case SDC_READ_TOKEN:
            if(maxlen!=sizeof(unsigned char))
                return SDE_INVALID_ARG; 
            RegValue=E1ReadChar(pCfg->BaseAddr,E1_RSW);
            RegValue&=0x1f;
            (pCfg->TokenWin).LattestToken=(pCfg->TokenWin).LastToken;
            (pCfg->TokenWin).LastToken=(pCfg->TokenWin).CurToken;    
            (pCfg->TokenWin).CurToken=RegValue;
            if(  (pCfg->TokenWin).CurToken==(pCfg->TokenWin).LastToken
               ||(pCfg->TokenWin).CurToken==(pCfg->TokenWin).LattestToken)
               RegValue=(pCfg->TokenWin).CurToken;
            else if((pCfg->TokenWin).LastToken==(pCfg->TokenWin).LattestToken)
               RegValue=(pCfg->TokenWin).LastToken;
            else
               RegValue=(pCfg->TokenWin).CurToken;
            *(unsigned char*)pParam=RegValue;
            break;    

         case SDC_WRITE_TOKEN:
            if(maxlen!=sizeof(unsigned char))
                return SDE_INVALID_ARG;
            RegValue=E1ReadChar(pCfg->BaseAddr,E1_XSW);
            RegValue&=0xe0;
            RegValue|=*(unsigned char*)pParam;
            E1WriteChar(pCfg->BaseAddr,E1_XSW,RegValue); 
            break;    

         case SDC_GET_ALARMS:
            if(maxlen!=sizeof(struct TE1ChipStatus)) 
                return SDE_INVALID_ARG;   
            pE1Alarm=(struct TE1ChipStatus*)pParam; 
            RegValue=E1ReadChar(pCfg->BaseAddr,E1_FRS0);
            pE1Alarm->bE1Los=(BOOL)((RegValue&0x80)>>7);
            pE1Alarm->bE1Lfa=(BOOL)((RegValue&0x20)>>5);
            RegValue=E1ReadChar(pCfg->BaseAddr,E1_ISR3);
            if((BOOL)(RegValue&0x01)==TRUE)pCfg->SlpCount++;
            if((BOOL)((RegValue&0x02)>>1)==TRUE)pCfg->SlnCount++;
            pCfg->Timer++;
            pE1Alarm->bE1Slp=FALSE;
            pE1Alarm->bE1Sln=FALSE;
            if(pCfg->Timer>=TIMEPERIOD)
            {
               pE1Alarm->bE1Slp=pCfg->SlpCount>=SLPVALVE ? TRUE:FALSE;
               pE1Alarm->bE1Sln=pCfg->SlnCount>=SLNVALVE ? TRUE:FALSE;            
               pCfg->SlpCount=0;
               pCfg->SlnCount=0;
               pCfg->Timer=0;
           }
           break;    
   
        default: 
           return SDE_UNKNOW_CMD;
    }/* end of switch(cmd) */
    return SDE_OK;
}


char *PEB2254BspInit(int DEV, char *FreeMemPtr, PEB2254CfgStruct *cfg)
{
    InstallSD(DEV,NULL,NULL, PEB2254Cntrl, FreeMemPtr);
    PEB2254Init(FreeMemPtr, cfg);  
    FreeMemPtr += sizeof(PEB2254CfgStruct);
    memcpy(FreeMemPtr,"*2254Dat",8);
    FreeMemPtr += 8;
    return FreeMemPtr;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av一区二区| 久久日一线二线三线suv| 色8久久人人97超碰香蕉987| 成人一区二区三区在线观看 | 视频一区中文字幕| 亚洲愉拍自拍另类高清精品| 夜夜爽夜夜爽精品视频| 亚洲男同性恋视频| 一二三四区精品视频| 亚洲第四色夜色| 同产精品九九九| 另类综合日韩欧美亚洲| 久久99这里只有精品| 国产一区二区三区精品欧美日韩一区二区三区 | 69堂精品视频| 日韩欧美国产三级电影视频| 日韩欧美另类在线| 久久精品亚洲麻豆av一区二区| 国产视频视频一区| 日韩理论片在线| 亚洲国产视频一区| 日韩va亚洲va欧美va久久| 奇米综合一区二区三区精品视频| 美女尤物国产一区| 国产二区国产一区在线观看 | 国产欧美精品国产国产专区| 中文字幕第一区二区| 尤物视频一区二区| 美女视频网站黄色亚洲| 国产一区二区三区免费| 成人av资源站| 在线成人免费视频| 久久久久高清精品| 一区二区三区中文字幕电影 | 麻豆高清免费国产一区| 国产成人在线影院| 在线免费av一区| 欧美不卡一二三| 国产精品美女久久久久aⅴ| 亚洲制服欧美中文字幕中文字幕| 欧美a级一区二区| 成人一区二区三区| 欧美日韩高清在线| 国产网站一区二区| 亚洲综合丝袜美腿| 国产一区二区精品久久99| 色网综合在线观看| 一区二区三区日韩在线观看| 亚洲制服丝袜一区| 国产成人在线看| 欧美日韩成人综合| 国产精品人人做人人爽人人添| 亚洲成在线观看| 成a人片亚洲日本久久| 这里只有精品电影| 亚洲欧洲制服丝袜| 国产一区二区在线视频| 在线观看欧美黄色| 欧美激情一区二区| 久久99久久久欧美国产| 在线观看视频91| 久久久久99精品一区| 成人性视频免费网站| 欧美猛男gaygay网站| 国产精品久久久久一区二区三区共| 亚洲国产精品一区二区尤物区| 成人一区二区三区视频| 欧美大片拔萝卜| 五月激情六月综合| av一区二区不卡| 久久久国产精品不卡| 五月激情综合婷婷| 91久久精品国产91性色tv | 一区二区三区丝袜| 国产成人精品一区二区三区网站观看| 欧美美女激情18p| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品乡下勾搭老头1| 日韩欧美在线网站| 天天综合天天综合色| 在线这里只有精品| 亚洲欧美一区二区三区久本道91| 国产凹凸在线观看一区二区| 亚洲精品一区二区三区四区高清| 日韩在线a电影| 欧美麻豆精品久久久久久| 尤物在线观看一区| 一本大道久久a久久精品综合| 亚洲国产高清在线观看视频| 国产一区二区美女诱惑| 精品乱人伦小说| 久久不见久久见中文字幕免费| 欧美日韩一级片在线观看| 亚洲综合色噜噜狠狠| 97久久超碰国产精品电影| 中文字幕 久热精品 视频在线| 国产精品一二一区| 久久久激情视频| 国产福利一区在线| 久久久久国产精品麻豆ai换脸| 久草在线在线精品观看| 精品久久久久香蕉网| 经典三级视频一区| 久久蜜臀中文字幕| 国产激情一区二区三区桃花岛亚洲| 欧美mv日韩mv国产网站| 国产一区二区在线视频| 久久男人中文字幕资源站| 国产精品一级片在线观看| 国产视频亚洲色图| av成人老司机| 亚洲另类在线视频| 欧美日韩一区二区三区免费看| 亚洲国产成人精品视频| 在线不卡的av| 狠狠v欧美v日韩v亚洲ⅴ| 久久午夜老司机| 波多野结衣中文字幕一区二区三区| 国产精品超碰97尤物18| 色综合久久88色综合天天免费| 一区二区三区自拍| 欧美国产精品中文字幕| 国产成人精品亚洲日本在线桃色| 中文字幕第一区第二区| 色狠狠av一区二区三区| 视频一区二区三区入口| 欧美tk—视频vk| 成人午夜激情影院| 亚洲欧洲综合另类| 69p69国产精品| 国产精品一区二区91| 国产精品高清亚洲| 欧美日韩一区二区不卡| 久久国产精品99精品国产| 中文字幕第一区综合| 欧美视频中文一区二区三区在线观看 | 亚洲一区二区三区影院| 日韩欧美一级片| 成人激情动漫在线观看| 一区二区三区四区乱视频| 欧美一级视频精品观看| 成人午夜伦理影院| 亚洲成人福利片| 久久综合色婷婷| 在线免费观看日本欧美| 国模娜娜一区二区三区| 国产精品久久久久久久裸模| 欧美精品久久久久久久多人混战| 国产精品亚洲人在线观看| 亚洲一区二区三区爽爽爽爽爽 | 香蕉成人伊视频在线观看| 久久香蕉国产线看观看99| 色综合色综合色综合色综合色综合| 天使萌一区二区三区免费观看| 久久中文娱乐网| 欧美系列在线观看| 国产大片一区二区| 天堂va蜜桃一区二区三区漫画版| 国产视频一区在线播放| 欧美日韩国产精选| 9色porny自拍视频一区二区| 美女一区二区视频| 亚洲精品国产一区二区精华液| 久久综合九色综合97_久久久| 欧美怡红院视频| 成人免费看视频| 另类小说图片综合网| 一区二区三区中文字幕| 国产亚洲成年网址在线观看| 欧美剧情片在线观看| 99久久精品国产一区二区三区| 精品一区二区三区免费毛片爱| 亚洲精品大片www| 国产精品麻豆久久久| 2014亚洲片线观看视频免费| 欧美日韩在线精品一区二区三区激情| 成人免费看视频| 国产最新精品免费| 毛片不卡一区二区| 亚洲国产wwwccc36天堂| 亚洲欧洲精品天堂一级| 国产精品国产自产拍高清av王其 | 亚洲日本韩国一区| 久久久久久毛片| 日韩一卡二卡三卡国产欧美| 一本久道中文字幕精品亚洲嫩| 国产精品一区二区无线| 精品写真视频在线观看| 日本va欧美va精品发布| 亚洲福利一二三区| 樱桃视频在线观看一区| 国产精品超碰97尤物18| 欧美高清在线一区| 日本一区二区三区四区| 国产性色一区二区| 国产日韩欧美不卡在线| 久久久精品一品道一区| 国产亚洲一区二区三区| 精品久久久久久无| 精品国产在天天线2019|