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

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

?? cfcard.h

?? ARM9基于WINDOWSCE的BSP源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************
*   File:    cfcard.h  -   Common definition for CF Card
* 
*   The content of this file or document is CONFIDENTIAL and PROPRIETARY
*   to Jade Technologies Co., Ltd.  It is subject to the terms of a
*   License Agreement between Licensee and Jade Technologies Co., Ltd.
*   restricting among other things, the use, reproduction, distribution
*   and transfer.  Each of the embodiments, including this information 
*   and any derivative work shall retain this copyright notice.
* 
*   Copyright (c) 2005 Jade Technologies Co., Ltd. 
*   All rights reserved.
****************************************************************************/
#ifndef CFCARD_H
#define CFCARD_H

#include <windows.h>
#include <ceddk.h>
#include <types.h>
#include <excpt.h>
#include <tchar.h>
#include <devload.h>
#include <diskio.h>
#include <storemgr.h>
#include <pkfuncs.h>
#include <oalfuncs.h>
#include "OalIntr.h"
#include "dma.h"

//------------------------------------------------------------------------------
//
// Global Macros
//
//------------------------------------------------------------------------------
// MSG definition
#define MSG_SYS		0
#define MSG_DISK	0
#define MSG_INFO	0
#define MSG_PAP		0
#define MSG_DATA	0
#define MSG_DMA		0

// Test definition,	if 1, card get into test mode.
#define CF_TEST		0

// common definition
#define CF_HOST_BASE_ADDRESS	0x2000e000
#define CF_BURST_BYTES			0x00000040
#define SECTORS_PER_BATCH		0x00000080
#define BYTES_PER_SECTOR		0x00000200
#define SECTORS_NEED_DMA_READ	0		//not use DMA 0xff
#define SECTORS_NEED_DMA_WRITE	0
#define SleepCircle				0x10

// DISK.d_DiskCardState
#define STATE_INITING		1
#define STATE_CLOSED		2
#define STATE_OPENED		3
#define STATE_DEAD			4		// Power down
#define STATE_REMOVED		5

// FIFO request
#define FIFOreq_TXPush		0x00
#define FIFOreq_TXPop		0x01
#define FIFOreq_RXPop		0x02
#define FIFOreq_RXPush		0x03
#define FIFOreq_FifoInc		0x04
#define FIFOreq_FifoStep	0x05
#define FIFOreq_DataEn		0x07
#define FIFOreq_IntrClr		0x08
#define FIFOreq_FifoCntClr	0x09
#define FIFOreq_StopFifo	0x0a
#define FIFOreq_ClearFifo	0x0b
#define FIFOreq_DmaTxReq	0x0c
#define FIFOreq_DmaRxReq	0x0d

// cfcard status
#define CfStatus_ready		0
#define CfStatus_wait_b		1
#define CfStatus_wp			2
#define CfStatus_TxRunning	4
#define CfStatus_TxHalf		5
#define CfStatus_TxFull		6
#define CfStatus_TxEmpty	7
#define CfStatus_RxRunning	8
#define CfStatus_RxHalf		9
#define CfStatus_RxFull		10
#define CfStatus_RxEmpty	11
#define CfStatus_Underrun	12
#define CfStatus_Overrun	13

// cf card work mode
#define CFMODE_MEMORY		0x1e
#define CFMODE_IO			0x1d
#define CFMODE_ATTRIB		0x1b
#define CFMODE_IDE			0x17
#define CFMODE_IDEALT		0x0f

// r/w mask bits
#define CfValidByte0		0x0e
#define CfValidByte1		0x0d
#define CfValidByte2		0x0b
#define CfValidByte3		0x07

// adapter register offset
#define CfU_Signal_cf		0
#define CfU_Signal_forceide	1
#define CfU_Signal_cs_b		2
#define CfU_Signal_blast_b	7
#define CfU_Signal_be_b		8

// interrupt bit
#define CfRawIntr_PCMInsert		0
#define CfRawIntr_PCMRemove		1
#define CfRawIntr_CfInsert		2
#define CfRawIntr_CfRemove		3
#define CfRawIntr_TxPushOver	4
#define CfRawIntr_TxPopOver		5
#define CfRawIntr_RxPushOver	6
#define CfRawIntr_RxPopOver		7
#define CfRawIntr_FifoOverrun	8
#define CfRawIntr_FifoUnderrun	9
#define CfRowIntr_IllegalWrite	10
#define CfRowIntr_IllegalRead	11
#define CfRawIntr_IOIrq			12
#define CfRawIntr_IDEIrq		13
#define CfRawIntr_CardAbsent	14
#define CfRawIntr_RWConflict	15
#define CfRawIntr_TxfifoHfReq	16
#define CfRawIntr_RxfifoHfReq	17

#define CF_DATA_INTR_MASK			\
	((1 << CfRawIntr_TxPopOver)		\
	|(1 << CfRawIntr_RxPopOver)		\
	|(1 << CfRawIntr_TxfifoHfReq)	\
	|(1 << CfRawIntr_RxfifoHfReq))

// card register offset(32bits)
#define ATA_REG_DATA        0
#define ATA_REG_FEATURE     1   // write
#define ATA_REG_ERROR       1   // read
#define ATA_REG_SECT_CNT    2
#define ATA_REG_SECT_NUM    3
#define ATA_REG_CYL_LOW     4
#define ATA_REG_CYL_HIGH    5
#define ATA_REG_DRV_HEAD    6
#define ATA_REG_COMMAND     7   // write
#define ATA_REG_STATUS      7   // read    

// command
#define ATA_CMD_READ                0x20	// NO retries enabled
#define ATA_CMD_WRITE               0x30	// No retries enabled
#define ATA_CMD_IDENTIFY            0xEC 

// limit sectors r/w no more than 0xff one time
#define SetRegSectorConfig(reg, Num) {reg = 0x7f00 + Num;}

// DMAC address
#define DMAC_BASE    (0x20001000)

// DMAC channel config register
#define DMAC_CHCONFIG_H         0x00040000  // Halt transfer
#define DMAC_CHCONFIG_A         0x00020000  // Channel is active
#define DMAC_CHCONFIG_L         0x00010000  // Lock transfer
#define DMAC_CHCONFIG_ITC       0x00008000  // Terminal count interrupt enable
#define DMAC_CHCONFIG_IE        0x00004000  // Error interrupt enable
#define DMAC_CHCONFIG_FLOW      0x00003800  // Flow control
#define DMAC_CHCONFIG_DPER      0x000003C0  // Destination peripheral
#define DMAC_CHCONFIG_SPER      0x0000001E  // Source peripheral
#define DMAC_CHCONFIG_E         0x00000001  // Channel enable

// DMAC channel control register bit masks
#define DMAC_CTRL_I         0x80000000		// Terminal count interrupt enable
#define DMAC_CTRL_CACHE     0x40000000		// Cacheable
#define DMAC_CTRL_BUF       0x20000000		// Bufferable
#define DMAC_CTRL_PRIV      0x10000000		// Privileged
#define DMAC_CTRL_DI        0x08000000		// Destination increment
#define DMAC_CTRL_SI        0x04000000		// Source increment
#define DMAC_CTRL_D         0x02000000		// Dest master select
#define DMAC_CTRL_S         0x01000000		// Source master select
#define DMAC_DWIDTH         0x00E00000		// Destination width
#define DMAC_SWIDTH         0x001C0000		// Source width
#define DMAC_DBSIZE         0x00038000		// Dest burst size
#define DMAC_SBSIZE         0x00007000		// Source burst size
#define DMAC_TRANSFER_SIZE  0x00000FFF		// Transfer size

// These are the transfer width ids
#define TRANSFER_WIDTH_BYTE		0x000
#define TRANSFER_WIDTH_WORD		0x001
#define TRANSFER_WIDTH_DWORD		0x002

#define DMAC_DWIDTH_SHIFT   21
#define DMAC_SWIDTH_SHIFT   18
#define DMAC_DBSIZE_SHIFT   15
#define DMAC_SBSIZE_SHIFT   12

// These are the burst size ids
#define BURST_SIZE_1	0x000
#define BURST_SIZE_4	0x001
#define BURST_SIZE_8	0x002
#define BURST_SIZE_16	0x003
#define BURST_SIZE_32	0x004
#define BURST_SIZE_64	0x005
#define BURST_SIZE_128	0x006
#define BURST_SIZE_256	0x007

#define DMAC_FLOW_SHIFT 11
#define DMAC_DPER_SHIFT 6
#define DMAC_SPER_SHIFT 1

#define FLOW_MEM_MEM_DMAC		0x000	// Memory to memory - DMAC as flow controller
#define FLOW_MEM_PER_DMAC		0x001	// Memory to peripheral - DMAC as flow controller
#define FLOW_PER_MEM_DMAC		0x002	// Peripheral to memory - DMAC as flow controller
#define FLOW_PER_PER_DMAC		0x003	// Peripheral to peripheral - DMAC as flow controller
#define FLOW_PER_PER_DEST		0x004	// Peripheral to peripheral - destination peripheral as flow controller
#define FLOW_MEM_PER_DEST		0x005	// Memory to peripheral - destination peripheral as flow controller
#define FLOW_PER_MEM_SOURCE		0x006	// Peripheral to memory - source peripheral as flow controller
#define FLOW_PER_PER_SOURCE		0x007	// Peripheral to peripheral - source peripheral as flow controller

//------------------------------------------------------------------------------
//
// Structures
//
//------------------------------------------------------------------------------
typedef volatile struct
{
	unsigned long CF_ADDR_FIFOreq		;	
	unsigned long CF_ADDR_TXFIFOCnt		;
	unsigned long CF_ADDR_RXFIFOCnt		;
	unsigned long CF_ADDR_u_fifoaddr	;	
	unsigned long CF_ADDR_SectorCfg		;
	unsigned long CF_ADDR_CfStatus		;
	unsigned long CF_ADDR_CfBaseAddr	;	
	unsigned long CF_ADDR_CfAddr		;	
	unsigned long CF_ADDR_CfData		;	
	unsigned long CF_ADDR_CfResult		;
	unsigned long CF_ADDR_CFReset		;	
	unsigned long CF_ADDR_config_val	;	
	unsigned long CF_ADDR_u_signal		;
	unsigned long CF_ADDR_u_sig_eff		;
	unsigned long CF_ADDR_CardIns		;	
	unsigned long CF_ADDR_CFINTR		;	
	unsigned long CF_ADDR_CFINTM		;	
	unsigned long CF_ADDR_CFINTena		;
	unsigned long CF_ADDR_VERSION		;	
	unsigned long Reserve1[ 0x0d ]		;
	unsigned long CF_ADDR_FIFO			;
	unsigned long Reserve2[0x200-0x20-1]	;
	unsigned long CF_BaseADDR_CARD[0x100]	;
} CFRegs, * PCFRegs;

// Data returned by the ATA_CMD_IDENTIFY command
typedef struct _IDENTIFY_DATA {
    unsigned short GeneralConfiguration;            // 00
    unsigned short NumberOfCylinders;               // 01
    unsigned short Reserved1;                       // 02
    unsigned short NumberOfHeads;                   // 03
    unsigned short UnformattedBytesPerTrack;        // 04
    unsigned short UnformattedBytesPerSector;       // 05
    unsigned short SectorsPerTrack;                 // 06
    unsigned short VendorUnique1[3];                // 07
    unsigned short SerialNumber[10];                // 10
    unsigned short BufferType;                      // 20
    unsigned short BufferSectorSize;                // 21
    unsigned short NumberOfEccBytes;                // 22
    unsigned short FirmwareRevision[4];             // 23
    unsigned short ModelNumber[20];                 // 27
    unsigned char  MaximumBlockTransfer;            // 47 low byte
    unsigned char  VendorUnique2;                   // 47 high byte
    unsigned short DoubleWordIo;                    // 48
    unsigned short Capabilities;                    // 49
    unsigned short Reserved2;                       // 50
    unsigned char  VendorUnique3;                   // 51 low byte
    unsigned char  PioCycleTimingMode;              // 51 high byte
    unsigned char  VendorUnique4;                   // 52 low byte
    unsigned char  DmaCycleTimingMode;              // 52 high byte
    unsigned short TranslationFieldsValid;          // 53 (low bit)
    unsigned short NumberOfCurrentCylinders;        // 54
    unsigned short NumberOfCurrentHeads;            // 55
    unsigned short CurrentSectorsPerTrack;          // 56
    unsigned long  CurrentSectorCapacity;           // 57 & 58
    unsigned char  MultiSectorCount;                // 59 low
    unsigned char  MultiSectorSettingValid;         // 59 high (low bit)
    unsigned long  TotalUserAddressableSectors;     // 60 & 61
    unsigned char  SingleDmaModesSupported;         // 62 low byte
    unsigned char  SingleDmaTransferActive;         // 62 high byte
    unsigned char  MultiDmaModesSupported;          // 63 low byte
    unsigned char  MultiDmaTransferActive;          // 63 high byte
    unsigned short Reserved[192];                   // 64
}IDENTIFY_DATA, *PIDENTIFY_DATA;

typedef struct _DISK {
    CRITICAL_SECTION	d_DiskCardCrit;		// guard access to global state and card
    unsigned long		d_DiskCardState;	// indicate card current state
    DISK_INFO			d_DiskInfo;			// for DISK_IOCTL_GET/SETINFO
    PCFRegs				d_pCFCardRegs;		// adapter registers
    LPWSTR				d_ActivePath;		// registry path to active key for this device
}DISK, *PDISK; 

typedef struct tagDMACRegisters {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品亚洲成av人在线观看| 丝袜脚交一区二区| 风间由美性色一区二区三区| 国产午夜亚洲精品羞羞网站| 91丝袜美女网| 日韩高清在线一区| 中文字幕精品在线不卡| 欧美日高清视频| 大桥未久av一区二区三区中文| 亚洲精品日韩综合观看成人91| 精品裸体舞一区二区三区| av中文一区二区三区| 日韩精品乱码免费| 蜜臀精品久久久久久蜜臀| 亚洲女人****多毛耸耸8| 精品日韩在线观看| 久久综合久色欧美综合狠狠| 欧美麻豆精品久久久久久| 成人av在线资源网| 国精品**一区二区三区在线蜜桃| 亚洲精品亚洲人成人网| 亚洲成a人v欧美综合天堂| 亚洲欧洲日韩综合一区二区| 日韩精品一区二区三区swag| 欧美日韩成人综合在线一区二区| 欧美一级理论片| 欧美精品日韩一本| 精品国产一区二区三区不卡| 欧美巨大另类极品videosbest | 国产伦精品一区二区三区视频青涩 | 亚洲国产成人91porn| 亚洲欧洲一区二区在线播放| 亚洲午夜久久久久| 国产剧情一区在线| 国产在线国偷精品免费看| 97久久精品人人爽人人爽蜜臀| 国产一区免费电影| 91色porny蝌蚪| 日韩三级在线观看| 亚洲精品日韩一| 国内久久精品视频| 欧美日韩一区国产| 欧美猛男男办公室激情| 国产三级一区二区| 日韩二区在线观看| 欧洲av在线精品| 欧美午夜精品一区二区蜜桃| 欧美性生交片4| 欧美激情一区二区在线| 青娱乐精品视频| 经典一区二区三区| 欧美影视一区二区三区| 国产精品天干天干在线综合| 中文字幕在线不卡一区二区三区| 美女一区二区视频| 欧美三级日本三级少妇99| 国产精品每日更新| 国产精品一卡二卡在线观看| 欧美精品第1页| 亚洲高清视频在线| 99久久99久久精品免费观看| 国产精品天干天干在线综合| 国产一区二区精品久久99| 日韩欧美一级精品久久| 日韩精彩视频在线观看| 欧美日韩亚州综合| 亚洲国产日产av| 91久久奴性调教| 51精品久久久久久久蜜臀| 久久综合狠狠综合久久激情 | 日韩欧美不卡一区| 天堂va蜜桃一区二区三区漫画版| 在线精品观看国产| 亚洲综合免费观看高清完整版 | 欧美一区二区黄色| 欧美激情一区二区| 国产精品一区二区无线| 久久久精品影视| 亚洲国产综合人成综合网站| 91首页免费视频| 亚洲精品免费一二三区| 在线视频中文字幕一区二区| 亚洲五月六月丁香激情| 欧美日韩三级视频| 日本美女一区二区| 久久综合给合久久狠狠狠97色69| 国内久久精品视频| 中文字幕国产一区| aaa国产一区| 性久久久久久久| 精品国产百合女同互慰| 国产成人精品免费在线| 4438成人网| 久久精品国产一区二区三区免费看| 99国产精品久久久| 亚洲国产精品久久人人爱| 欧美亚洲高清一区| 美女www一区二区| 国产欧美日韩视频一区二区| 免费黄网站欧美| 久久久久久亚洲综合影院红桃| 国产suv一区二区三区88区| 亚洲欧美日韩国产另类专区| 欧美亚洲高清一区二区三区不卡| 免费在线观看视频一区| 国产精品久久国产精麻豆99网站 | 成人免费视频caoporn| 一区视频在线播放| 欧美一级一区二区| 99久久夜色精品国产网站| 丝袜美腿高跟呻吟高潮一区| 精品国产免费人成在线观看| 国产高清久久久| 亚洲国产一区在线观看| 国产欧美一区在线| 欧美一区二区三区的| 91同城在线观看| 国产资源精品在线观看| 午夜久久久久久久久| av不卡在线观看| 蜜臀av性久久久久av蜜臀妖精| 日韩美女视频一区二区 | 欧美乱妇23p| 99视频热这里只有精品免费| 日本强好片久久久久久aaa| 国产精品福利一区二区三区| 欧美成人一级视频| 欧美专区日韩专区| 成人伦理片在线| 国产成人免费av在线| 日韩精品每日更新| 亚洲一级不卡视频| 国产精品国产三级国产普通话99| 91精品国产乱| 欧美日韩高清一区| 日本高清视频一区二区| 成人高清视频在线| 国产一区 二区| 久久精品国内一区二区三区| 午夜伊人狠狠久久| 亚洲一卡二卡三卡四卡五卡| 亚洲欧洲av色图| 国产精品美女久久久久aⅴ | 91精品国产综合久久福利| 91农村精品一区二区在线| 成人激情免费电影网址| 国产不卡视频在线播放| 高清在线成人网| 国产福利一区二区三区视频 | 亚洲一二三四在线| 一区二区三区日韩精品| 欧美一区二区三区四区在线观看| 色av成人天堂桃色av| 色综合久久88色综合天天6| 亚洲大型综合色站| 亚洲va天堂va国产va久| 性做久久久久久免费观看欧美| 天天操天天色综合| 日本vs亚洲vs韩国一区三区 | 亚洲欧美激情一区二区| 亚洲一区二区三区美女| 亚洲国产精品尤物yw在线观看| 亚洲成国产人片在线观看| 美女在线视频一区| 国产精品一卡二卡在线观看| av不卡在线播放| 欧美优质美女网站| 日韩免费视频线观看| 国产午夜精品理论片a级大结局| 国产午夜亚洲精品羞羞网站| 国产精品夫妻自拍| 香蕉av福利精品导航| 久久精品国产77777蜜臀| 国产福利不卡视频| 色综合天天性综合| 精品一区二区在线播放| 国产成人自拍高清视频在线免费播放| 国产成人亚洲精品青草天美| 91香蕉视频mp4| 欧美日韩国产综合一区二区 | 日本不卡一区二区三区| 国产在线播放一区三区四| 99视频在线精品| 91精品久久久久久久久99蜜臂| 精品国产成人系列| 亚洲久草在线视频| 久久66热re国产| 色妹子一区二区| 欧美本精品男人aⅴ天堂| 中文字幕五月欧美| 青青草97国产精品免费观看 | 国产视频不卡一区| 午夜视频一区二区| 成人亚洲精品久久久久软件| 欧美性生活影院| 亚洲欧洲国产日本综合| 久国产精品韩国三级视频| 色婷婷综合在线| 国产亚洲精品资源在线26u| 亚洲午夜精品网|