📄 h3_hwtest.h
字号:
/* XIP Test Modes */ /*No default value, will be cleared upon reset*/
typedef enum {
DOCH_XIP_NORMAL = 0x0000,
DOCH_XIP_WRITEABLE = 0x0001,
DOCH_XIP_FILL_PATTERN = 0x0002, /*"M-Systems" and the rest with consecutive 16bit numbers*/
DOCH_XIP_PIPELINE = 0x0003 /*Places the device in pipeline access mode*/
} DOCH_XIPTestModes;
typedef FLByte Reg8bitType;
typedef FLWord Reg16bitType;
/*Max number of devices per ATA socket (defined by ATA standard)*/
#define ATA_MAX_NUM_OF_DEVICES 2
/*
* Length of DOCH register 'read' cycle in nanoseconds (default value should
* do for most systems).
*/
#define DOCH_ACCESS_NANOSEC 15
/*IPL Control Register*/
#define DOCH_IPL_WRITE_DISABLE 0x0000
#define DOCH_IPL_WRITE_READY 0x0001
#define DOCH_IPL_WRITE_ENABLE 0x0002
#define DOCH_IPL_ALL_CS_ENABLED 0x0000
#define DOCH_IPL_CLOSE_2LOW_IPLS 0x0010
#define DOCH_IPL_CLOSE_2HIGH_IPLS 0x0020
#define DOCH_IPL_CLOSE_ALL_IPLS 0x0030
#ifndef FAR0
#define FAR0
#endif /* FAR0 */
#ifndef FAR1
#define FAR1
#endif /* FAR1 */
#ifndef FLREAD_IO_WORD
#define FLREAD_IO_WORD(address) (*((volatile FLWord FAR0*)(address)))
#endif
#ifndef FLWRITE_IO_WORD
#define FLWRITE_IO_WORD(val,address) *((volatile FLWord FAR0*)(address))=(FLWord)(val)
#endif
#ifndef DBG_PRINT_FLOW
#define DBG_PRINT_FLOW(zone,str) /* if (zone & (ACTIVE_DEBUG_ZONE)) printf (str) */
#endif
#ifndef DBG_PRINT_ERR
#define DBG_PRINT_ERR(zone,str) /* if (zone & (ACTIVE_DEBUG_ZONE)) printf (str) */
#endif
#ifndef DBG_PRINT_WRN
#define DBG_PRINT_WRN(zone,str) /* if (zone & (ACTIVE_DEBUG_ZONE)) printf (str) */
#endif
#ifndef DBG_PRINT_FLOW_PRM
#define DBG_PRINT_FLOW_PRM(zone,str) /* if (zone & (ACTIVE_DEBUG_ZONE)) printf str */
#endif
#ifndef DBG_PRINT_ERR_PRM
#define DBG_PRINT_ERR_PRM(zone,str) /* if (zone & (ACTIVE_DEBUG_ZONE)) printf str */
#endif
#ifndef DBG_PRINT_WRN_PRM
#define DBG_PRINT_WRN_PRM(zone,str) /* if (zone & (ACTIVE_DEBUG_ZONE)) printf str */
#endif
#ifndef DFORMAT_PRINT
#define DFORMAT_PRINT(a) DBG_PRINT_WRN_PRM(FLZONE_FORMAT,a)
#endif
#ifndef DEBUG_PRINT
#define DEBUG_PRINT(a) DBG_PRINT_WRN(FLZONE_FULL,a)
#endif
/*----------------------------------------------------------------------*/
/* I O r e q 2 */
/* */
/* IOreq2 is a common structure passed to all file-system functions. */
/* Refer to the description of individual functions for specific usage */
/* of fields. Some fields have different names when used by different */
/* functions, hence the use of unions. */
/* */
/*----------------------------------------------------------------------*/
typedef struct {
FLByte socketNum; /*Socket number*/
FLByte partitionNum; /*Partition number*/
FLByte logicalPartitionNum; /*Logical partition number*/
FLByte ataDeviceNum; /*ATA device [0,1]*/
}Ioreq2Handle;
typedef struct {
Ioreq2Handle irHandle; /* Handle of file or drive for operation*/
FLDword irFlags; /* function-specific flags */
void * irPath; /* path of file for operation */
void * irData; /* Pointer to user-buffer for operation */
FLSDword irLength; /* No. of bytes, size or position for */
/* operation */
FLSDword irCount; /* Count or offset for operaion */
} IOreq2;
/**************************************************************************/
/* Special ioreq field names: */
/* IOReq structure is the basic IO type used for all TrueFFS calls. */
/* Some of the fields has additional name for more trivial use of the */
/* function. The duplicate names are defined below. */
/**************************************************************************/
#define irSectorCount irCount
#define irSectorNo irLength
#define irByteCount irCount
#define irAddress irLength
#ifndef NULL
#define NULL 0
#endif
#ifdef FL_BIG_ENDIAN
#define C_16_8(a) ((FLByte)((a)>>8))
#define C_8_16(a) (((FLWord)(a))<<8)
#define C_16_16(a) ((FLWord)((a)<<8) | ((a)>>8))
#else
#define C_16_8(a) ((FLByte)(a))
#define C_8_16(a) ((FLWord)(a))
#define C_16_16(a) ((FLWord)(a))
#endif /* FL_BIG_ENDIAN */
/* DOCH Access Layer macros */
/*==========================*/
#ifndef DOCHREAD_ATA_REG
#define DOCHREAD_ATA_REG(base, regNum) flRead8bitUsing16bitsSingleShift(base,(FLWord)regNum)
#endif /*DOCHREAD_ATA_REG*/
#ifndef DOCHWRITE_ATA_REG
#define DOCHWRITE_ATA_REG(base, regNum, val) flWrite8bitUsing16bitsSingleShift(base,(FLWord)((regNum)),(FLWord)(C_8_16(val)))
#endif /*DOCHWRITE_ATA_REG*/
#ifndef DOCHREAD_CTRL_REG
#define DOCHREAD_CTRL_REG(base, regNum) C_16_16(flDirectRead16BitReg((DOCHFlash),(FLWord)(regNum)))
#endif /*DOCHREAD_CTRL_REG*/
#ifndef DOCHWRITE_CTRL_REG
#define DOCHWRITE_CTRL_REG(base, regNum, val) flDirectWrite16BitReg((DOCHFlash),(FLWord)(regNum),(FLWord)(C_16_16(val)))
#endif /*DOCHWRITE_CTRL_REG*/
#ifndef DOCHBLK_READ
#define DOCHBLK_READ(address, buf, sectors) hal_blk_read_nor ( pPointer, \
(FLSNative )DOCH_DATA_REG, \
(FLByte*)buf, \
(FLSNative) (sectors<<9) )
#endif /*DOCHBLK_READ*/
#ifndef DOCHBLK_WRITE
#define DOCHBLK_WRITE(address, buf, sectors) hal_blk_write_nor ( (volatile FLByte *)pPointer, \
(FLByte*) buf, \
(FLSNative) sectors )
#define Read16(add ,offset) \
*(volatile unsigned short*)((unsigned long)add + (unsigned long)offset)
#endif /*DOCHBLK_WRITE*/
DOCH_Error DOCHSetDiskUserAttributes(IOreq2* ioreq);
DOCH_Error DOCHGetDiskUserAttributes(IOreq2* ioreq);
DOCH_Error DOCHSetCustomParameter(IOreq2* ioreq);
extern volatile unsigned short *pPointer;
//volatile unsigned short *pHibBasePointer;
/*
* Function prototypes - for function pointers
*/
FLSNative doch_sleep_nor ( FLSNative socketNo,FLDword millisec);
FLSNative hal_blk_read_nor ( volatile FLWord * base,FLSNative reg,FLByte * buf,FLSNative bytes );
FLSNative hal_blk_write_nor ( volatile FLByte * base, FLByte * src, FLSNative sectors );
void flWrite8bitUsing16bitsSingleShift(volatile FLWord * win, FLWord offset,Reg8bitType val);
Reg8bitType flRead8bitUsing16bitsSingleShift(volatile FLWord * win,FLWord offset);
/*
* Function prototypes
*/
DOCH_Error ready ( FLSNative devNum,
DOCH_Reg reg,
FLByte mask,
FLByte on_bits,
FLDword millisec );
DOCH_Error io_output ( FLSNative devNum,
DOCH_Registers * regs,
void * buf,
FLNative secNum
);
DOCH_Error io_input ( FLSNative devNum,
DOCH_Registers * regs,
void * buf,
FLNative secNum);
DOCH_Error io_ctrl ( FLSNative devNum,
DOCH_Registers * regs);
#endif /* H3_HW_TEST_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -