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

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

?? sdhcslot.h

?? 6410BSP3
?? H
?? 第 1 頁 / 共 2 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//

// Copyright (c) 2002 BSQUARE Corporation.  All rights reserved.
// DO NOT REMOVE --- BEGIN EXTERNALLY DEVELOPED SOURCE CODE ID 40973--- DO NOT REMOVE

#ifndef _SDHCSLOT_DEFINED
#define _SDHCSLOT_DEFINED

#include "SDCardDDK.h"
#include "SDHCD.h"
#include <ceddk.h>
#include "SDHCRegs.h"
#include "Sdhcdma.hpp"
#include <s3c6410.h>

#define SDHC_MAX_POWER_SUPPLY_RAMP_UP   250     // SD Phys Layer 6.6
#define NUM_BYTE_FOR_POLLING_MODE 0x800
#define POLLING_MODE_TIMEOUT_DEFAULT    2

#define SDHC_POWER_UP_DELAY_KEY         _T("PowerUpDelay")
#define SDHC_WAKEUP_SOURCES_KEY         _T("DefaultWakeupSources")
#define SDHC_CAN_WAKE_ON_INT_KEY        _T("AllowWakeOnSDIOInterrupts")
#define SDHC_FREQUENCY_KEY              _T("BaseClockFrequency")
#define SDHC_TIMEOUT_FREQUENCY_KEY      _T("TimeoutClockFrequency")
#define SDHC_TIMEOUT_KEY                _T("TimeoutInMS")
#define SDHC_POLLINGMODE_SIZE           _T("PollingModeSize")
#define SDHC_POLLINGMODE_TIMEOUT        _T("PollingModeTiemout")
#define SDHC_DISABLE_DMA_KEY            _T("DisableDMA")

#ifdef _SMDK6410_CH0_EXTCD_
// The enumeration for factors is used in card detect interrupt handler of HSMMC ch0 on SMRP6400.
typedef enum  _SDSLOT_INT_TYPE {
    SDSLOT_INT_NULL = 0,
    SDSLOT_INT_CARD_DETECTED  = 1,
} SDSLOT_INT_TYPE, *PSDSLOT_INT_TYPE;
#endif

typedef class CSDHCSlotBase {
    friend class CSDHCSlotBaseDMA;
    friend class CSDHCSlotBaseSDMA;
    friend class CSDHCSlotBase32BitADMA2;
public:
    // Constructor - only initializes the member data. True initialization
    // occurs in Init().
    CSDHCSlotBase();
    virtual ~CSDHCSlotBase();

    // Perform basic initialization including initializing the hardware
    // so that the capabilities register can be read.
    virtual BOOL Init(DWORD dwSlot, volatile BYTE *pbRegisters,
        PSDCARD_HC_CONTEXT pHCDContext, DWORD dwSysIntr, HANDLE hBusAccess,
        INTERFACE_TYPE interfaceType, DWORD dwBusNumber, CReg *pregDevice);

    // Second stage of hardware initialization. Complete slot configuration
    // and enable interrupts.
    virtual SD_API_STATUS Start();
    // Signals card removal disables the slot.
    virtual SD_API_STATUS Stop();

    // Process a slot option call.
    virtual SD_API_STATUS SlotOptionHandler(SD_SLOT_OPTION_CODE sdOption, 
        PVOID pData, DWORD cbData);

    // Get this slot's power state.
    virtual CEDEVICE_POWER_STATE GetPowerState() { return m_cpsCurrent; }

    // What power state is required upon power up?
    virtual CEDEVICE_POWER_STATE GetPowerUpRequirement() { return m_cpsAtPowerDown; }

    // Called when the device is suspending.
    virtual VOID PowerDown();
    // Called when the device is resuming.
    virtual VOID PowerUp();

    // Start this bus request.
    virtual SD_API_STATUS BusRequestHandler(PSD_BUS_REQUEST pRequest);

    // Returns TRUE if the interrupt routine needs servicing, say at
    // initialization to see if a card is present.
    virtual BOOL NeedsServicing() { return m_fCheckSlot; }

#ifndef _SMDK6410_CH0_EXTCD_
    // Handle a slot interrupt. Also called when NeedsServicing() returns TRUE.
    virtual VOID HandleInterrupt();
#else
        // Prototype for the new Interrupt handler function can process factors on new card detect interrupt of HSMMC ch0 on SMDK6410.
    virtual VOID HandleInterrupt(SDSLOT_INT_TYPE intType = SDSLOT_INT_NULL);
#endif

    // In order to prevent infinite CARD INT occuring, below code is needed because of the architecture of HSMMC on s3c6410.
    inline BOOL IsOnlySDIOInterrupt() {
        WORD wIntStatus = ReadWord(SDHC_NORMAL_INT_STATUS);
        if (wIntStatus == NORMAL_INT_STATUS_CARD_INT && m_isSDIOInterrupt == TRUE ) {
            return TRUE;
        }
        return FALSE;
    }

    // Called by the controller to get the controller interrupt register.
    inline WORD ReadControllerInterrupts() {
        // We must use NORMAL_INT_STATUS instead of SLOT_INT_STATUS because SLOT_INT_STATUS is not apply to our controller.
        return ReadWord(SDHC_NORMAL_INT_STATUS);
    }

protected:
    virtual SD_API_STATUS SubmitBusRequestHandler(PSD_BUS_REQUEST pRequest );

    // What is this slot's maximum clock rate?
    virtual DWORD DetermineMaxClockRate();

    // What is this slot's maximum block length?
    virtual DWORD DetermineMaxBlockLen();

    // What should this slot use for timeout control?
    virtual DWORD DetermineTimeoutControl();

    // What are the default wakeup sources?
    virtual DWORD DetermineWakeupSources();
    
    // Set the slot voltage.
    virtual VOID SetVoltage(DWORD dwVddSetting);
    // Set the bus width and clock rate.
    virtual VOID SetInterface(PSD_CARD_INTERFACE_EX pInterface);

    // Set this slot's power state.
    virtual VOID SetPowerState(CEDEVICE_POWER_STATE cpsNew);

    // Get the capabilities register.
    virtual SSDHC_CAPABILITIES GetCapabilities() {
        SSDHC_CAPABILITIES caps;
        caps.dw = ReadDword(SDHC_CAPABILITIES);
        return caps;
    }

    virtual SSDHC_VERSION GetSDHCVersion() {
        SSDHC_VERSION version;
        version.uw = ReadWord(SDHC_HOST_CONTROLLER_VER);
        return version;
    }
    // Fill in the slot info structure.
    virtual SD_API_STATUS GetSlotInfo(PSDCARD_HC_SLOT_INFO pSlotInfo);

    // Get the desired Vdd window.
    virtual DWORD GetDesiredVddWindow();

    // Get the max Vdd window.
    virtual DWORD GetMaxVddWindow();

    // Is the card write-protected?
    virtual BOOL IsWriteProtected();

    // Enable/disable SDIO card interrupts.
    virtual VOID EnableSDIOInterrupts(BOOL fEnable);

    // How much extra time in ms for initial clocks is needed upon
    // insertion of a card for the power supply ramp up?
    virtual DWORD GetPowerSupplyRampUpMs() {
        return m_pregDevice->ValueDW(SDHC_POWER_UP_DELAY_KEY,
            SDHC_MAX_POWER_SUPPLY_RAMP_UP);
    }
    
    // Register access routines. These are not virtual so that we get
    // good inline read/write perf.
    template <class T>
    inline VOID WriteReg   (DWORD dwOffset, T tValue) {
        CheckRegOffset(dwOffset, sizeof(T));
        volatile T *ptRegister = (volatile T *) (m_pbRegisters + dwOffset);
        *ptRegister = tValue;
    }
    template <class T>
    inline T ReadReg       (DWORD dwOffset) {
        CheckRegOffset(dwOffset, sizeof(T));
        volatile T *ptRegister = (volatile T *) (m_pbRegisters + dwOffset);
        return *ptRegister;
    }

    inline BYTE  ReadByte  (DWORD dwOffset) {
        return ReadReg<BYTE>(dwOffset);
    }
    inline VOID  WriteByte (DWORD dwOffset, BYTE bValue) {
        WriteReg(dwOffset, bValue);
    }

    inline WORD  ReadWord  (DWORD dwOffset) {
        return ReadReg<WORD>(dwOffset);
    }
    inline VOID  WriteWord (DWORD dwOffset, WORD wValue) {
        WriteReg(dwOffset, wValue);
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产呦精品一区二区三区网站| 经典三级一区二区| 日韩制服丝袜av| 偷拍亚洲欧洲综合| 久久久精品黄色| 亚洲一线二线三线视频| 高清不卡一二三区| 日韩午夜激情av| 樱花影视一区二区| jlzzjlzz亚洲日本少妇| 夜夜嗨av一区二区三区| 粉嫩aⅴ一区二区三区四区| 4hu四虎永久在线影院成人| 一二三四区精品视频| 成人18视频在线播放| 国产欧美日韩精品一区| 国产在线精品免费av| 色一情一伦一子一伦一区| 中文字幕第一区第二区| 国产精品中文字幕日韩精品| 日韩一级黄色片| 日本不卡一区二区三区| 欧美调教femdomvk| 亚洲电影你懂得| 欧美午夜不卡视频| 亚洲二区在线视频| 在线观看网站黄不卡| 亚洲免费三区一区二区| 99久久99久久免费精品蜜臀| 国产亚洲欧洲一区高清在线观看| 奇米精品一区二区三区在线观看| 欧美日韩国产一级片| 亚洲高清一区二区三区| 欧美日韩aaaaaa| 蜜桃av噜噜一区| 精品乱人伦小说| 国产精品一区二区三区99| 久久久久久久久久电影| 丁香婷婷综合激情五月色| 国产精品嫩草久久久久| k8久久久一区二区三区| 亚洲精品久久久蜜桃| 欧美日韩精品三区| 天天av天天翘天天综合网色鬼国产| 在线综合+亚洲+欧美中文字幕| 五月综合激情网| 日韩午夜电影av| 国产高清久久久久| 成人欧美一区二区三区在线播放| 色一区在线观看| 日韩精品午夜视频| 久久久久久久免费视频了| www.在线成人| 午夜激情综合网| 欧美xxxxx牲另类人与| 成人精品免费看| 亚洲最大成人网4388xx| 日韩欧美国产午夜精品| 成人自拍视频在线| 亚洲午夜一区二区| 精品久久五月天| 99精品国产视频| 丝袜美腿高跟呻吟高潮一区| 久久免费电影网| 在线观看网站黄不卡| 国产一区欧美日韩| 亚洲自拍偷拍九九九| 精品久久久久久久久久久久久久久| 成人av在线网| 欧美aⅴ一区二区三区视频| 中文无字幕一区二区三区| 欧美丝袜自拍制服另类| 国产老妇另类xxxxx| 亚洲一区在线观看网站| 欧美国产在线观看| 欧美一级欧美三级在线观看| va亚洲va日韩不卡在线观看| 91免费视频观看| 精品一区二区三区免费播放| 亚洲无线码一区二区三区| 国产三级精品三级在线专区| 欧美日韩激情一区二区三区| 国产.欧美.日韩| 久久91精品国产91久久小草| 亚洲在线免费播放| 国产精品国产三级国产aⅴ无密码| 91精品国产色综合久久| 日本高清不卡一区| 福利一区在线观看| 久久国产免费看| 午夜精品在线视频一区| 亚洲黄色片在线观看| 中文天堂在线一区| 国产午夜精品在线观看| 欧美一级理论片| 欧美巨大另类极品videosbest| 91在线国内视频| 成人中文字幕合集| 国产aⅴ综合色| 国产成人精品亚洲日本在线桃色 | 欧美中文字幕一二三区视频| 国产福利一区在线| 国产精品综合网| 国产麻豆精品视频| 韩国欧美国产1区| 日日夜夜一区二区| 午夜精品福利一区二区蜜股av | 精品在线一区二区三区| 日韩vs国产vs欧美| 视频一区二区中文字幕| 午夜视频久久久久久| 亚洲国产精品一区二区久久| 亚洲视频一二三区| 亚洲欧美日韩电影| 玉足女爽爽91| 亚洲主播在线播放| 亚洲国产精品一区二区久久 | 亚洲一区二区黄色| 亚洲图片欧美色图| 午夜视频在线观看一区二区| 亚洲午夜精品在线| 日韩综合在线视频| 六月丁香综合在线视频| 久88久久88久久久| 国产宾馆实践打屁股91| 成人av一区二区三区| 色综合久久88色综合天天免费| 99久久99久久精品免费看蜜桃| 99re这里都是精品| 欧美丝袜第三区| 91精品国产免费久久综合| 一本到高清视频免费精品| 成人国产精品免费| 色偷偷一区二区三区| 欧美在线一区二区| 91精品国模一区二区三区| 精品国精品自拍自在线| 国产精品女主播在线观看| 亚洲欧美精品午睡沙发| 亚洲aⅴ怡春院| 91老师片黄在线观看| 欧美情侣在线播放| 久久中文娱乐网| 国产精品第五页| 日韩国产成人精品| 国产91在线观看| 欧美日韩视频在线一区二区| 日韩免费观看高清完整版| 国产精品国产三级国产aⅴ中文| 亚洲一区在线播放| 国产精品自产自拍| 欧美午夜一区二区| 国产女人18毛片水真多成人如厕| 亚洲国产精品成人久久综合一区 | 久久av老司机精品网站导航| 成人小视频在线观看| 欧美日韩成人综合| 国产精品美女久久久久久久| 亚洲成人动漫在线观看| 懂色av一区二区在线播放| 9191国产精品| 亚洲视频在线观看一区| 久久99久久精品欧美| 91免费在线播放| 久久久久久久久久久久久久久99 | 亚洲精选视频免费看| 麻豆成人久久精品二区三区小说| av动漫一区二区| 2021中文字幕一区亚洲| 香蕉成人伊视频在线观看| 成人精品国产福利| 亚洲男人的天堂在线观看| 国产精品一色哟哟哟| 91精品国产91久久久久久最新毛片 | 国产精品18久久久久久久久 | 91精品国产综合久久蜜臀| 亚洲欧洲av另类| 国产成人夜色高潮福利影视| 欧美一级爆毛片| 亚洲午夜久久久久久久久电影院 | 国产91高潮流白浆在线麻豆| 日韩写真欧美这视频| 亚洲午夜一区二区三区| 91在线云播放| 日本一区二区高清| 国产在线不卡一区| 精品少妇一区二区三区在线播放 | 欧美大片在线观看一区二区| 亚洲国产一区二区视频| 91视频一区二区三区| 国产精品国产三级国产有无不卡| 国产精品自拍网站| 国产亚洲婷婷免费| 国产成人在线观看免费网站| 欧美精品一区在线观看| 狠狠色综合日日| 久久久久久久久蜜桃| 国产乱淫av一区二区三区| 久久精品水蜜桃av综合天堂| 国产剧情一区在线|