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

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

?? mt90826cmm.c

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

#define MT90826_CR_REG    0x0
/* #define MT90826_IMS_REG   0x1 */
#define MT90826_FAR_REG   0x1

#define MT90826_DOS0_REG   0x2
#define MT90826_DOS1_REG   0x3
#define MT90826_DOS2_REG   0x4
#define MT90826_DOS3_REG   0x5
#define MT90826_DOS4_REG   0x6
#define MT90826_DOS5_REG   0x7
#define MT90826_DOS6_REG   0x8
#define MT90826_DOS7_REG   0x9

#define MT90826_FOR0_REG  0x0a
#define MT90826_FOR1_REG  0xb
#define MT90826_FOR2_REG  0xc
#define MT90826_FOR3_REG  0xd

#define  MT90826_MEMORY_BLOCK_PROGRAM  0x0020
#define  MT90826_MS_DATAM  0x0010 

#define MT90826_CR(ba,cr)     REG16(ba+(cr<<1))

static int ConfigTs(MT90826CfgStruct* pCfg, SDCConfigTsStruct *pTs)
{
    
    int  MaxSlotNum;
    unsigned short * ADDR;

    if(pCfg->DataRate==DATA_RATE_2M)MaxSlotNum=32;
    else if(pCfg->DataRate== DATA_RATE_4M)MaxSlotNum=64;
    else if(pCfg->DataRate== DATA_RATE_8M)MaxSlotNum=128;   
    else if(pCfg->DataRate== DATA_RATE_16M)MaxSlotNum=256;
    else if(pCfg->DataRate== DATA_RATE_16_8M)MaxSlotNum=256;

    else return SDE_INVALID_ARG; 
        
    if(   pTs->StreamOut>31 || pTs->StreamIn>31 
       || pTs->ChanOut>MaxSlotNum-1 || pTs->ChanIn>MaxSlotNum-1)
       return SDE_INVALID_ARG;
    MT90826_CR(pCfg->BaseAddr,MT90826_CR_REG)&=0xffef;
    ADDR = (unsigned short *)(pCfg->BaseAddr+0x4000+((pTs->StreamOut<<8)
        +pTs->ChanOut)*2);
    *ADDR = 0xA000 + (pTs->StreamIn<<8)+pTs->ChanIn;
    return SDE_OK;
}

static int DisableTs(MT90826CfgStruct* pCfg, SDCConfigTsStruct *pTs)
{
    
    int  MaxSlotNum;
    unsigned short * ADDR;

    if(pCfg->DataRate==DATA_RATE_2M)MaxSlotNum=32;
    else if(pCfg->DataRate== DATA_RATE_4M)MaxSlotNum=64;
    else if(pCfg->DataRate== DATA_RATE_8M)MaxSlotNum=128;   
    else if(pCfg->DataRate== DATA_RATE_16M)MaxSlotNum=256;
    else if(pCfg->DataRate== DATA_RATE_16_8M)MaxSlotNum=256;
    else return SDE_INVALID_ARG; 
        
    if(   pTs->StreamOut>31 || pTs->StreamIn>31 
       || pTs->ChanOut>MaxSlotNum-1 || pTs->ChanIn>MaxSlotNum-1)
       return SDE_INVALID_ARG;
    MT90826_CR(pCfg->BaseAddr,MT90826_CR_REG)&=0xffef;
    ADDR = (unsigned short *)(pCfg->BaseAddr+0x4000+((pTs->StreamOut<<8)
        +pTs->ChanOut)*2);
    (*ADDR) &= 0xdfff; 
    return SDE_OK;
}


static void MT90826Init(void *pDataBuf, MT90826CfgStruct *cfg )
{
    int i;
    unsigned short * ADDR;
     
    MT90826CfgStruct *pCfg = (MT90826CfgStruct *)(pDataBuf);
   
   
    /*-------------------------<< Initial data >>-------------------------------*/
    memmove(pCfg,cfg,sizeof(MT90826CfgStruct));
    
    /*SetLLDat(&pCfg->Rst,0); 
    for(i=0;i<12;i++);
    SetLLDat(&pCfg->Rst,1); 
    for(i=0;i<19;i++);
*/
    ADDR= (unsigned short *)(pCfg->BaseAddr);
    for (i=0;i<18;i++)
         *(ADDR+i) = 0x0;
    memset(pCfg->BaseAddr+0x4000,0,0x3fff);

   
    MT90826_CR(pCfg->BaseAddr,MT90826_CR_REG)|=pCfg->DataRate;
    MT90826_CR(pCfg->BaseAddr,MT90826_CR_REG)|=pCfg->DataRate;
/*add for cmm */
    MT90826_CR(pCfg->BaseAddr,MT90826_DOS0_REG)=pCfg->Dos0;
    MT90826_CR(pCfg->BaseAddr,MT90826_DOS1_REG)=pCfg->Dos1;
    MT90826_CR(pCfg->BaseAddr,MT90826_DOS2_REG)=pCfg->Dos2;
    MT90826_CR(pCfg->BaseAddr,MT90826_DOS3_REG)=pCfg->Dos3;
    MT90826_CR(pCfg->BaseAddr,MT90826_DOS4_REG)=pCfg->Dos4;
    MT90826_CR(pCfg->BaseAddr,MT90826_DOS5_REG)=pCfg->Dos5;
    MT90826_CR(pCfg->BaseAddr,MT90826_DOS6_REG)=pCfg->Dos6;
    MT90826_CR(pCfg->BaseAddr,MT90826_DOS7_REG)=pCfg->Dos7;



    for (i=0;i<pCfg->DefTsTabEntryNum;i++)
          ConfigTs(pCfg, &(cfg->pDefTsTable[i]));
}

static int MT90826ConfigMessageMode(MT90826CfgStruct* pCfg, 
                                    MT90826MessageModeStruct *pMsgMode)
{
    int  MaxSlotNum;
    unsigned short * ADDR;

    if(pCfg->DataRate==DATA_RATE_2M)MaxSlotNum=32;
    else if(pCfg->DataRate== DATA_RATE_4M)MaxSlotNum=64;
    else if(pCfg->DataRate== DATA_RATE_8M)MaxSlotNum=128;   
    else if(pCfg->DataRate== DATA_RATE_16M)MaxSlotNum=256;
    else if(pCfg->DataRate== DATA_RATE_16_8M)MaxSlotNum=256;
    else return SDE_INVALID_ARG; 
    
    if((pMsgMode->Stream>31)||(pMsgMode->Chan>MaxSlotNum-1))
       return SDE_INVALID_ARG;

    MT90826_CR(pCfg->BaseAddr,MT90826_CR_REG)&=0xffef;
    ADDR = (USHORT *)(pCfg->BaseAddr+0x4000
          +((pMsgMode->Stream<<8)+pMsgMode->Chan)*2);

    *ADDR = 0x6000 +(USHORT)pMsgMode->Value; 
    return SDE_OK;
}

static int MT90826CheckMsg(MT90826CfgStruct* pCfg, 
                          MT90826MessageModeStruct *pMsgMode)
{
   int  MaxSlotNum;
   unsigned short * ADDR;
   int i,val1,val2;
    
   if(pCfg->DataRate==DATA_RATE_2M)MaxSlotNum=32;
   else if(pCfg->DataRate== DATA_RATE_4M)MaxSlotNum=64;
   else if(pCfg->DataRate== DATA_RATE_8M)MaxSlotNum=128;   
   else if(pCfg->DataRate== DATA_RATE_16M)MaxSlotNum=256;
   else if(pCfg->DataRate== DATA_RATE_16_8M)MaxSlotNum=256;
   else return SDE_INVALID_ARG;   
   if((pMsgMode->Stream>31)||(pMsgMode->Chan>MaxSlotNum-1))
       return SDE_INVALID_ARG;
 
   MT90826_CR(pCfg->BaseAddr,MT90826_CR_REG)&=0xffef;
   MT90826_CR(pCfg->BaseAddr,MT90826_CR_REG)|=0x0010;
   ADDR = (USHORT *)(pCfg->BaseAddr+0x4000 
         +((pMsgMode->Stream<<8)+pMsgMode->Chan)*2) ; 
   val1 = *ADDR;  
   for(i=0;i<10;i++)
   {
      val1 = *ADDR;  
      val2 = *ADDR;  
      if(val1==val2) break; 
   }
   if(i==10) return SDE_CHK_MSG_FALSE;
   pMsgMode->Value=val1;
   return  SDE_OK;  
}

static int MT90826Cntrl(void *pDataBuf, int cmd, void *pParam, int maxlen)
{
    int rc;
    MT90826CfgStruct*  pCfg =(MT90826CfgStruct *)(pDataBuf);   
    SDCConfigTsStruct *pTs;
   
    switch(cmd)
    {
        case SDC_REINIT:
            MT90826Init(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(MT90826MessageModeStruct))
                return SDE_INVALID_ARG;
            rc=MT90826ConfigMessageMode(pCfg,(MT90826MessageModeStruct*)pParam);
            return rc;
       
       case SDC_CHECK_MSG:
            if(maxlen!=sizeof(MT90826MessageModeStruct))
                return SDE_INVALID_ARG;
            rc=MT90826CheckMsg(pCfg, (MT90826MessageModeStruct *)pParam);
            return rc;
       case SDC_SET_UNCONNECT:
            if(maxlen!=sizeof(SDCConfigTsStruct))return SDE_INVALID_ARG;
                
            pTs = (SDCConfigTsStruct *)pParam;
            rc=DisableTs(pCfg, pTs);
            return rc;
                    
       default: 
            return SDE_UNKNOW_CMD;
    }/* end of switch(cmd) */
    return SDE_OK;
}

char *MT90826BspInit(int DEV, char *FreeMemPtr, MT90826CfgStruct *cfg)
{
    MT90826CfgStruct *pCfg;
    InstallSD(DEV,NULL,NULL,MT90826Cntrl,FreeMemPtr);
    MT90826Init(FreeMemPtr, cfg); 
    pCfg=(MT90826CfgStruct*)FreeMemPtr;
    FreeMemPtr += sizeof(MT90826CfgStruct);
    
    pCfg->pDefTsTable=(SDCConfigTsStruct*)FreeMemPtr;
    memcpy(FreeMemPtr,cfg->pDefTsTable,cfg->DefTsTabEntryNum*
                sizeof(SDCConfigTsStruct));
    FreeMemPtr +=cfg->DefTsTabEntryNum*sizeof(SDCConfigTsStruct);
    memcpy(FreeMemPtr,"90826Dat",8);
    FreeMemPtr += 8;
    return FreeMemPtr;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久9999亚洲精品| 亚洲免费观看在线视频| 六月丁香婷婷久久| 在线播放视频一区| 亚洲二区视频在线| 欧美日韩一卡二卡三卡| 亚洲二区视频在线| 欧美日韩国产小视频在线观看| 亚洲一区二区三区在线看| 欧美亚洲国产一区二区三区| 亚洲制服丝袜av| 欧美视频在线一区| 亚洲成av人影院在线观看网| 欧美午夜精品久久久| 亚洲国产成人av好男人在线观看| 欧美最新大片在线看| 午夜视频在线观看一区二区| 3atv在线一区二区三区| 美女视频黄 久久| 精品少妇一区二区三区免费观看 | 亚洲三级在线观看| 色综合久久66| 亚洲福利视频一区| 日韩一区二区三区免费观看| 麻豆一区二区三| 久久久久久一级片| 成人黄色一级视频| 亚洲丝袜另类动漫二区| 欧美视频一区二区三区四区 | 成人妖精视频yjsp地址| 17c精品麻豆一区二区免费| 色综合中文字幕国产 | 日韩综合小视频| 日韩久久久久久| 国产激情91久久精品导航| 中文字幕中文字幕一区二区| 在线视频国内自拍亚洲视频| 午夜精品123| 精品国产免费久久| www.亚洲色图| 亚洲一区二区不卡免费| 日韩午夜激情电影| 国产 欧美在线| 一区二区三区在线播| 欧美一级理论片| 国产成人精品亚洲日本在线桃色| √…a在线天堂一区| 欧美久久婷婷综合色| 国产伦理精品不卡| 亚洲日本免费电影| 日韩一区二区三区视频在线| 国产夫妻精品视频| 一区二区三区日韩在线观看| 日韩一区二区三区观看| 成人妖精视频yjsp地址| 午夜精品久久久久久久久久| 久久久综合精品| 一本到不卡免费一区二区| 麻豆精品久久久| 亚洲欧美在线aaa| 91麻豆精品国产自产在线观看一区| 国产美女一区二区| 亚洲最大成人综合| 久久综合狠狠综合久久激情| 91免费看片在线观看| 美女网站色91| 一区二区三区视频在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 99久久久久久| 久久99国产精品尤物| 亚洲激情图片qvod| 久久久99精品免费观看不卡| 在线观看网站黄不卡| 国产成人亚洲综合a∨猫咪| 亚洲大片免费看| 中文字幕的久久| 欧美一区二区成人6969| 91麻豆精东视频| 国产精品一区在线| 日日夜夜免费精品| 亚洲品质自拍视频| 国产夜色精品一区二区av| 欧美日韩精品综合在线| 成人av免费网站| 久久成人免费日本黄色| 一区二区三区蜜桃| 亚洲国产精品成人综合| 日韩一区二区精品| 欧美在线免费观看视频| 成人深夜在线观看| 久久99深爱久久99精品| 亚洲成a人v欧美综合天堂下载| 中文字幕一区视频| 久久久久久久久久电影| 91精品国产手机| 欧美伊人久久久久久久久影院| 粉嫩久久99精品久久久久久夜| 麻豆精品新av中文字幕| 午夜视频在线观看一区二区| 亚洲女人的天堂| 国产精品麻豆一区二区| 久久久久青草大香线综合精品| 欧美一区二区三区视频在线 | 欧美日韩国产a| 91麻豆国产在线观看| 成人福利视频在线看| 国产专区综合网| 麻豆视频观看网址久久| 午夜在线成人av| 亚洲一区影音先锋| 亚洲男女一区二区三区| 成人免费在线视频观看| 亚洲国产高清aⅴ视频| 久久久国产午夜精品| 久久影院午夜论| 日韩欧美国产精品一区| 91麻豆精品国产91久久久| 欧美视频日韩视频| 欧美吻胸吃奶大尺度电影| 日本精品裸体写真集在线观看| 91在线视频18| 91欧美激情一区二区三区成人| 成人动漫一区二区在线| 成人av一区二区三区| 国产91精品久久久久久久网曝门 | 欧美三级欧美一级| 在线免费观看日本欧美| 在线看国产一区二区| 色88888久久久久久影院按摩| 色域天天综合网| 欧日韩精品视频| 欧美日韩精品久久久| 51精品秘密在线观看| 日韩一级二级三级| 日韩精品自拍偷拍| 久久免费电影网| 国产精品视频一区二区三区不卡| 国产欧美一区二区三区鸳鸯浴| 久久九九99视频| 欧美国产日韩在线观看| 国产精品嫩草影院com| 亚洲人成7777| 亚洲高清不卡在线| 日韩中文字幕1| 久久99热99| 国产.欧美.日韩| 色婷婷激情一区二区三区| 欧美午夜宅男影院| 欧美一区二区日韩一区二区| 欧美成人vr18sexvr| 国产日韩三级在线| 亚洲人成亚洲人成在线观看图片| 亚洲久本草在线中文字幕| 亚洲成人免费视频| 久久99精品久久久久| 东方aⅴ免费观看久久av| 99久久国产综合精品女不卡| 欧美亚洲高清一区二区三区不卡| 91精品国产综合久久精品app| 欧美videofree性高清杂交| 久久精品亚洲精品国产欧美kt∨ | 不卡av在线网| 欧美艳星brazzers| 日韩免费观看高清完整版在线观看| 久久奇米777| 中文字幕一区免费在线观看| 亚洲成人精品影院| 狠狠狠色丁香婷婷综合激情| 成人免费视频caoporn| 在线观看日韩av先锋影音电影院| 欧美一区二区福利在线| 中文字幕第一区第二区| 亚洲国产精品麻豆| 狠狠久久亚洲欧美| 91丨porny丨户外露出| 欧美一级午夜免费电影| 中文字幕高清一区| 午夜久久久影院| 国产精品夜夜嗨| 欧美无砖砖区免费| 久久嫩草精品久久久精品| 一区二区三区国产豹纹内裤在线| 免费观看30秒视频久久| 99视频国产精品| 欧美一级视频精品观看| 中文字幕综合网| 久久国产麻豆精品| 色婷婷久久久综合中文字幕| 精品国产人成亚洲区| 一区二区三区免费| 国产盗摄精品一区二区三区在线| 欧美手机在线视频| 国产欧美日韩另类一区| 丝袜美腿亚洲色图| 91小视频免费观看| 欧美精品一区二区三区蜜桃 | 樱桃视频在线观看一区| 久久97超碰色| 欧美亚洲国产bt| 中文字幕的久久|