?? bulkcmd.h
字號:
/*
**********************************************************************************************
* Project: TK7821
* File: BulkCmd.h
* Contents:
*
*
* $Date: 02/25/05 Jason v0.1
* 04/21/05 Mingo v0.2 www.fameg.com
*
* Copyright (c) 2005 Fameg, Inc. All rights reserved
***********************************************************************************************
*/
#ifndef BulkCmdH
#define BulkCmdH
#define UsbDmaBuffer CurrentBuffer
#define CBW_SIGNATURE 0x55534243L // 0x43425355L
#define CSW_SIGNATURE 0x55534253L // 0x53425355L
#define CBWCB_OFFSET 0xf
#define CBW_LENGTH 31
#define CBW_LENGTH_98 32
#define CSW_LENGTH 13
#define EP4_5_FIFO_LEN 64
#define CBWCB_ADDR (UsbDmaBuffer + CBWCB_OFFSET)
extern bool ScsiCmdSTALLed;
// Bulk Completed State definitions
#define CBW_GET_COMPLETED 0x00
#define BULK_DMA_IN_COMPLETED 0x01
#define BULK_DMA_OUT_COMPLETED 0x02
#define SHORT_PACKET_STALL_COMPLETED 0x03
#define STALL_IN_COMPLETED 0x04
#define CSW_REPLY_COMPLETED 0x05
// Command Block Status Values
#define COMMAND_PASSED 0x00
#define COMMAND_FAILED 0x01
#define PHASE_ERROR 0x02 // Internal Device Error, Bit direction error, 13 cases
#define BulkSetDmaOut() (CSRWrite(USB_BASE + EP2_RXCSR, EN_RX2))
#define BulkOutTogErr() (CSRRead(USB_BASE + EP2_RXCSR) & STS_RX2_TOGERR)
#define BulkInStall() (CSRWrite(USB_BASE + EP1_TXCSR, EN_TX1_STL))
#define BulkStallMask 0xfc // Because set "addition" rx_en(bit0) on current usb arch would make buffer error.
//----------------------------------------------------------------------------
// Command Block Wrapper Structure
//----------------------------------------------------------------------------
typedef struct
{
UINT32 Sign;
UINT32 Tag;
UINT32 DataXsferLen;
BYTE Flags;
BYTE CbwcbLun;
BYTE CbwcbLen;
}CMD_BLOCK_WRAPPER, *PCMD_BLOCK_WRAPPER;
//----------------------------------------------------------------------------
// Command Status Wrapper Structure
//----------------------------------------------------------------------------
typedef struct
{
UINT32 Sign;
UINT32 Tag;
UINT32 DataResidueLen;
BYTE Status;
}CMD_STATUS_WRAPPER, *PCMD_STATUS_WRAPPER;
//----------------------------------------------------------------------------
// Mode Page Table Structure
//----------------------------------------------------------------------------
typedef struct
{
PBYTE PagePtr;
BYTE Size;
}MODE_PAGE_TABLE;
void BulkBufferAvailable(UINT16 Buffer) reentrant;
void BulkInvalidFieldError(BYTE Lun);
void BulkSetDmaIn(void *Des, void *Src, UINT16 DmaLen, UINT16 TxDmaBaseAddr);
void BulkPrepareCSW(BYTE Status);
BYTE BulkGetBufIndex(UINT16 BufAddr);
extern void BulkWaitOutDataReady();
extern void BulkFreeBuffer();
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -