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

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

?? ms2_serial.cpp

?? 270芯片在Wince操作系統下串口的驅動程序源代碼
?? CPP
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Module Name:  

ms2_serial.cpp

Abstract:  
        MainstoneII BSP Serial Driver.

Notes: 


--*/
#include <windows.h>
#include <types.h>
#include <ceddk.h>

#include <ddkreg.h>
#include <serhw.h>
#include <hw16550.h>
#include <Serdbg.h>

#include <bulverde.h>
#include <xllp_gpio.h>
#include <BUL16550.h>

#include <mainstoneii.h>
#include <xllp_bcr.h>

//---------------------------------Individual UART PORT -----------------------------------
//---------------------------------FUART PORT -----------------------------------
class CBulPdd16550FUART : public CBulPdd16550 
{
public:
    CBulPdd16550FUART (LPTSTR lpActivePath, PVOID pMdd, PHWOBJ pHwObj) 
        : CBulPdd16550 (lpActivePath,pMdd, pHwObj) {  };
	
    virtual BOOL Init() 
    {
        if (CBulPdd16550::Init() ) 
	{
            ConfigurePinout();
            //Enable FFUART clock
            m_pDCCLKReg->cken |= XLLP_CLKEN_FFUART ;
            return TRUE;
        }
        else
            return FALSE;
    }
	
    virtual void    SerialRegisterRestore() 
    {
        ConfigurePinout();
        CBulPdd16550::SerialRegisterRestore();
    }
	
private:
    BOOL ConfigurePinout()
    {
        //Initialize GPIO pins 
        //Write 0 on GPIO pins 39, 40 and 41 before configuring them as outputs.
        m_pGPIOReg->GPCR1 = ( XLLP_GPIO_BIT_FFDTR | XLLP_GPIO_BIT_FFTXD | XLLP_GPIO_BIT_FFRTS );
        
        //Configure direction of GPIO pins 34, 35, 36, 37 and 38 as input 
        //and GPIO pins 39, 40 and 41 as output
        m_pGPIOReg->GPDR1 &= ~( XLLP_GPIO_BIT_FFRXD | XLLP_GPIO_BIT_FFCTS | 
                                XLLP_GPIO_BIT_FFDCD | XLLP_GPIO_BIT_FFDSR | 
                                XLLP_GPIO_BIT_FFRI );
        m_pGPIOReg->GPDR1 |= (  XLLP_GPIO_BIT_FFTXD |  XLLP_GPIO_BIT_FFDTR |  XLLP_GPIO_BIT_FFRTS );
        
        //Configure GPIO pins 34, 35, 36, 37 and 38 for Alt_fn1. And pins 39, 40 and 41 for Alt_fn2.
        m_pGPIOReg->GAFR1_L |= (XLLP_GPIO_AF_BIT_FFRXD | XLLP_GPIO_AF_BIT_FFCTS | 
                                XLLP_GPIO_AF_BIT_FFDCD | XLLP_GPIO_AF_BIT_FFDSR | 
                                XLLP_GPIO_AF_BIT_FFRI  | XLLP_GPIO_AF_BIT_FFTXD | 
                                XLLP_GPIO_AF_BIT_FFDTR | XLLP_GPIO_AF_BIT_FFRTS );

        return TRUE;
    }
};

//---------------------------------BUART PORT -----------------------------------
class CBulPdd16550BUART : public CBulPdd16550 
{
public:
    CBulPdd16550BUART (LPTSTR lpActivePath, PVOID pMdd, PHWOBJ pHwObj) 
        : CBulPdd16550 (lpActivePath,pMdd, pHwObj) 
    { 
        m_pBCRReg = NULL;     
    };
	
    ~CBulPdd16550BUART() 
    {
        if (m_pBCRReg)
            MmUnmapIoSpace(m_pBCRReg,0);
    }
    
    virtual BOOL Init() 
    {
        if (m_pBCRReg==NULL) 
	{
            PHYSICAL_ADDRESS ioPhysicalBase = { MAINSTONEII_BASE_REG_PA_FPGA, 0 };
            m_pBCRReg =(PMAINSTONEII_BLR_REGS) MmMapIoSpace(ioPhysicalBase, sizeof(MAINSTONEII_BLR_REGS),FALSE) ;
        }
            
        if (m_pBCRReg!=NULL && CBulPdd16550::Init()) 
	{
            ConfigurePinout();
            //Enable BTUART clock
            m_pDCCLKReg->cken |= XLLP_CLKEN_BTUART ;
            return TRUE;
        }
        else
            return FALSE;
    }
	
    virtual void    SerialRegisterRestore() 
    {
        ConfigurePinout();
        CBulPdd16550::SerialRegisterRestore();
    }
	
    virtual void    SetDTR(BOOL bSet) 
    {
        if (bSet)
            m_pBCRReg->misc_wr &= ~XLLP_BCR_MISCWR1_BTDTR; 
        else
            m_pBCRReg->misc_wr |= XLLP_BCR_MISCWR1_BTDTR;             
    }
	
private:
    BOOL ConfigurePinout() 
    {
        //Configuring GPIO pins for BTUART
        //Initialize GPIO pins 
        //Write 0 on GPIO pins 43 and 45 before configuring them as outputs.
        m_pGPIOReg->GPCR1 = (XLLP_GPIO_BIT_BTTXD | XLLP_GPIO_BIT_BTRTS);

        //Configure direction of GPIO pins 42 and 44 as input 
        //and GPIO pins 43 and 45 as output
        m_pGPIOReg->GPDR1 &= ~( XLLP_GPIO_BIT_BTRXD | XLLP_GPIO_BIT_BTCTS); 
        m_pGPIOReg->GPDR1 |=  ( XLLP_GPIO_BIT_BTTXD | XLLP_GPIO_BIT_BTRTS);


        //Configure GPIO pins 42 and 44 for Alt_fn1. And pins 43 and 45 for Alt_fn2.
        m_pGPIOReg->GAFR1_L |= (XLLP_GPIO_AF_BIT_BTRXD | XLLP_GPIO_AF_BIT_BTCTS |
                                XLLP_GPIO_AF_BIT_BTTXD | XLLP_GPIO_AF_BIT_BTRTS );


        //Turn on the BTUART transceiver
        m_pBCRReg->misc_wr |= XLLP_BCR_MISCWR1_nBT_OFF; 

        return TRUE;
    }
	
    volatile PMAINSTONEII_BLR_REGS m_pBCRReg;
};

//---------------------------------SUART PORT -----------------------------------
class CBulPdd16550SUART : public CBulPdd16550 
{
public:
    CBulPdd16550SUART (LPTSTR lpActivePath, PVOID pMdd, PHWOBJ pHwObj) 
        : CBulPdd16550 (lpActivePath,pMdd, pHwObj)
    { 
        m_pBCRReg = NULL;     
    };
	
    ~CBulPdd16550SUART()
    {
        if (m_pBCRReg)
            MmUnmapIoSpace(m_pBCRReg,0);
    }
	
    virtual BOOL Init() 
    {

        if (m_pBCRReg==NULL) 
	{
            PHYSICAL_ADDRESS ioPhysicalBase = { MAINSTONEII_BASE_REG_PA_FPGA, 0 };
            m_pBCRReg =(PMAINSTONEII_BLR_REGS) MmMapIoSpace(ioPhysicalBase, sizeof(MAINSTONEII_BLR_REGS),FALSE);
        }
		
        if (m_pBCRReg!=NULL  && CBulPdd16550::Init())
	{
            ConfigurePinout();
            m_pDCCLKReg->cken |= XLLP_CLKEN_STUART ;
            return TRUE;
        }
		
        else
            return FALSE;
    }
	
    virtual void    SerialRegisterRestore() 
    {
        ConfigurePinout();
        CBulPdd16550::SerialRegisterRestore();
        
    }

private:
    BOOL ConfigurePinout() 
    {
        //Initialize GPIO pins 
        //Write 0 on GPIO pin 47 before configuring it as output.
        //Verify whether to write zero or not?
        //pHWHead->pGPIOReg->GPCR_y |=  (GPIO_47);
        m_pGPIOReg->GPSR1 =  (XLLP_GPIO_BIT_STD_TXD);

        //Configure direction of GPIO pin 46 as input and GPIO pin 47 as output
        m_pGPIOReg->GPDR1 &= (~XLLP_GPIO_BIT_STD_RXD);
        m_pGPIOReg->GPDR1 |= ( XLLP_GPIO_BIT_STD_TXD);

        //Configure GPIO pin 46 for Alt_fn2. And, GPIO pin 47 for Alt_fn1.
        m_pGPIOReg->GAFR1_L &= ~(XLLP_GPIO_AF_BIT_STD_RXD_MASK | XLLP_GPIO_AF_BIT_STD_TXD_MASK);
        m_pGPIOReg->GAFR1_L |= (XLLP_GPIO_AF_BIT_STD_RXD | XLLP_GPIO_AF_BIT_STD_TXD);

        //Configure IrDA transceiver for SIR mode and full distance power.  
        //pHWHead->pBCRReg->misc_wr &= ~(IRDA_MD_MASK | IRDA_FIR_MASK);
        m_pBCRReg->misc_wr &= (~XLLP_BCR_MISCWR1_IRDA_MD & ~XLLP_BCR_MISCWR1_IRDA_FIR);

        return TRUE;
    }

    volatile PMAINSTONEII_BLR_REGS m_pBCRReg;
};

CSerialPDD * CreateSerialObject(LPTSTR lpActivePath, PVOID pMdd,PHWOBJ pHwObj, DWORD DeviceArrayIndex)
{
    CSerialPDD * pSerialPDD = NULL;
    switch (DeviceArrayIndex ) 
    {
        case 0:default:
            pSerialPDD = new CPdd16550(lpActivePath,pMdd, pHwObj);
            break;
        case 0x80:
            pSerialPDD = new CBulPdd16550FUART (lpActivePath,pMdd, pHwObj);
            break;
        case 0x81:
            pSerialPDD = new CBulPdd16550BUART(lpActivePath,pMdd, pHwObj);
            break;
        case 0x82:
            pSerialPDD = new CBulPdd16550SUART(lpActivePath,pMdd, pHwObj);
            break;
    }
	
    if (pSerialPDD && pSerialPDD->Init()!= TRUE) 
    {
        delete pSerialPDD;
        pSerialPDD = NULL;
    }
	
    return pSerialPDD;
}

void DeleteSerialObject(CSerialPDD * pSerialPDD)
{
    if (pSerialPDD)
    delete pSerialPDD;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美国产三级| 国内偷窥港台综合视频在线播放| 视频在线观看91| 国产一区二区精品在线观看| 日本韩国欧美三级| 国产拍欧美日韩视频二区| 亚洲v日本v欧美v久久精品| 高清不卡一区二区| 日韩精品一区二区三区中文不卡| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲国产视频直播| 成人福利视频在线| 久久久三级国产网站| 视频一区欧美精品| 欧美影片第一页| 亚洲欧美日本韩国| 成人综合婷婷国产精品久久| 久久一夜天堂av一区二区三区| 三级久久三级久久久| 欧美中文一区二区三区| 国产精品大尺度| 国产91精品久久久久久久网曝门 | 91精品91久久久中77777| 国产精品三级av在线播放| 韩国v欧美v亚洲v日本v| 精品三级av在线| 蜜臀av一区二区在线观看| 欧美人与z0zoxxxx视频| 视频一区欧美精品| 欧美一区二区三级| 老司机免费视频一区二区| 日韩一区二区不卡| 黄色资源网久久资源365| 日韩你懂的在线观看| 精品亚洲国产成人av制服丝袜| 欧美一区二区啪啪| 久88久久88久久久| 久久你懂得1024| jlzzjlzz国产精品久久| 亚洲乱码日产精品bd| 在线视频你懂得一区二区三区| 亚洲综合色成人| 欧美日韩亚洲综合在线 | 国产aⅴ综合色| 亚洲国产精品精华液2区45| 成人黄色一级视频| 亚洲女与黑人做爰| 欧美日韩精品系列| 美女网站在线免费欧美精品| 精品捆绑美女sm三区| 国产a级毛片一区| 亚洲另类春色国产| 91精品国产免费| 国产精品亚洲午夜一区二区三区 | 国产在线不卡一卡二卡三卡四卡| 久久影院午夜片一区| 99久久精品国产一区| 亚洲网友自拍偷拍| 欧美tickling挠脚心丨vk| 国产精品88av| 亚洲制服丝袜在线| 精品国产免费久久| 色综合久久久网| 日本不卡视频一二三区| 欧美激情在线观看视频免费| 在线观看免费亚洲| 国产一区激情在线| 一区二区三区免费观看| 日韩午夜激情免费电影| 成人av电影在线网| 日韩不卡一二三区| 中文字幕在线观看不卡视频| 欧美福利视频导航| 成人手机电影网| 日韩**一区毛片| 中文字幕视频一区| 日韩精品专区在线影院观看| 91在线观看免费视频| 老司机午夜精品| 一区二区三区在线高清| 久久久久国产精品麻豆ai换脸| 欧美综合天天夜夜久久| 国产精品一二二区| 日韩电影一区二区三区四区| 亚洲欧洲日本在线| 久久女同性恋中文字幕| 欧美精品 日韩| 色婷婷亚洲精品| 国产福利精品一区二区| 丝袜美腿高跟呻吟高潮一区| 亚洲女人****多毛耸耸8| 久久精品亚洲精品国产欧美kt∨ | 国产做a爰片久久毛片| 亚洲一级二级三级| 中文字幕一区二区三区在线观看| 欧美精品一区二区三| 在线播放中文一区| 欧美午夜精品理论片a级按摩| 国产aⅴ综合色| 国内不卡的二区三区中文字幕| 午夜精品久久久久影视| 伊人开心综合网| 亚洲免费在线观看视频| 国产精品萝li| 国产精品麻豆网站| 中文字幕va一区二区三区| 亚洲成av人片www| 亚洲欧美激情在线| 亚洲欧美视频在线观看| 自拍偷拍国产亚洲| 国产精品国产a级| 亚洲日本免费电影| 亚洲九九爱视频| 一区二区三区四区不卡在线 | 色偷偷久久一区二区三区| 成人免费看片app下载| 成人手机电影网| jlzzjlzz国产精品久久| 成人美女在线观看| aa级大片欧美| 色婷婷国产精品| 欧美亚洲国产怡红院影院| 欧美视频日韩视频| 欧美日韩久久一区二区| 日韩一二三四区| 日韩美一区二区三区| 精品99999| 日本一区二区三区国色天香 | 亚洲一级二级三级| 五月婷婷激情综合| 久久国产综合精品| 国产福利视频一区二区三区| 99免费精品视频| 欧美色图免费看| 日韩欧美激情一区| 欧美激情一区二区三区蜜桃视频| 日韩美女视频一区二区| 午夜精品国产更新| 国产在线播放一区二区三区| eeuss鲁片一区二区三区在线观看| 色婷婷精品大视频在线蜜桃视频| 欧美日韩国产精选| 国产视频在线观看一区二区三区| 中文字幕一区二区三区蜜月 | 中文字幕亚洲在| 五月天一区二区| 国产一区二区三区精品视频| 99免费精品在线| 日韩视频免费直播| 亚洲欧美怡红院| 久久精品国产澳门| 99免费精品在线观看| 日韩色视频在线观看| 国产精品理论在线观看| 免费日本视频一区| 波多野结衣中文字幕一区二区三区 | 亚洲欧美激情插| 久久成人久久爱| 91极品视觉盛宴| 久久久久久久久久久黄色| 亚洲国产精品久久艾草纯爱| 国产福利视频一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 国产亚洲成aⅴ人片在线观看| 亚洲bt欧美bt精品| 国产不卡视频在线播放| 欧美一区二区三区公司| 亚洲日本成人在线观看| 国产呦精品一区二区三区网站| 在线国产电影不卡| 国产精品美女久久久久久久久| 六月婷婷色综合| 欧美色综合久久| 综合欧美亚洲日本| 国产高清在线观看免费不卡| 欧美精品三级日韩久久| 亚洲欧美aⅴ...| 国产91丝袜在线观看| wwwwxxxxx欧美| 日本中文字幕一区二区视频| 欧美日韩在线综合| 亚洲丝袜精品丝袜在线| 成人一区二区三区| 久久久噜噜噜久久人人看| 欧美aⅴ一区二区三区视频| 欧美日韩专区在线| 亚洲欧美另类小说视频| 99久久久久久| 中文字幕巨乱亚洲| 成人蜜臀av电影| 国产日韩欧美激情| 国产一区亚洲一区| 久久一二三国产| 另类的小说在线视频另类成人小视频在线 | 玖玖九九国产精品| 日韩午夜小视频| 另类小说综合欧美亚洲| 日韩免费在线观看| 久久se精品一区二区| 欧美大胆人体bbbb|