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

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

?? ser_smdk2410.cpp

?? 這是由長高科技的開發平臺
?? 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:  

Abstract:

    Serial PDD for SamSang 2410 Development Board.

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

#include <ddkreg.h>
#include <serhw.h>
#include <Serdbg.h>
#include <pdds3c2410_ser.h>
#include <s3c2410x_base_regs.h>
#include <s3c2410x_ioport.h>

// CPdd2410Serial1 is only use for UART 0 which 
// RTS CTS is use GPH0 GPH1
// DTR & DSR is USE GPH6 GPH7 which is UART2's Rx & Tx. You can not enable UART2 when this object is running.
class CPdd2410Serial1 : public CPdd2410Uart {
public:
    CPdd2410Serial1(LPTSTR lpActivePath, PVOID pMdd, PHWOBJ pHwObj)
        : CPdd2410Uart(lpActivePath, pMdd, pHwObj)
        {
        m_pIOPregs = NULL;
        m_fIsDSRSet = FALSE;
    }
    ~CPdd2410Serial1() {
        if (m_pIOPregs!=NULL)
            MmUnmapIoSpace((PVOID)m_pIOPregs,0);
    }
    virtual BOOL Init() {
        PHYSICAL_ADDRESS    ioPhysicalBase = { S3C2410X_BASE_REG_PA_IOPORT, 0};
        ULONG               inIoSpace = 0;
        if (TranslateBusAddr(m_hParent,Internal,0, ioPhysicalBase,&inIoSpace,&ioPhysicalBase)) {
            // Map it if it is Memeory Mapped IO.
            m_pIOPregs = (S3C2410X_IOPORT_REG *)MmMapIoSpace(ioPhysicalBase, sizeof(S3C2410X_IOPORT_REG),FALSE);
        }
        if (m_pIOPregs) {
            DDKISRINFO ddi;
            if (GetIsrInfo(&ddi)== ERROR_SUCCESS && 
                    KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &ddi.dwIrq, sizeof(UINT32), &ddi.dwSysintr, sizeof(UINT32), NULL))
            {   
                RegSetValueEx(DEVLOAD_SYSINTR_VALNAME,REG_DWORD,(PBYTE)&ddi.dwSysintr, sizeof(UINT32));
            }
            else
                return FALSE;
            m_pDTRPort = (volatile ULONG *)&(m_pIOPregs->GPHDAT);
            m_pDSRPort = (volatile ULONG *)&(m_pIOPregs->GPHDAT);
            m_dwDTRPortNum = 6;
            m_dwDSRPortNum = 7;
            return CPdd2410Uart::Init();
        }
        return FALSE;
    };
    virtual void    SetDefaultConfiguration() {
        m_pIOPregs->GPHCON &= ~(0x3<<0 | 0x3<<2 | 0x3<<4 | 0x3<<6 | 0x3<<12 | 0x3<<14); // clear uart 0 - rx, tx
        m_pIOPregs->GPHCON |= (0x2<<4 | 0x2<<6 | 0x1<<12 | 0x0<<14); 
        m_pIOPregs->GPHCON |= (0x2<<0 | 0x2<<2 );
        m_pIOPregs->GPHUP  |= 0xc3;
        CPdd2410Uart::SetDefaultConfiguration();
    }
    virtual BOOL    InitModem(BOOL bInit) {
        SetDTR(bInit);
        return CPdd2410Uart::InitModem(bInit);
    }
    virtual ULONG   GetModemStatus() {
        ULONG ulReturn = CPdd2410Uart::GetModemStatus();
        ULONG ulEvent = 0;
        m_HardwareLock.Lock();
        BOOL fIsDSRSet = (((*m_pDSRPort) & (1<<m_dwDSRPortNum))==0);
        if (fIsDSRSet != m_fIsDSRSet) {
            ulEvent |= EV_DSR | EV_RLSD;
        }
        ulReturn |= (fIsDSRSet?(MS_DSR_ON|MS_RLSD_ON):0);
        m_fIsDSRSet = fIsDSRSet;
        m_HardwareLock.Unlock();
        if (ulEvent!=0)
            EventCallback(ulEvent,ulReturn);
        return ulReturn;
    }
    virtual void    SetDTR(BOOL bSet) {
        if (bSet)
            *m_pDTRPort &= ~(1<<m_dwDTRPortNum);
        else
            *m_pDTRPort |= (1<<m_dwDTRPortNum);
    };
private:
    volatile S3C2410X_IOPORT_REG * m_pIOPregs; 
    volatile ULONG *    m_pDTRPort;
    DWORD               m_dwDTRPortNum;
    volatile ULONG *    m_pDSRPort;
    DWORD               m_dwDSRPortNum;
    BOOL                m_fIsDSRSet;
};


// CPdd2410Serial2 is only use for UART 2 which 
// RTS CTS is use GPH0 GPH1
// DTR & DSR is USE GPH6 GPH7 which is UART2's Rx & Tx. You can not enable UART2 when this object is running.
class CPdd2410Serial2 : public CPdd2410Uart {
public:
    CPdd2410Serial2(LPTSTR lpActivePath, PVOID pMdd, PHWOBJ pHwObj)
        : CPdd2410Uart(lpActivePath, pMdd, pHwObj)
        {
        m_pIOPregs = NULL;
    }
    ~CPdd2410Serial2() {
        if (m_pIOPregs!=NULL)
            MmUnmapIoSpace((PVOID)m_pIOPregs,0);
    }
    virtual BOOL Init() {
        PHYSICAL_ADDRESS    ioPhysicalBase = { S3C2410X_BASE_REG_PA_IOPORT, 0};
        ULONG               inIoSpace = 0;
        if (TranslateBusAddr(m_hParent,Internal,0, ioPhysicalBase,&inIoSpace,&ioPhysicalBase)) {
            // Map it if it is Memeory Mapped IO.
            m_pIOPregs =(S3C2410X_IOPORT_REG *) MmMapIoSpace(ioPhysicalBase, sizeof(S3C2410X_IOPORT_REG),FALSE);
        }
        if (m_pIOPregs) {
            DDKISRINFO ddi;
            if (GetIsrInfo(&ddi)== ERROR_SUCCESS && 
                    KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &ddi.dwIrq, sizeof(UINT32), &ddi.dwSysintr, sizeof(UINT32), NULL))
            {   
                RegSetValueEx(DEVLOAD_SYSINTR_VALNAME,REG_DWORD,(PBYTE)&ddi.dwSysintr, sizeof(UINT32));
            }
            else
                return FALSE;
            return CPdd2410Uart::Init();
        }
        return FALSE;
    };
    virtual void    SetDefaultConfiguration() {
        m_pIOPregs->GPHCON &= ~(0x3<<12 | 0x3<<14); // clear uart 2 - rx, tx
        m_pIOPregs->GPHCON |= (0x2<<12 | 0x2<<14); 
        m_pIOPregs->GPHUP |= 0xc0;
        CPdd2410Uart::SetDefaultConfiguration();
    }
    virtual ULONG   GetModemStatus() {
        return (CPdd2410Uart::GetModemStatus() | MS_CTS_ON);
    }
    volatile S3C2410X_IOPORT_REG * m_pIOPregs; 
};
CSerialPDD * CreateSerialObject(LPTSTR lpActivePath, PVOID pMdd,PHWOBJ pHwObj, DWORD DeviceArrayIndex)
{
    CSerialPDD * pSerialPDD = NULL;
    switch (DeviceArrayIndex) {
      case 0:
        pSerialPDD = new CPdd2410Serial1(lpActivePath,pMdd, pHwObj);
        break;
      case 1:
        pSerialPDD = new CPdd2410Serial2(lpActivePath,pMdd, pHwObj);
        break;
    }
    if (pSerialPDD && !pSerialPDD->Init()) {
        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一区二区三区免费野_久草精品视频
无码av免费一区二区三区试看| 国产一区二区三区免费在线观看| 岛国精品在线观看| 欧美mv日韩mv国产| 老司机精品视频一区二区三区| 在线精品国精品国产尤物884a| 亚洲欧洲av一区二区三区久久| 久久国产福利国产秒拍| 日韩色在线观看| 国产一区二区美女诱惑| 国产精品五月天| 欧美天天综合网| 国产精品主播直播| 国产日韩综合av| 91网站视频在线观看| 亚洲福利视频一区二区| 亚洲欧美二区三区| 欧洲一区在线电影| 丝袜美腿亚洲色图| 久久久久久99精品| 日本久久电影网| 免费在线欧美视频| 亚洲国产精品高清| 欧美午夜电影一区| 国产成人午夜精品5599| 一二三区精品视频| 日韩女优av电影在线观看| 成人综合在线视频| 青青草国产成人av片免费| 久久美女高清视频| 欧美专区在线观看一区| 韩国欧美一区二区| 亚洲国产一区二区三区| 精品日产卡一卡二卡麻豆| 97精品视频在线观看自产线路二| 五月天一区二区三区| 国产精品乱码人人做人人爱| 欧美裸体一区二区三区| 99久久婷婷国产| 成人中文字幕合集| 国产成人丝袜美腿| 狠狠色狠狠色综合日日91app| 日本亚洲视频在线| 国产一区福利在线| 国产成人亚洲综合a∨婷婷 | 日韩免费成人网| 在线播放91灌醉迷j高跟美女| 国产精品系列在线播放| 蜜臀av一区二区在线免费观看| 洋洋av久久久久久久一区| 一区二区不卡在线视频 午夜欧美不卡在| 欧美国产激情二区三区| 国产精品无码永久免费888| 中文字幕 久热精品 视频在线| 2021国产精品久久精品| 久久丝袜美腿综合| 1024精品合集| 亚洲综合图片区| 蜜桃久久久久久久| 国产成人自拍网| 成人激情视频网站| 一本一本久久a久久精品综合麻豆| 成人激情校园春色| 欧洲另类一二三四区| 日韩亚洲欧美成人一区| 欧美国产精品专区| 天天影视网天天综合色在线播放| 日本免费在线视频不卡一不卡二| 麻豆91精品91久久久的内涵| a4yy欧美一区二区三区| 日本久久精品电影| 欧美精品xxxxbbbb| 欧美大胆人体bbbb| 亚洲精品中文在线| 国产精品资源网| 精品视频999| 国产精品久久久久久久久免费樱桃 | 亚洲男人的天堂在线aⅴ视频| 日韩电影在线一区二区| av一区二区三区黑人| 久久久国产一区二区三区四区小说 | 欧美日韩一区高清| 国产日韩欧美不卡在线| 久久国产剧场电影| 91麻豆精品国产91久久久更新时间| 久久午夜电影网| 精品在线亚洲视频| 精品国产麻豆免费人成网站| 亚洲福利视频三区| 欧美中文字幕亚洲一区二区va在线| 国产亚洲欧美色| 国产乱码精品一区二区三区忘忧草| 欧美高清dvd| 蜜桃免费网站一区二区三区| 91精品福利在线一区二区三区| 亚洲国产精品久久久久秋霞影院 | 成人国产精品免费观看动漫| 精品sm捆绑视频| 精品一区二区成人精品| 欧美一级国产精品| 久久草av在线| 国产视频在线观看一区二区三区| 国产在线不卡视频| 亚洲欧洲无码一区二区三区| 色哟哟欧美精品| 日韩影院免费视频| 国产欧美一区二区精品久导航| 国产麻豆欧美日韩一区| 中文字幕在线免费不卡| 色偷偷88欧美精品久久久| 亚洲国产精品一区二区久久恐怖片| 欧美一区二区国产| 高清日韩电视剧大全免费| 亚洲视频免费在线观看| 日韩一区二区三区在线观看| 成人免费毛片嘿嘿连载视频| 亚洲乱码精品一二三四区日韩在线| 欧美亚洲一区二区在线| 日本欧美一区二区在线观看| 精品成人一区二区三区四区| av在线免费不卡| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲综合视频网| 亚洲精品一区二区三区在线观看 | 波波电影院一区二区三区| 日韩制服丝袜先锋影音| 国产精品久久一级| 欧美v亚洲v综合ⅴ国产v| 精品乱码亚洲一区二区不卡| 欧美亚洲高清一区| 99久久精品国产精品久久| 国内精品久久久久影院薰衣草| 亚洲成av人片一区二区梦乃| 国产精品国产自产拍高清av| 精品福利一区二区三区免费视频| 欧美日韩1234| 欧美手机在线视频| 色欧美日韩亚洲| 91在线国产福利| 成人av在线影院| 福利一区福利二区| 国产激情视频一区二区在线观看| 亚洲成人av在线电影| 亚洲国产精品一区二区久久恐怖片| 国产精品美女一区二区三区| 中文字幕av一区二区三区高| 中文av一区特黄| 亚洲欧洲成人精品av97| 中文字幕一区不卡| 一区二区三区四区国产精品| 一区二区三区四区视频精品免费 | 欧美视频在线一区| 制服丝袜av成人在线看| 欧美哺乳videos| 久久久久88色偷偷免费| 中文字幕中文在线不卡住| 樱花影视一区二区| 午夜精品免费在线| 国产精品自拍av| 在线视频欧美精品| 制服丝袜亚洲播放| 国产欧美中文在线| 美女脱光内衣内裤视频久久影院| 亚瑟在线精品视频| 国产不卡一区视频| 欧美一区二区三区在线| 欧美高清在线精品一区| 亚洲香肠在线观看| 激情亚洲综合在线| 在线视频欧美区| 欧美激情一区二区三区不卡| 亚洲永久精品国产| 丰满放荡岳乱妇91ww| 正在播放一区二区| 亚洲欧美日韩成人高清在线一区| 免费日韩伦理电影| 欧美视频一二三区| 成人免费小视频| 国产精品一二三四五| 欧美人体做爰大胆视频| 亚洲老司机在线| 91丨porny丨首页| 国产精品麻豆欧美日韩ww| 精品一区二区三区在线观看| 日本乱人伦aⅴ精品| 中文字幕在线不卡| 99这里都是精品| 亚洲丝袜精品丝袜在线| 波多野结衣中文字幕一区二区三区| 日韩美女在线视频| 麻豆成人91精品二区三区| 日韩限制级电影在线观看| 肉肉av福利一精品导航| 欧美高清性hdvideosex| 日本免费在线视频不卡一不卡二| 欧美日韩精品一区二区三区| 亚洲综合一区二区精品导航| 欧美日韩一区二区三区四区| 午夜精品福利一区二区三区av| 欧美一区二区三区播放老司机|