?? cfcard.h
字號:
unsigned long DMACIntStatus; // DMAC_BASE
unsigned long DMACIntTCStatus; // DMAC_BASE + 0x004
unsigned long DMACIntTCClear; // DMAC_BASE + 0x008
unsigned long DMACIntErrorStatus; // DMAC_BASE + 0x00C
unsigned long DMACIntErrClr; // DMAC_BASE + 0x010
unsigned long DMACRawIntTCStatus; // DMAC_BASE + 0x014
unsigned long DMACRawIntErrorStatus; // DMAC_BASE + 0x018
unsigned long DMACEnbldChns; // DMAC_BASE + 0x01C
unsigned long DMACSoftBReq; // DMAC_BASE + 0x020
unsigned long DMACSoftSReq; // DMAC_BASE + 0x024
unsigned long DMACSoftLBReq; // DMAC_BASE + 0x028
unsigned long DMACSoftLSReq; // DMAC_BASE + 0x02C
unsigned long DMACConfiguration; // DMAC_BASE + 0x030
unsigned long DMACSync; // DMAC_BASE + 0x034
unsigned long Padding1[50]; // DMAC_BASE + 0x038
unsigned long DMACC0SrcAddr; // DMAC_BASE + 0x100
unsigned long DMACC0DestAddr; // DMAC_BASE + 0x104
unsigned long DMACC0LLI; // DMAC_BASE + 0x108
unsigned long DMACC0Control; // DMAC_BASE + 0x10C
unsigned long DMACC0Configuration; // DMAC_BASE + 0x110
unsigned long Padding2[3]; // DMAC_BASE + 0x114
unsigned long DMACC1SrcAddr; // DMAC_BASE + 0x120
unsigned long DMACC1DestAddr; // DMAC_BASE + 0x124
unsigned long DMACC1LLI; // DMAC_BASE + 0x128
unsigned long DMACC1Control; // DMAC_BASE + 0x12C
unsigned long DMACC1Configuration; // DMAC_BASE + 0x130
unsigned long Padding3[3]; // DMAC_BASE + 0x134
unsigned long DMACC2SrcAddr; // DMAC_BASE + 0x140
unsigned long DMACC2DestAddr; // DMAC_BASE + 0x144
unsigned long DMACC2LLI; // DMAC_BASE + 0x148
unsigned long DMACC2Control; // DMAC_BASE + 0x14C
unsigned long DMACC2Configuration; // DMAC_BASE + 0x150
unsigned long Padding4[3]; // DMAC_BASE + 0x154
unsigned long DMACC3SrcAddr; // DMAC_BASE + 0x160
unsigned long DMACC3DestAddr; // DMAC_BASE + 0x164
unsigned long DMACC3LLI; // DMAC_BASE + 0x168
unsigned long DMACC3Control; // DMAC_BASE + 0x16C
unsigned long DMACC3Configuration; // DMAC_BASE + 0x170
unsigned long Padding5[3]; // DMAC_BASE + 0x174
unsigned long DMACC4SrcAddr; // DMAC_BASE + 0x180
unsigned long DMACC4DestAddr; // DMAC_BASE + 0x184
unsigned long DMACC4LLI; // DMAC_BASE + 0x188
unsigned long DMACC4Control; // DMAC_BASE + 0x18C
unsigned long DMACC4Configuration; // DMAC_BASE + 0x190
unsigned long Padding6[3]; // DMAC_BASE + 0x194
unsigned long DMACC5SrcAddr; // DMAC_BASE + 0x1A0
unsigned long DMACC5DestAddr; // DMAC_BASE + 0x1A4
unsigned long DMACC5LLI; // DMAC_BASE + 0x1A8
unsigned long DMACC5Control; // DMAC_BASE + 0x1AC
unsigned long DMACC5Configuration; // DMAC_BASE + 0x1B0
unsigned long Padding7[3]; // DMAC_BASE + 0x1B4
unsigned long DMACC6SrcAddr; // DMAC_BASE + 0x1C0
unsigned long DMACC6DestAddr; // DMAC_BASE + 0x1C4
unsigned long DMACC6LLI; // DMAC_BASE + 0x1C8
unsigned long DMACC6Control; // DMAC_BASE + 0x1CC
unsigned long DMACC6Configuration; // DMAC_BASE + 0x1D0
unsigned long Padding8[3]; // DMAC_BASE + 0x1D4
unsigned long DMACC7SrcAddr; // DMAC_BASE + 0x1E0
unsigned long DMACC7DestAddr; // DMAC_BASE + 0x1E4
unsigned long DMACC7LLI; // DMAC_BASE + 0x1E8
unsigned long DMACC7Control; // DMAC_BASE + 0x1EC
unsigned long DMACC7Configuration; // DMAC_BASE + 0x1F0
unsigned long Padding9[891]; // DMAC_BASE + 0x1F4
unsigned long DMACPeriphID0; // DMAC_BASE + 0xFE0
unsigned long DMACPeriphID1; // DMAC_BASE + 0xFE4
unsigned long DMACPeriphID2; // DMAC_BASE + 0xFE8
unsigned long DMACPeriphID3; // DMAC_BASE + 0xFEC
unsigned long DMACCellID0; // DMAC_BASE + 0xFF0
unsigned long DMACCellID1; // DMAC_BASE + 0xFF4
unsigned long DMACCellID2; // DMAC_BASE + 0xFF8
unsigned long DMACCellID3; // DMAC_BASE + 0xFFC
}DMAC_REGS, *PDMAC_REGS;
typedef struct tagDMAChannelRegs {
unsigned long DMACCxSrcAddr; // Channel base + 0x00
unsigned long DMACCxDestAddr; // Channel base + 0x04
unsigned long DMACCxLLI; // Channel base + 0x08
unsigned long DMACCxControl; // Channel base + 0x0C
unsigned long DMACCxConfiguration; // Channel base + 0x10
}DMAC_CHANNEL_REGS, *PDMAC_CHANNEL_REGS;
//------------------------------------------------------------------------------
//
// Functions
//
//------------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
// Functions in CFC_DISK.C
unsigned long
CFC_InitDisk(
LPWSTR AcPath
);
unsigned long
CFC_OpenDisk(
void
);
BOOL
CFC_CloseDisk(
void
);
BOOL
CFC_DeinitDisk(
void
);
// Functions in CFC_INFO.C
unsigned long
CFC_GetDiskInfo(
PDISK pDisk,
PDISK_INFO pInfo
);
BOOL
CFC_GetDeviceInfo(
PDISK pDisk,
PSTORAGEDEVICEINFO pInfo
);
BOOL
CFC_GetFolderName(
PDISK pDisk, LPWSTR pOutBuf,
unsigned long nOutBufSize,
unsigned long* pBytesReturned);
HKEY
CFC_OpenDriverKey(
LPTSTR ActiveKey
);
// Functions in CFC_PAP.C
void
CFC_DetectInsert(
void
);
void
CFC_DetectRemove(
void
);
unsigned long
CFC_WaitIntr(
void * pDk
);
// Functions in CFC_DATA.C
BOOL
CFC_SafeRead(
CFRegs *regs,
unsigned short*buf,
unsigned long sectornum,
unsigned long sectorcnt
);
BOOL
CFC_SafeWrite(
CFRegs *regs,
unsigned short*buf,
unsigned long sectornum,
unsigned long sectorcnt
);
BOOL
CFC_ReadSectors_FIFO(
CFRegs *regs,
unsigned short *buf,
unsigned long sectornum,
unsigned long sectorcnt,
unsigned long *errorcode
);
BOOL
CFC_WriteSectors_FIFO(
CFRegs *regs,
unsigned short *buf,
unsigned long sectornum,
unsigned long sectorcnt,
unsigned long *errorcode
);
BOOL
CFC_ReadSectors_DMA(
CFRegs *regs,
unsigned short *buf,
unsigned long sectornum,
unsigned long sectorcnt,
unsigned long *errorcode
);
BOOL
CFC_WriteSectors_DMA(
CFRegs *regs,
unsigned short *buf,
unsigned long sectornum,
unsigned long sectorcnt,
unsigned long *errorcode
);
int
CFC_ReadByte(
CFRegs *regs,
unsigned long offset,
unsigned char*result
);
int
CFC_WriteByte(
CFRegs *regs,
unsigned long offset,
unsigned char data
);
int
CFC_ReadHWd(
CFRegs *regs,
unsigned long offset,
unsigned short*result
);
int
CFC_WriteHWd(
CFRegs *regs,
unsigned long offset,
unsigned short data
);
int
CFC_SetFifoAccessMode(
CFRegs *regs
);
// Functions in CFC_DMA.C
BOOL
CFC_AllocateDMA(
void
);
BOOL
CFC_InitDMA(
unsigned long Opcode
);
BOOL
CFC_StartDMA(
CFRegs *regs,
unsigned long Opcode,
unsigned long FIFOAddr,
unsigned short*buf,
unsigned long sectorcnt
);
BOOL
CFC_ReleaseDMA(
void
);
#ifdef __cplusplus
}
#endif
// Additional functions definition - based on functions declared above
#define AtaSetCylinderLow(regs, a); CFC_WriteByte(regs, ATA_REG_CYL_LOW, a);
#define AtaSetCylinderHigh(regs, a); CFC_WriteByte(regs, ATA_REG_CYL_HIGH, a);
#define AtaSetHead(regs, a); CFC_WriteByte(regs, ATA_REG_DRV_HEAD, a);
#define AtaSetSectorNum(regs, a); CFC_WriteByte(regs, ATA_REG_SECT_NUM, a);
#define AtaSetSectorCount(regs, a); CFC_WriteByte(regs, ATA_REG_SECT_CNT, a);
#define AtaSetCommand(regs, a); CFC_WriteByte(regs, ATA_REG_COMMAND, a);
#define AtaReadStatus(regs, a); CFC_ReadByte(regs, ATA_REG_STATUS, &a);
#define AtaReadError(regs, a); CFC_ReadByte(regs, ATA_REG_ERROR, &a);
#define AtaReadData(regs, a); CFC_ReadHWd(regs, ATA_REG_DATA, &a);
#define AtaWriteData(regs, a); CFC_WriteHWd(regs, ATA_REG_DATA, a);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -