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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? initm803xx.c

?? m80320 VoIP DSP驅(qū)動源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*************************************************************************
* Module Name: GAR VOIP                     File Name: InitM803xx.c
* Create Date: 2003/01/15                   Author   : Caowm
* Function   : Init M803xx
* Version    : 1.0
* History    :
* Date        Version  Modifier       Activies
*
*************************************************************************/
#include "vxWorks.h"
#include "tickLib.h"
#include "drv/pci/pciConfigLib.h"
#include "ctype.h"
#include "string.h"
#include "sysLib.h"
#include "bootLib.h"
#include "stdio.h"
#include "fioLib.h"
#include "private/vmLibP.h"
#include "taskLib.h"
#include "garlib.h"
#include "inetLib.h"
#include "ioLib.h"
#include "m803xx.h"
#include "Typedef.h"

#include MPLIB_H
#include "driver/drvLib/include/drvLib.h"

/* local defines */
extern void * sysPhysToPci ( void * PhysAddr );
extern void * sysPciToPhys ( void * PciAddr );
extern void * sysVirtToPhys(void *virtAddr);
extern void * sysPhysToVirt(void *physAddr);
extern void*  endPktAlloc();
extern void   endPktFree(char* buff );
/*extern ULONG  tickGet();*/
/*extern STATUS pciConfigInLong   (int busNo, int deviceNo, int funcNo, int address,UINT32 * pData);*/
extern STATUS b_ifPciIDToUnitNum(UINT8 pciBus, UINT8 pciId,UINT32 * pUnitNum);
extern void initChannelOperateCount(UINT8 slotNum);
extern TRTCPInfo  RTCPInfo[MAX_CID_NUM];
#if 0
extern STATUS pciFindDevice(
    int    vendorId,    /* vendor ID */
    int    deviceId,    /* device ID */
    int    index,       /* desired instance of device */
    int *  pBusNo,      /* bus number */
    int *  pDeviceNo,   /* device number */
    int *  pFuncNo      /* function number */
    );
extern STATUS pciConfigOutWord
    (
    int busNo,      /* bus number */
    int deviceNo,   /* device number */
    int funcNo,     /* function number */
    int offset,     /* offset into the configuration space */
    short data      /* data written to the offset */
    );
#endif
extern STATUS initT38FaxArgVar(int slot);

extern int M80320_Printf;

LOCAL void Init_Port_Channel(UINT8 PinNo);

unsigned char *bDmFile;
AIF_HEADER aif_header;
M80320_QUEUE m_txmbox[MAX_PIN_NUM];  /*TX  Mail Box 隊列信息,每一全槽位對應(yīng)一個隊列,所以用了一個數(shù)組,目前MAX_PIN_NUM 的定義是8*/
MBOX_PACKET Receive_Message[MAX_PIN_NUM][MAX_RX_MSG_NUM];
BOOL PinStatus[MAX_PIN_NUM];

CHANNEL m_channel[PORTS_OF_CHIP * MAX_PIN_NUM];
M803xx_PORT CON_TO_DP[PORTS_OF_CHIP * MAX_PIN_NUM];
UINT32 PCIM803xx_BASEADDR[MAX_PIN_NUM];

extern void * PciReadBuf[PORTS_OF_CHIP * MAX_PIN_NUM];
extern UINT16 RemainedTxCmdNum[M803XX_MAX_PORT_NUM * MAX_PIN_NUM];
M803xx_PORT_STATE m_port[M803XX_MAX_PORT_NUM * MAX_PIN_NUM];

/*open channel mail box 隊列,每一個端口對應(yīng)一個隊列*/
M80320_QUEUE m_OpenChannelMailboxQueue[M803XX_MAX_PORT_NUM * MAX_PIN_NUM];

/*發(fā)送數(shù)據(jù)隊列,每一個端口對應(yīng)一個隊列*/
M80320_QUEUE m_TxDataQueue[M803XX_MAX_PORT_NUM * MAX_PIN_NUM];
PortStatusParameter  Parameter[M803XX_MAX_PORT_NUM * MAX_PIN_NUM];

TIMER_ID    VoIP_RTCP_1sTimer = 0;
TIMER_ID    M803xx_RTCP_60sTimer = 0;

UINT8 Pci_Id[8] = {20, 25, 19, 24, 18, 23, 17, 22};
UINT8  Tone_Stop[M803XX_MAX_PORT_NUM * MAX_PIN_NUM];
UINT8  Command_Ack[M803XX_MAX_PORT_NUM * MAX_PIN_NUM];
UINT8  M80320_Debug[64] = {0};
SEM_ID M803xxQueueSem[MAX_PIN_NUM] = {NULL};
SEM_ID M803xxOprSem[MAX_PIN_NUM];

void M80320_Enable_Printf(UINT8 PortNo)
{
    UINT8 i;
    
    if(PortNo>=64)
    {
        printf("PortNo must < 64\n");
        return;
    }
    if(PortNo == 0)
    {
        for(i=0; i<64; i++)
            M80320_Debug[i] = 1;
    }
    else
        M80320_Debug[PortNo] = 1;
}

void M80320_Disable_Printf(UINT8 PortNo)
{
    UINT8 i;
    
    if(PortNo>=64)
    {
        printf("PortNo must < 64\n");
        return;
    }
    if(PortNo == 0)
    {
        for(i=0; i<64; i++)
            M80320_Debug[i] = 0;
    }
    else
        M80320_Debug[PortNo] = 0;
}

unsigned long Swap_Word( unsigned long in )
{
#if INSTALL_ON_BIG_ENDIAN
    return  ((in&0xff000000)>>24)|((in&0x00ff0000)>>8)|
            ((in&0x0000ff00)<<8 )|((in&0x000000ff)<<24);
#else
    return  (in);
#endif
}

UINT16 Swap_Byte( UINT16 in )
{
#if INSTALL_ON_BIG_ENDIAN
    in=((in&0xff00)>>8)|((in&0x00ff)<<8);
#endif
    return  (in);
}

BOOL VOIP_RTCP_InitScanTimer()
{
    /*創(chuàng)建一個1秒定時器*/
    if (ROS_OK != Ros_CreateTimer(&VoIP_RTCP_1sTimer,
                                  CYCLE_TIMER,
                                  MSG_RTCP_TIMEOUT_1S,
                                  100,
                                  0,
                                  0,
                                  0))
    {
        return FALSE;
    }

    if (ROS_OK != Ros_SetTimer(VoIP_RTCP_1sTimer,
                               10,
                               0))
    {
        Ros_DeleteTimer(VoIP_RTCP_1sTimer);
        return FALSE;
    }
#if 0
    if (ROS_OK != Ros_CreateTimer(&M803xx_RTCP_60sTimer,
                                  CYCLE_TIMER,
                                  MSG_RTCP_TIMEOUT_60S,
                                  100,
                                  0,
                                  0,
                                  0))
    {
        return FALSE;
    }

    if (ROS_OK != Ros_SetTimer(M803xx_RTCP_60sTimer,
                               600,
                               0))
    {
        Ros_DeleteTimer(M803xx_RTCP_60sTimer);
        return FALSE;
    }
#endif
    return TRUE;
   
}

LOCAL void aif_open(PAIF_HEADER paif_header)
{
    unsigned long *FirmWare_File_Header;

    FirmWare_File_Header = (unsigned long *)bDmFile;

    M80320_PRINTF("Open Firmware\n");
    paif_header->bl_decompress_code      =  Swap_Word(*(FirmWare_File_Header+0x00));
    paif_header->bl_self_reloc_code      =  Swap_Word(*(FirmWare_File_Header+0x01));
    paif_header->bl_dbg_int_zeroinit     =  Swap_Word(*(FirmWare_File_Header+0x02));
    paif_header->bl_image_entry_point    =  Swap_Word(*(FirmWare_File_Header+0x03));
    paif_header->program_exit_instr      =  Swap_Word(*(FirmWare_File_Header+0x04));
    paif_header->image_readonly_size     =  Swap_Word(*(FirmWare_File_Header+0x05));
    paif_header->image_readwrite_size    =  Swap_Word(*(FirmWare_File_Header+0x06));
    paif_header->image_debug_size        =  Swap_Word(*(FirmWare_File_Header+0x07));
    paif_header->image_zero_init_size    =  Swap_Word(*(FirmWare_File_Header+0x08));
    paif_header->image_debug_type        =  Swap_Word(*(FirmWare_File_Header+0x09));
    paif_header->image_base              =  Swap_Word(*(FirmWare_File_Header+0x0a));
    paif_header->work_space              =  Swap_Word(*(FirmWare_File_Header+0x0b));
    paif_header->address_mode            =  Swap_Word(*(FirmWare_File_Header+0x0c));
    paif_header->data_base               =  Swap_Word(*(FirmWare_File_Header+0x0d));
    paif_header->first_fat               =  Swap_Word(*(FirmWare_File_Header+0x0e));
    paif_header->reserved2               =  Swap_Word(*(FirmWare_File_Header+0x0f));
    paif_header->debug_init_instr        =  Swap_Word(*(FirmWare_File_Header+0x10));
}

unsigned long ReadFromRegister(unsigned char reg_add,unsigned long Addr)
{
    volatile unsigned long *Modem_Addr,result;

    Modem_Addr    = (volatile unsigned long *)(Addr + reg_add);
    result        = Swap_Word(*(Modem_Addr));
    return result;
}

void WriteToRegister(unsigned char reg_add,unsigned long Addr,unsigned short data)
{
    volatile unsigned long *Modem_Addr;

    Modem_Addr    = (unsigned long *)(Addr + reg_add);
    *(Modem_Addr) = Swap_Word(data);
}

/*************************************************************************/
/* Function name: ReadFromMbox                                           */
/* Description  : Read message From M803xx Mailbox                       */
/* Return type  : BOOL                                                   */
/* Argument     : Msg   -- Pointer to the Message                        */
/*                Addr -- Base Address of M803xx                         */
/* Author/Date  : Cao WanMing/2003-1-16 10:15                            */
/* Note:                                                                 */
/*                                                                       */
/*************************************************************************/
BOOL ReadFromMbox(MBOX_PACKET *Msg,unsigned long Addr)
{
    volatile unsigned long *Modem_Addr;
    UINT32 timeout;

    timeout = tickGet() + 5*sysClkRateGet();  /* 5s */
    while(!(ReadFromRegister(FIFO_STA_REG,Addr) & RXM3I_MASK))
    {
        if (tickGet() > timeout)
        {
            return FALSE;
        }
    }

    Modem_Addr    = (unsigned long *)(Addr + RXMAIL0);
    Msg->p2   = Swap_Word(*(Modem_Addr));
    Modem_Addr    = (unsigned long *)(Addr + RXMAIL1);
    Msg->p1   = Swap_Word(*(Modem_Addr));
    Modem_Addr    = (unsigned long *)(Addr + RXMAIL2);
    Msg->p0   = Swap_Word(*(Modem_Addr));
    Modem_Addr    = (unsigned long *)(Addr + RXMAIL3);
    Msg->message = Swap_Word(*(Modem_Addr));


#if M803xx_INIT_DEBUG
    M80320_PRINTF("READ -- P2: %x;  P1: %x;  P0: %x;  Message: %x\n",Msg->p2,Msg->p1,Msg->p0,Msg->message);
#endif
    WriteToRegister(FIFO_STA_REG, Addr, RXM3IAK_MASK);   /*clean rxmail writen status bit */
    return TRUE;
}

/*************************************************************************/
/* Function name: WriteToMbox                                            */
/* Description  : Write message to the M803xx Mailbox                    */
/* Return type  : BOOL                                                   */
/* Argument     : msg   -- Message ID of Message                         */
/*                p0    -- Parameter 1 of Messge                         */
/*                p1    -- parameter 2 of Message                        */
/*                p2    -- Parameter 3 of Message                        */
/*                Addr -- Base Address of M803xx                         */
/* Author/Date  : Cao WanMing/2003-1-16 10:35                            */
/* Note:                                                                 */
/*                                                                       */
/*************************************************************************/
BOOL WriteToMbox(unsigned long p2,unsigned long p1,unsigned long p0,unsigned long msg,unsigned long Addr)
{
    volatile unsigned long *Modem_Addr;
    unsigned long timeout;

    Modem_Addr    = (unsigned long *)(Addr + TXMAIL0);
    *(Modem_Addr) = Swap_Word(p2);
    Modem_Addr    = (unsigned long *)(Addr + TXMAIL1);
    *(Modem_Addr) = Swap_Word(p1);
    Modem_Addr    = (unsigned long *)(Addr + TXMAIL2);
    *(Modem_Addr) = Swap_Word(p0);
    Modem_Addr    = (unsigned long *)(Addr + TXMAIL3);
    *(Modem_Addr) = Swap_Word(msg);

#if M803xx_INIT_DEBUG
    M80320_PRINTF("WRITE -- P2: %lx;  P1: %lx;  P0: %lx;  Message: %lx\n", p2, p1, p0, msg);
#endif

    timeout = tickGet() + 10*sysClkRateGet();  /* 3s */
    while(!(ReadFromRegister(FIFO_STA_REG, Addr)& TXM3I_MASK))
    {
        if (tickGet() > timeout)
            return FALSE;
    }

    WriteToRegister(FIFO_STA_REG, Addr, TXM3IAK_MASK);    /*clean txmail box full interrupt status bit*/
    return TRUE;
}

LOCAL BOOL M803xx_HandShake(unsigned long Addr)
{
    MBOX_PACKET msg;
    volatile unsigned long FIFOStatus;

    if(!ReadFromMbox(&msg,Addr)) return FALSE;
    if ((msg.p0 != 0x4321)||(msg.p1 != 0x8765)||(msg.p2 != 0xCBA9))
        return FALSE;
    FIFOStatus = Swap_Word(*(unsigned long *)(FIFO_STA_REG + Addr));
    if(FIFOStatus & 0x4000)ReadFromMbox(&msg,Addr);
    if ((msg.p0 != 0x4321)||(msg.p1 != 0x8765)||(msg.p2 != 0xCBA9))
        return FALSE;
    if(!WriteToMbox(0x00,0x00,0x00,0x1300,Addr)) return FALSE;

    return TRUE;
}

/*initial the host_fifo control reg*/
/*RXM3IE TXM3IE PCI BUS MASTER ENABLE*/
LOCAL void  M803xx_DMAFIFO_Enable(unsigned long Addr)
{
    volatile unsigned long *Modem_Addr;

    Modem_Addr=(unsigned long *)(Addr + FIFO_CTR_REG);
    *(Modem_Addr) = Swap_Word(0x741b);/* 0x441b */
    Modem_Addr=(unsigned long *)(Addr + TX_FIFO_THRESHOLD_H);
    *(Modem_Addr) = Swap_Word(0x00c0);
    Modem_Addr=(unsigned long *)(Addr + TX_FIFO_THRESHOLD_L);
    *(Modem_Addr) = Swap_Word(0x00c0);
    Modem_Addr=(unsigned long *)(Addr + RX_FIFO_THRESHOLD_H);
    *(Modem_Addr) = Swap_Word(0x00c0);
    Modem_Addr=(unsigned long *)(Addr + RX_FIFO_THRESHOLD_L);
    *(Modem_Addr) = Swap_Word(0x00c0);
}

LOCAL BOOL M803xx_DeviceInit(unsigned long Addr)
{
    MBOX_PACKET msg;

    /*bem_set_clock = 14 */
    if(!WriteToMbox(0x00,0x00,0x0E,0x0C00,Addr)) return FALSE;
    if(!ReadFromMbox(&msg,Addr)) return FALSE;
    if (msg.message != PCI_BRM_CMD_ACK) return FALSE;

    /*BRM_SET_ARM_CLKMODE=3*/
    if(!WriteToMbox(0x00,0x00,0x03,0x1500,Addr)) return FALSE;
    if(!ReadFromMbox(&msg,Addr)) return FALSE;
    if (msg.message != PCI_BRM_CMD_ACK) return FALSE;

    /*brm_set_sdram_params_1*/
    if(!WriteToMbox(0x0411,0x00EA,0xAE9B,0x0D00,Addr)) return FALSE;
    if(!ReadFromMbox(&msg,Addr)) return FALSE;
    if (msg.message != PCI_BRM_CMD_ACK) return FALSE;

    /*brm_set_sdram_params_2*/
    if(!WriteToMbox(0x00,0x00,0x42,0x0E00,Addr)) return FALSE;
    if(!ReadFromMbox(&msg,Addr)) return FALSE;
    if (msg.message != PCI_BRM_CMD_ACK) return FALSE;

    /*brm_set_cs_params*/
    if(!WriteToMbox(0x0b,0x0200,0x0,0x0F00,Addr)) return FALSE;
    if(!ReadFromMbox(&msg,Addr)) return FALSE;
    if (msg.message != PCI_BRM_CMD_ACK) return FALSE;

    /*brm_enable the ICACHE of arm */
    if(!WriteToMbox(0x00,0x00,0x01,0x1A00,Addr)) return FALSE;
    if(!ReadFromMbox(&msg,Addr)) return FALSE;
    if (msg.message != PCI_BRM_CMD_ACK) return FALSE;

    return TRUE;
}

LOCAL void trans_data_tofifo(unsigned long *pw,unsigned long count,unsigned long CSM_addr)
{
    volatile unsigned long *Modem_Addr,i,j;
    for (i=0;i<count;i=i+4)
    {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区男女天堂| 蜜臀99久久精品久久久久久软件| 国产成+人+日韩+欧美+亚洲| 久久亚洲二区三区| 国产乱国产乱300精品| 久久日韩粉嫩一区二区三区| 国产呦精品一区二区三区网站| 2023国产精华国产精品| 国产精品主播直播| 国产精品久久久久久久蜜臀| 成人av资源网站| 亚洲精品自拍动漫在线| 欧美亚洲尤物久久| 日韩国产一区二| 久久久久国产精品麻豆ai换脸| 成人午夜电影久久影院| 亚洲一区二区在线视频| 91精品国产综合久久蜜臀| 久久精品国产亚洲5555| 国产精品网友自拍| 欧美日韩在线播放一区| 激情偷乱视频一区二区三区| 中文字幕欧美三区| 日本一不卡视频| 91麻豆免费看片| 一区二区在线观看视频在线观看| 欧洲一区二区三区免费视频| 日本不卡中文字幕| 国产亚洲人成网站| 色狠狠一区二区| 免费观看成人av| 国产精品久久久久久久久久久免费看 | 男人的j进女人的j一区| 精品成人a区在线观看| 91啪九色porn原创视频在线观看| 精品亚洲成av人在线观看| 中文字幕不卡的av| 欧美日韩国产不卡| 国产一区二区三区免费| 亚洲三级电影全部在线观看高清| 欧美美女一区二区| 成人av电影观看| 蜜臀精品久久久久久蜜臀| 中文字幕在线观看不卡| 日韩视频免费直播| 91国产免费看| 国产成人午夜视频| 日韩中文字幕麻豆| 专区另类欧美日韩| 久久久亚洲国产美女国产盗摄| 欧美性欧美巨大黑白大战| 国产69精品久久99不卡| 日本亚洲天堂网| 一区二区三区久久| 中文字幕不卡一区| 久久综合九色综合97婷婷女人| 在线观看www91| 成人av电影在线播放| 国产在线一区观看| 五月综合激情日本mⅴ| 亚洲美女在线国产| 国产精品久久毛片a| 亚洲综合999| 久久久噜噜噜久久人人看 | 亚洲欧洲成人精品av97| 精品奇米国产一区二区三区| 欧美区一区二区三区| 一本久久精品一区二区| 国产不卡高清在线观看视频| 狠狠色综合日日| 美女一区二区在线观看| 日韩精品每日更新| 亚洲国产日日夜夜| 亚洲综合色噜噜狠狠| 亚洲日本成人在线观看| 国产精品电影院| 国产精品久久久久影院色老大| 国产肉丝袜一区二区| 久久精品亚洲乱码伦伦中文| 精品播放一区二区| 亚洲三级视频在线观看| 国产精品女主播在线观看| 亚洲欧美电影院| 亚洲欧美影音先锋| 亚洲男人的天堂在线aⅴ视频| 中文字幕一区在线观看| 国产精品福利av| 亚洲色图20p| 亚洲精品国产精品乱码不99| 亚洲精品福利视频网站| 一区二区三区日韩精品| 亚洲一区在线观看免费观看电影高清| 亚洲少妇中出一区| 亚洲精品欧美激情| 亚洲va欧美va天堂v国产综合| 五月天欧美精品| 蜜桃一区二区三区在线| 久久99久久99| 国产成a人亚洲精品| 波多野结衣一区二区三区 | 理论片日本一区| 国产在线一区二区综合免费视频| 国产91丝袜在线观看| thepron国产精品| 欧美色倩网站大全免费| 欧美一区二区播放| 国产午夜久久久久| 亚洲精品日日夜夜| 免费高清在线视频一区·| 丁香六月久久综合狠狠色| 中文字幕一区不卡| 亚洲在线观看免费| 久久99精品久久久| 一本到一区二区三区| 日韩一区二区在线看| 国产拍揄自揄精品视频麻豆| ...中文天堂在线一区| 青青国产91久久久久久| 波多野结衣在线一区| 欧美日本在线视频| 中文字幕第一页久久| 亚洲国产精品久久不卡毛片| 国产一区二区福利| 欧美私人免费视频| 国产亚洲一区二区三区| 天堂成人国产精品一区| 成人a区在线观看| 日韩一区二区三区高清免费看看| 国产精品进线69影院| 日本不卡123| 色狠狠一区二区| 国产午夜三级一区二区三| 亚洲国产毛片aaaaa无费看| 国产精品中文字幕日韩精品 | 国产91色综合久久免费分享| 欧美午夜免费电影| 欧美高清在线精品一区| 麻豆91在线观看| 在线观看精品一区| 国产精品久久久久久久久久免费看 | 久久久国际精品| 天天av天天翘天天综合网| 丁香亚洲综合激情啪啪综合| 欧美精品vⅰdeose4hd| 亚洲色图在线视频| 国产不卡视频在线观看| 欧美va亚洲va香蕉在线| 亚洲高清免费观看高清完整版在线观看| 国产原创一区二区| 欧美一区二区三区成人| 亚洲高清视频中文字幕| 99久久亚洲一区二区三区青草| 久久品道一品道久久精品| 男人的j进女人的j一区| 欧美日韩一区二区三区高清| 日韩一区有码在线| 成人av资源在线观看| 久久美女高清视频| 蜜臀精品一区二区三区在线观看| 欧美性生活一区| 一区二区三区在线观看动漫| 成人av在线影院| 中文字幕av资源一区| 国产尤物一区二区在线| 欧美成人高清电影在线| 日本不卡视频在线观看| 欧美一区二区精品久久911| 亚洲成人动漫av| 欧美日韩精品一区二区三区四区 | 亚洲韩国一区二区三区| 91美女精品福利| 亚洲免费在线观看| 91官网在线观看| 亚洲主播在线观看| 欧美午夜精品久久久久久超碰| 亚洲精品一二三四区| 色一区在线观看| 亚洲午夜一区二区| 欧美美女bb生活片| 日本少妇一区二区| 欧美不卡在线视频| 国产精品99久久不卡二区| 国产欧美日韩在线| a级高清视频欧美日韩| 国产精品盗摄一区二区三区| 99热国产精品| 亚洲国产成人va在线观看天堂| 欧美高清视频不卡网| 久久精品国产亚洲5555| 久久久电影一区二区三区| 春色校园综合激情亚洲| 亚洲色大成网站www久久九九| 在线视频国产一区| 青娱乐精品视频在线| 久久久久久一二三区| fc2成人免费人成在线观看播放| 一区二区免费看| 日韩视频一区二区三区在线播放| 国产一区二区美女诱惑| 亚洲精品视频观看|