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

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

?? mt90820.c

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

#define MT90820_CR_REG    0x0
#define MT90820_IMS_REG   0x1
#define MT90820_FAR_REG   0x2
#define MT90820_FOR0_REG  0x3
#define MT90820_FOR1_REG  0x4
#define MT90820_FOR2_REG  0x5
#define MT90820_FOR3_REG  0x6

#define MT90820_CR(ba,cr)     REG16(ba+(cr<<1))
#define MT90820_CH(ba,ch)     REG16(ba +0x100+(ch<<1))

static int ConfigTs(MT90820CfgStruct* pCfg, SDCConfigTsStruct *pTs)
{
    
    UCHAR  MaxSlotNum;

    if(pCfg->DataRate==RATE_2M_90820)MaxSlotNum=32;
    else if(pCfg->DataRate== RATE_4M_90820)MaxSlotNum=64;
    else if(pCfg->DataRate== RATE_8M_90820)MaxSlotNum=128;   
    else return SDE_INVALID_ARG;   
        
    if(  pTs->StreamOut>15 || pTs->StreamIn>15 
       || pTs->ChanOut>MaxSlotNum-1 || pTs->ChanIn>MaxSlotNum-1)
       return SDE_INVALID_ARG;
    MT90820_CR(pCfg->BaseAddr,MT90820_CR_REG)
        =pTs->StreamOut|0x0010;
    MT90820_CH(pCfg->BaseAddr,pTs->ChanOut)
        =(pTs->StreamIn<<7)|pTs->ChanIn|0x4800;
    return SDE_OK;
}

/* Following added by maold */
static int Check_Connection(MT90820CfgStruct* pCfg, SDCConfigTsStruct *pTs)
{
    
    UCHAR  MaxSlotNum;
    unsigned short * ADDR;
    unsigned short re_val,input;			

    if(pCfg->DataRate==RATE_2M_90820)MaxSlotNum=32;
    else if(pCfg->DataRate== RATE_4M_90820)MaxSlotNum=64;
    else if(pCfg->DataRate== RATE_8M_90820)MaxSlotNum=128;   
    else return SDE_INVALID_ARG; 
        
     if(  pTs->StreamOut>15 || pTs->StreamIn>15 
       || pTs->ChanOut>MaxSlotNum-1 || pTs->ChanIn>MaxSlotNum-1)
       return SDE_INVALID_ARG;
    
    MT90820_CR(pCfg->BaseAddr,MT90820_CR_REG)
        =pTs->StreamOut;
    MT90820_CR(pCfg->BaseAddr,MT90820_CR_REG)
        &=0xFFEF;   
    
    input= (pTs->StreamIn<<7)+pTs->ChanIn+0x4800;
    re_val = MT90820_CH(pCfg->BaseAddr,pTs->ChanOut);               
    if(re_val==input)
    	return SDE_OK;
    else
        return 	SDE_CONN_CHEK_ERR;   
}

static void MT90820Init(void *pDataBuf, MT90820CfgStruct *cfg )
{
    volatile ULONG i;
    
    MT90820CfgStruct *pCfg = (MT90820CfgStruct *)(pDataBuf);
/*-------------------------<< Initial data >>-------------------------------*/
    memmove(pCfg,cfg,sizeof(MT90820CfgStruct));
      
    /* 配置所有的輸出使能有效*/
    MT90820_CR(pCfg->BaseAddr,MT90820_CR_REG)=MT90820_MEMORY_BLOCK_PROGRAM;
    /* LPBK=0,V/C=1,MC=0,CSTo=0,OE=1,BPE=1        */ 
    MT90820_CR(pCfg->BaseAddr,MT90820_IMS_REG)=0x0138|pCfg->DataRate;
    for(i=65535;i>0;i--){
        if((MT90820_CR(pCfg->BaseAddr,MT90820_IMS_REG)&0x10)==0)break;   
    }
    /*完成一些初始化鏈路的配置*/
    for(i=0; i< pCfg->ValidConfigTsNum;i++)
       ConfigTs(pCfg,&(pCfg->ConfigTsTable[i]));
}

static int MT90820ConfigMessageMode(MT90820CfgStruct* pCfg, 
                                    MT90820MessageModeStruct *pMsgMode)
{
    UCHAR  MaxSlotNum;

    if(pCfg->DataRate==RATE_2M_90820)MaxSlotNum=32;
    else if(pCfg->DataRate== RATE_4M_90820)MaxSlotNum=64;
    else if(pCfg->DataRate== RATE_8M_90820)MaxSlotNum=128;   
    else return SDE_INVALID_ARG;   
    
   if((pMsgMode->Stream>15)||(pMsgMode->Chan>MaxSlotNum-1))
       return SDE_INVALID_ARG;
  
   MT90820_CR(pCfg->BaseAddr,MT90820_CR_REG)=(USHORT)pMsgMode->Stream;
   MT90820_CH(pCfg->BaseAddr,pMsgMode->Chan)=(USHORT)pMsgMode->Value|0x6800;
   return SDE_OK;
}

static int MT90820CheckMsg(MT90820CfgStruct* pCfg, 
                          MT90820MessageModeStruct *pMsgMode)
{
   UCHAR  MaxSlotNum;

    if(pCfg->DataRate==RATE_2M_90820)MaxSlotNum=32;
    else if(pCfg->DataRate== RATE_4M_90820)MaxSlotNum=64;
    else if(pCfg->DataRate== RATE_8M_90820)MaxSlotNum=128;   
    else return SDE_INVALID_ARG;   
    
   if((pMsgMode->Stream>15)||(pMsgMode->Chan>MaxSlotNum-1))
       return SDE_INVALID_ARG;

   MT90820_CR(pCfg->BaseAddr,MT90820_CR_REG)
      =(USHORT)pMsgMode->Stream|MT90820_MS_DATAM;
   if(pMsgMode->Value!=(char)MT90820_CH(pCfg->BaseAddr, pMsgMode->Chan))
   {
   	  pMsgMode->Value=(char)MT90820_CH(pCfg->BaseAddr, pMsgMode->Chan); 
      return SDE_CHK_MSG_ERR;
   }
   pMsgMode->Value=(char)MT90820_CH(pCfg->BaseAddr, pMsgMode->Chan); 
   return  SDE_OK;  
}

static int MT90820GetMsg(MT90820CfgStruct* pCfg, 
                          MT90820MessageModeStruct *pMsgMode)
{
   UCHAR  MaxSlotNum;

    if(pCfg->DataRate==RATE_2M_90820)MaxSlotNum=32;
    else if(pCfg->DataRate== RATE_4M_90820)MaxSlotNum=64;
    else if(pCfg->DataRate== RATE_8M_90820)MaxSlotNum=128;   
    else return SDE_INVALID_ARG;   
    
   if((pMsgMode->Stream>15)||(pMsgMode->Chan>MaxSlotNum-1))
       return SDE_INVALID_ARG;

   MT90820_CR(pCfg->BaseAddr,MT90820_CR_REG)
      =(USHORT)pMsgMode->Stream|MT90820_MS_DATAM;
   pMsgMode->Value=(char)MT90820_CH(pCfg->BaseAddr, pMsgMode->Chan); 
   return  SDE_OK;  
}

static int MT90820SetDelay(MT90820CfgStruct* pCfg, 
                           SlotDelayStruct *pDelay) 
{
    int ForReg;
    
    if(pDelay->Stream<0)
      return SDE_INVALID_ARG;      
    else if(pDelay->Stream<4)
       ForReg=MT90820_FOR0_REG;
    else if(pDelay->Stream<8)
      ForReg=MT90820_FOR1_REG; 
    else if(pDelay->Stream<12)
      ForReg=MT90820_FOR2_REG;
    else if(pDelay->Stream<16)
      ForReg=MT90820_FOR3_REG;
    else
      return SDE_INVALID_ARG;
    if((pDelay->Delay<0)||(pDelay->Delay>9))
      return SDE_INVALID_ARG;
    MT90820_CR(pCfg->BaseAddr,ForReg)
        &=~(0xF<<((pDelay->Stream%4)*4));
    MT90820_CR(pCfg->BaseAddr,ForReg)
        |=(pDelay->Delay<<((pDelay->Stream%4)*4));
    return SDE_OK; 

}

static int MT90820Cntrl(void *pDataBuf, int cmd, void *pParam, int maxlen)
{
    int rc;
    MT90820CfgStruct*  pCfg =(MT90820CfgStruct *)(pDataBuf);   
    SDCConfigTsStruct *pTs;
   
    switch(cmd)
    {
        case SDC_REINIT:
            MT90820Init(pDataBuf, pCfg);
            break;
            
        case SDC_SET_MTCH:
            if(maxlen!=sizeof(SDCConfigTsStruct))return SDE_INVALID_ARG;
                
            pTs = (SDCConfigTsStruct *)pParam;
            rc=ConfigTs(pCfg, pTs);
	    return rc;
       
        case SDC_MESSAGE_MODE:
            if(maxlen != sizeof(MT90820MessageModeStruct))
                return SDE_INVALID_ARG;
            rc=MT90820ConfigMessageMode(pCfg,(MT90820MessageModeStruct*)pParam);
            return rc;
       
       case SDC_CHECK_MSG:
            if(maxlen!=sizeof(MT90820MessageModeStruct))
                return SDE_INVALID_ARG;
            rc=MT90820CheckMsg(pCfg, (MT90820MessageModeStruct *)pParam);
            return rc;
       
       case SDC_GET_MSG:
            if(maxlen!=sizeof(MT90820MessageModeStruct))
                return SDE_INVALID_ARG;
            rc=MT90820GetMsg(pCfg, (MT90820MessageModeStruct *)pParam);
            return rc;           
       
       case SDC_SET_DELAY:
            if(maxlen!=sizeof(SlotDelayStruct))
                return SDE_INVALID_ARG;
            rc=MT90820SetDelay(pCfg,(SlotDelayStruct*)pParam); 
            return rc;           
       case SDC_CHK_CONNECT:
           if(maxlen!=sizeof(SDCConfigTsStruct))return SDE_INVALID_ARG;
               
           pTs = (SDCConfigTsStruct *)pParam;
           rc=Check_Connection(pCfg, pTs);
           return rc;
       default: 
            return SDE_UNKNOW_CMD;
    }/* end of switch(cmd) */
    return SDE_OK;
}

UCHAR *MT90820BspInit(int DEV, UCHAR *FreeMemPtr, MT90820CfgStruct *cfg)
{
    InstallSD(DEV,NULL,NULL,MT90820Cntrl,FreeMemPtr);
    MT90820Init(FreeMemPtr, cfg); 
    FreeMemPtr += sizeof(MT90820CfgStruct);
    memcpy(FreeMemPtr,"90820Dat",8);
    FreeMemPtr += 8;
    return FreeMemPtr;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费观看2025年上映的电影 | 麻豆成人久久精品二区三区红 | 色av一区二区| 精品国产sm最大网站免费看| 亚洲精品久久久久久国产精华液| 久久99热99| 欧美男男青年gay1069videost | 国产精品色一区二区三区| 香蕉成人啪国产精品视频综合网 | 欧美一区二区三区的| 国产精品欧美一区喷水| 精品在线你懂的| 欧美高清性hdvideosex| 亚洲精品高清在线观看| 9l国产精品久久久久麻豆| 久久精品夜色噜噜亚洲aⅴ| 蜜桃av噜噜一区| 9191久久久久久久久久久| 自拍av一区二区三区| 国产无遮挡一区二区三区毛片日本| 欧美肥胖老妇做爰| 国产精品国产成人国产三级| 美女视频黄a大片欧美| 欧美日韩国产小视频在线观看| 亚洲欧洲av在线| 成人性生交大片免费看中文 | 色中色一区二区| 专区另类欧美日韩| 91亚洲大成网污www| 国产欧美日韩不卡| av一区二区三区| 中文字幕综合网| 色欧美片视频在线观看在线视频| 中文字幕制服丝袜一区二区三区 | 国产91精品一区二区麻豆网站 | 亚洲第一av色| 欧美三级中文字| 五月开心婷婷久久| 日韩午夜激情电影| 精品一区精品二区高清| 久久久精品国产免大香伊 | 一区二区三区资源| 欧美人妇做爰xxxⅹ性高电影 | 午夜电影网一区| 91精品在线一区二区| 美国毛片一区二区三区| 精品欧美乱码久久久久久| 国产一区欧美二区| 国产欧美一区视频| 色综合天天综合在线视频| 最新不卡av在线| 亚洲免费大片在线观看| 日本韩国欧美在线| 亚洲精品久久久蜜桃| 91高清视频免费看| 午夜精品久久久久久久久久久| 欧美日本一区二区三区四区| 日韩av网站免费在线| 日韩欧美中文字幕公布| 国产精品一二三四区| 亚洲日本电影在线| 欧美丰满少妇xxxbbb| 国产aⅴ综合色| 亚洲综合另类小说| 精品国产百合女同互慰| 91亚洲大成网污www| 男女男精品视频网| 国产精品婷婷午夜在线观看| 欧美在线观看你懂的| 久久99国产精品麻豆| 亚洲三级理论片| 欧美精品一区二区三区高清aⅴ | 亚洲成va人在线观看| 26uuu亚洲综合色欧美| 91片在线免费观看| 美女高潮久久久| 亚洲欧美一区二区三区孕妇| 欧美成人a∨高清免费观看| 波多野结衣中文一区| 另类中文字幕网| 一区二区三区欧美在线观看| 久久综合狠狠综合久久综合88| 色88888久久久久久影院野外| 久久超碰97人人做人人爱| 亚洲精品少妇30p| 国产欧美一区二区精品仙草咪| 欧美日本在线播放| 色诱亚洲精品久久久久久| 国产ts人妖一区二区| 免费视频一区二区| 亚洲成a人片综合在线| 中文字幕不卡在线播放| 日韩欧美在线一区二区三区| 欧美亚洲综合另类| 成人黄色片在线观看| 精品亚洲aⅴ乱码一区二区三区| 亚洲成人777| 亚洲激情五月婷婷| 亚洲欧洲一区二区在线播放| 国产视频911| 精品少妇一区二区三区日产乱码 | 国产色婷婷亚洲99精品小说| 日韩欧美一二三四区| 欧美少妇一区二区| 一本大道综合伊人精品热热| av不卡一区二区三区| 大陆成人av片| 国产.精品.日韩.另类.中文.在线.播放 | 2023国产精华国产精品| 欧美日韩亚洲不卡| 欧美色视频一区| 在线视频一区二区三| 色呦呦一区二区三区| 一本大道久久a久久综合| av成人老司机| 一本大道久久a久久综合婷婷| 91丨九色丨尤物| 91国偷自产一区二区使用方法| 91浏览器在线视频| 欧洲精品在线观看| 欧美精品在线视频| 欧美一区二区黄色| 欧美精品一区二区不卡| 久久精品视频网| 中文字幕av不卡| 日韩一区中文字幕| 一区二区成人在线观看| 亚洲午夜久久久久久久久久久| 一区二区三区在线观看网站| 亚洲一区二区在线播放相泽| 日韩电影在线观看网站| 狂野欧美性猛交blacked| 国产综合色视频| jlzzjlzz国产精品久久| 91久久线看在观草草青青| 欧美日韩精品一二三区| 日韩欧美一二三| 国产精品私人自拍| 亚洲国产成人高清精品| 六月丁香综合在线视频| 成人激情开心网| 精品视频免费在线| 精品国产网站在线观看| 国产精品国产三级国产普通话三级| 亚洲免费在线电影| 日韩制服丝袜av| 国产成人免费在线观看| 一本大道久久a久久精品综合| 欧美疯狂做受xxxx富婆| 国产日韩精品视频一区| 亚洲第一福利视频在线| 国产福利一区在线| 欧美猛男男办公室激情| 国产欧美视频一区二区| 亚洲五码中文字幕| 国产成人鲁色资源国产91色综| 在线欧美小视频| 久久午夜电影网| 天使萌一区二区三区免费观看| 国产乱色国产精品免费视频| 欧美羞羞免费网站| 中文字幕av资源一区| 日韩专区欧美专区| www.亚洲精品| 欧美精品一区二区蜜臀亚洲| 亚洲国产日韩综合久久精品| 国产成人在线免费| 欧美一区二区在线看| 一区二区视频在线看| 激情都市一区二区| 制服丝袜一区二区三区| 国产精品久久久久久久蜜臀| 久久99精品一区二区三区三区| 日本韩国欧美三级| 国产精品成人免费| 国产麻豆91精品| 欧美α欧美αv大片| 亚洲无线码一区二区三区| 波多野洁衣一区| 久久精品无码一区二区三区| 日本成人在线看| 欧美色视频在线| 亚洲在线中文字幕| 91香蕉视频黄| 一色桃子久久精品亚洲| 久久综合九色综合97婷婷| 亚洲最新视频在线播放| 国产一区二区在线电影| 日韩一区二区在线观看视频播放| 一区二区三区精品| 97精品超碰一区二区三区| 国产精品欧美一区喷水| 成人永久免费视频| 久久女同性恋中文字幕| 国产在线播放一区三区四| 精品电影一区二区三区| 青青草精品视频| 精品理论电影在线| 国产在线不卡视频| 国产女人水真多18毛片18精品视频 |