📄 flchkdef.h
字号:
#ifndef DOCH_NO_INIT_MMU_PAGES
#ifdef FL_NO_INIT_MMU_PAGES
#define DOCH_NO_INIT_MMU_PAGES
#endif /*FL_NO_INIT_MMU_PAGES*/
#endif /*DOCH_NO_INIT_MMU_PAGES*/
/*DOCH specific power mode defaults */
/*================================= */
/* by default DPD configured to:
active mode is NORMAL,
after command execution, device passes immediatly to
IDLE mode and after timeout (100msec) to DPD mode*/
#ifndef DOCH_DPD_DEFAULT_ACTIVE_MODE
#define DOCH_DPD_DEFAULT_ACTIVE_MODE DOCH_WM_NORMAL_AND_AUTO_STBY /*DOCH_WorkMode*/
#endif /*DOCH_DPD_DEFAULT_ACTIVE_MODE*/
#ifndef DOCH_DPD_DEFAULT_INACTIVE_MODE
#define DOCH_DPD_DEFAULT_INACTIVE_MODE DOCH_IM_IDLE_2_DPD /*DOCH_InactiveMode*/
#endif /*DOCH_DPD_DEFAULT_INACTIVE_MODE*/
#ifndef DOCH_DPD_DEFAULT_DPD_TIMEOUT
#define DOCH_DPD_DEFAULT_DPD_TIMEOUT 1
#endif /*DOCH_DPD_DEFAULT_DPD_TIMEOUT*/
/*================================= */
/* end of DOCH power mode settings */
/* Memory allocation */
/*===================*/
#ifndef DOCH_MALLOC
#ifdef FL_MALLOC
#define DOCH_MALLOC FL_MALLOC
#endif /*FL_MALLOC*/
#endif /*DOCH_MALLOC*/
#ifndef DOCH_FREE
#ifdef FL_FREE
#define DOCH_FREE FL_FREE
#endif /*FL_FREE*/
#endif /*DOCH_FREE*/
/* System init/release functions */
/*===============================*/
#ifndef DOCH_SYS_FUNC_INIT
#define DOCH_SYS_FUNC_INIT
#endif /* DOCH_SYS_FUNC_INIT */
#ifndef DOCH_SYS_FUNC_RELEASE
#ifdef FL_SYS_FUNC_RELEASE
#define DOCH_SYS_FUNC_RELEASE FL_SYS_FUNC_RELEASE
#else /*FL_SYS_FUNC_RELEASE*/
#define DOCH_SYS_FUNC_RELEASE()
#endif /*FL_SYS_FUNC_RELEASE*/
#endif /*DOCH_SYS_FUNC_RELEASE*/
/* DMA transfer */
/*==============*/
#ifndef DOCH_DMA_CONFIG
#ifdef FL_DMA_CONFIG
#define DOCH_DMA_CONFIG FL_DMA_CONFIG
#endif /*FL_DMA_CONFIG*/
#endif
#define DOCH_DMA_OPEN_CHANNEL 0
#define DOCH_DMA_CONFIG_TRANSACTION_DEVICE_TO_HOST 1
#define DOCH_DMA_FREE_CHANNEL 2
#define DOCH_DMA_WAIT_FOR_READ_TRANSACTION_END 3
#define DOCH_DMA_WAIT_FOR_WRITE_TRANSACTION_END 4
#define DOCH_DMA_CONFIG_TRANSACTION_HOST_TO_DEVICE 5
#ifndef DOCH_DMA_PULSE_WIDTH
#define DOCH_DMA_PULSE_WIDTH 0x001F
#endif /*DOCH_DMA_PULSE_WIDTH*/
/* DOCH_DMA_CHECK_BUFFER checks if buffer is suitable for DMA transfer*/
#ifndef DOCH_DMA_CHECK_BUFFER
#define DOCH_DMA_CHECK_BUFFER(bufAddress, sectors) (((FLDword)bufAddress & 0x3) == 0)
#endif /*DOCH_DMA_CHECK_BUFFER*/
/* Burst Mode */
/*============*/
#ifndef DOCH_USE_BURST_MODE_READ
#ifdef FL_USE_BURST_MODE_READ
#define DOCH_USE_BURST_MODE_READ
#endif /*FL_USE_BURST_MODE_READ*/
#endif /*DOCH_USE_BURST_MODE_READ*/
#ifdef DOCH_USE_BURST_MODE_READ
#ifndef DOCH_HOST_ENTER_READ_BURST_MODE
#ifdef FL_HOST_ENTER_BURST_MODE
#define DOCH_HOST_ENTER_READ_BURST_MODE FL_HOST_ENTER_BURST_MODE();
#else /*FL_HOST_ENTER_BURST_MODE*/
#define DOCH_HOST_ENTER_READ_BURST_MODE
#endif /*FL_HOST_ENTER_BURST_MODE*/
#endif /*DOCH_HOST_ENTER_READ_BURST_MODE*/
#ifndef DOCH_HOST_EXIT_READ_BURST_MODE
#ifdef FL_HOST_EXIT_BURST_MODE
#define DOCH_HOST_EXIT_READ_BURST_MODE FL_HOST_EXIT_BURST_MODE();
#else /*FL_HOST_EXIT_BURST_MODE*/
#define DOCH_HOST_EXIT_READ_BURST_MODE
#endif /*FL_HOST_EXIT_BURST_MODE*/
#endif /*DOCH_HOST_EXIT_READ_BURST_MODE*/
#endif /*DOCH_USE_BURST_MODE_READ*/
#ifdef DOCH_USE_BURST_MODE_WRITE
#ifndef DOCH_HOST_ENTER_WRITE_BURST_MODE
#define DOCH_HOST_ENTER_WRITE_BURST_MODE
#endif /*DOCH_HOST_ENTER_WRITE_BURST_MODE*/
#ifndef DOCH_HOST_EXIT_WRITE_BURST_MODE
#define DOCH_HOST_EXIT_WRITE_BURST_MODE
#endif /*DOCH_HOST_EXIT_WRITE_BURST_MODE*/
#endif /*DOCH_USE_BURST_MODE_WRITE*/
#ifndef DOCH_BURST_LENGTH
#ifdef BURST_LENGTH
#define DOCH_BURST_LENGTH ( (((BURST_LENGTH)-2)& 0x03 ) <<11)
#else
#ifdef FL_USE_BURST_MODE_READ
#ifdef FL_MIGRATION_VERSION
#error BURST_LENGTH must be defined, when FL_USE_BURST_MODE_READ defined
#else
#error DOCH_BURST_LENGTH must be defined, when DOCH_USE_BURST_MODE_READ defined
#endif /* migration*/
#endif /*FL_USE_BURST_MODE_READ*/
#endif /* BURST_LENGTH */
#endif /*DOCH_BURST_LENGTH*/
#ifndef DOCH_BURST_LATENCY
#ifdef BURST_LATENCY
#define DOCH_BURST_LATENCY ( ((BURST_LATENCY)& 0x07 )<<8)
#else
#ifdef FL_USE_BURST_MODE_READ
#ifdef FL_MIGRATION_VERSION
#error BURST_LATENCY must be defined, when FL_USE_BURST_MODE_READ defined
#else
#error DOCH_BURST_LATENCY must be defined, when DOCH_USE_BURST_MODE_READ defined
#endif /* migration*/
#endif /*FL_USE_BURST_MODE_READ*/
#endif /* BURST_LENGTH */
#endif /*DOCH_BURST_LATENCY*/
#ifndef DOCH_BURST_HOLD
#ifdef BURST_HOLD
#define DOCH_BURST_HOLD ((BURST_HOLD)<<13)
#else
#ifdef FL_USE_BURST_MODE_READ
#ifdef FL_MIGRATION_VERSION
#error BURST_HOLD must be defined, when FL_USE_BURST_MODE_READ defined
#else
#error DOCH_BURST_HOLD must be defined, when DOCH_USE_BURST_MODE_READ defined
#endif /* migration*/
#endif /*FL_USE_BURST_MODE_READ*/
#endif /* BURST_HOLD */
#endif /*DOCH_BURST_HOLD*/
#ifndef DOCH_BURST_WAIT_STATE
#ifdef BURST_WAIT_STATE
#define DOCH_BURST_WAIT_STATE ( ((BURST_WAIT_STATE)&0x03 )<<4)
#else
#ifdef FL_USE_BURST_MODE_READ
#ifdef FL_MIGRATION_VERSION
#error BURST_WAIT_STATE must be defined, when FL_USE_BURST_MODE_READ defined
#else
#error DOCH_BURST_WAIT_STATE must be defined, when DOCH_USE_BURST_MODE_READ defined
#endif /* migration*/
#endif /*FL_USE_BURST_MODE_READ*/
#endif
#endif /*DOCH_BURST_WAIT_STATE*/
/* end of BURST definitions for H3 */
/*=================================*/
/* Interrupt enabling */
/*====================*/
#define DOCH_INT_RB_DISABLED 0x00
#define DOCH_INT_RB_ENABLED 0x01
#ifndef DOCH_IRQ_RB_INIT
#ifdef FL_IRQ_RB_INIT
#define DOCH_IRQ_RB_INIT(wSockeNo) FL_IRQ_RB_INIT((wSockeNo))
#else /*FL_IRQ_RB_INIT*/
#define DOCH_IRQ_RB_INIT(wSockeNo) gDochIrqEnabled[(wSockeNo)]
#endif /*FL_IRQ_RB_INIT*/
#endif /*DOCH_IRQ_RB_INIT*/
/* MACRO for "Wait on Interrupt" */
/*===============================*/
#ifndef DOCH_SLEEP
#ifdef FL_TFFS_SLEEP
#define DOCH_SLEEP(socket, device, microseconds) FL_TFFS_SLEEP(socket, microseconds)
#else
#define DOCH_SLEEP(socket, device, microseconds)
#endif /*FL_TFFS_SLEEP*/
#endif /*DOCH_SLEEP*/
/* MACRO for notifying application that an interrupt had occurred
and was NOT yet serviced */
/*==========================*/
#ifndef DOCH_UNSERVICED_INTERRUPT
#define DOCH_UNSERVICED_INTERRUPT(socket, device) DOCH_SLEEP(socket, device, 0)
#endif /*DOCH_UNSERVICED_INTERRUPT*/
/* DOCH HW Configuration defaults */
/*================================*/
#ifndef DOCH_BURST_WRITE_MODE_DEFAULT
#define DOCH_BURST_WRITE_MODE_DEFAULT (DOCH_BURST_DISABLE | DOCH_BURST_HOLD_1_CLK | DOCH_BURST_LEN_4_CYC)
#endif /*DOCH_BURST_WRITE_MODE_DEFAULT*/
#ifndef DOCH_BURST_READ_MODE_DEFAULT
#define DOCH_BURST_READ_MODE_DEFAULT (DOCH_BURST_DISABLE | DOCH_BURST_HOLD_1_CLK | DOCH_BURST_LEN_4_CYC)
#endif /*DOCH_BURST_READ_MODE_DEFAULT*/
#ifndef DOCH_IPL_CTRL_DEFAULT
#define DOCH_IPL_CTRL_DEFAULT (DOCH_IPL_WRITE_DISABLE | DOCH_IPL_ALL_CS_ENABLED)
#endif /*DOCH_IPL_CTRL_DEFAULT*/
#ifndef DOCH_WARM_BOOT_CTRL_DEFAULT
#define DOCH_WARM_BOOT_CTRL_DEFAULT (DOCH_WARM_RST_POLARITY_HIGH | DOCH_WARM_RST_BURST_ON)
#endif /*DOCH_WARM_BOOT_CTRL_DEFAULT*/
#ifndef DOCH_POWER_DOWN_DEFAULT
#define DOCH_POWER_DOWN_DEFAULT (DOCH_DPD_PIN_POL_HIGH | DOCH_DPD_PIN_ENABLED | DOCH_DPD_WAKEUP_HOST_CE)
#endif /*DOCH_POWER_DOWN_DEFAULT*/
#ifndef DOCH_DMA_CTRL_DEFAULT
#define DOCH_DMA_CTRL_DEFAULT (DOCH_DMA_REQ_POL_LOW | DOCH_DMA_REQ_EDGE | ((DOCH_DMA_PULSE_WIDTH)<<4))
#endif /*DOCH_DMA_CTRL_DEFAULT*/
#ifndef DOCH_DMA_NEGATION_CTRL_DEFAULT
#define DOCH_DMA_NEGATION_CTRL_DEFAULT 1
#endif /*DOCH_DMA_NEGATION_CTRL_DEFAULT*/
#ifndef DOCH_SLOCK_DEFAULT
#define DOCH_SLOCK_DEFAULT DOCH_SLOCK_OFF
#endif /*DOCH_SLOCK_DEFAULT*/
#ifndef DOCH_ENDIAN_CTRL_DEFAULT
#ifdef FL_SWAP_BYTES
#define DOCH_ENDIAN_CTRL_DEFAULT (HIB_END_SWAP_ON)
#else /*FL_SWAP_BYTES*/
#define DOCH_ENDIAN_CTRL_DEFAULT (HIB_END_SWAP_OFF)
#endif /*FL_SWAP_BYTES*/
#endif /*DOCH_ENDIAN_CTRL_DEFAULT*/
#ifndef DOCH_OPERATION_MODE_CTRL_DEFAULT
#define DOCH_OPERATION_MODE_CTRL_DEFAULT (HIB_ADDR_SHIFT | HIB_NON_PIPE_ACCESS)
#endif /*DOCH_OPERATION_MODE_CTRL_DEFAULT*/
/*Max number of devices per ATA socket (defined by ATA standard)*/
#ifndef ATA_MAX_NUM_OF_DEVICES /* for mDOC H3 devices only */
#define ATA_MAX_NUM_OF_DEVICES 2 /* should be 1 or 2 */
#endif /* ATA_MAX_NUM_OF_DEVICES */
/*If a wait is needed between identifying Dev0 and Dev1, customize DOCH_WAIT_B4_DEV1_ID*/
#ifndef DOCH_WAIT_B4_DEV1_ID
#define DOCH_WAIT_B4_DEV1_ID
#endif /*DOCH_WAIT_B4_DEV1_ID*/
/* Delay cell configuration*/
/*
0000: No Delay
0001: 1x delay.
0011: 2x delay.
0111: 3x delay.
*/
#ifndef FL_IPL_DELAY_CELL_CONFIG_READ
#define FL_IPL_DELAY_CELL_CONFIG_READ 0
#endif /*FL_IPL_DELAY_CELL_CONFIG_READ*/
#ifndef FL_IPL_DELAY_CELL_CONFIG_WRITE
#define FL_IPL_DELAY_CELL_CONFIG_WRITE 0
#endif /*FL_IPL_DELAY_CELL_CONFIG_READ*/
/*===========================*/
/* Access Layer Customization*/
/* --------------------------*/
/* 2 Sections: */
/* - Run-Time */
/* - Compile Time */
/*===========================*/
#ifdef DOCH_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 /* DOCH_BIG_ENDIAN */
#ifdef DOCH_USE_FUNC /*Run-time*/
/* DOCH Access Layer macros */
/*==========================*/
#ifndef DOCHREAD_ATA_REG
#define DOCHREAD_ATA_REG(base, regNum) C_16_8(pdev->halRoutines.hal_get_ata_reg(base, regNum))
#endif /*DOCHREAD_ATA_REG*/
#ifndef DOCHWRITE_ATA_REG
#define DOCHWRITE_ATA_REG(base, regNum, val) (pdev->halRoutines.hal_set_ata_reg(base, regNum, C_8_16(val)))
#endif /*DOCHWRITE_ATA_REG*/
#ifndef DOCHREAD_CTRL_REG
#define DOCHREAD_CTRL_REG(base, regNum) C_16_16(pdev->halRoutines.hal_get_ctrl_reg(base, regNum))
#endif /*DOCHREAD_CTRL_REG*/
#ifndef DOCHWRITE_CTRL_REG
#define DOCHWRITE_CTRL_REG(base, regNum, val) (pdev->halRoutines.hal_set_ctrl_reg(base, regNum, C_16_16(val)))
#endif /*DOCHWRITE_CTRL_REG*/
#ifndef DOCHBLK_READ
#define DOCHBLK_READ(address, buf, sectors) (pdev->halRoutines.hal_blk_read(address, buf, sectors))
#endif /*DOCHBLK_READ*/
#ifndef DOCHBLK_WRITE
#define DOCHBLK_WRITE(address, buf, sectors) (pdev->halRoutines.hal_blk_write(address, buf, sectors))
#endif /*DOCHBLK_WRITE*/
#ifndef DOCHREAD_BURST
#define DOCHREAD_BURST(base, offset, dest, sectors)
#endif /*DOCHREAD_BURST*/
#ifndef DOCHWRITE_BURST
#define DOCHWRITE_BURST(base, offset, dest, sectors)
#endif /*DOCHWRITE_BURST*/
/* DOCH IO Access macros */
/*=======================*/
#ifndef DOCHREAD_IO_WORD
#define DOCHREAD_IO_WORD(address) (FLREAD_IO_WORD(address))
#endif /*DOCHREAD_IO_WORD*/
#ifndef DOCHWRITE_IO_WORD
#define DOCHWRITE_IO_WORD(val, address) (FLWRITE_IO_WORD(val, address))
#endif /*DOCHWRITE_IO_WORD*/
#ifndef DOCHCPY_TO_IO_16_BITS
#define DOCHCPY_TO_IO_16_BITS(win,buf,sectors) (blk_write_using_data_reg(win, buf, sectors))
#endif /*DOCHCPY_TO_IO_16_BITS*/
#ifndef DOCHCPY_FROM_IO_16_BITS
#define DOCHCPY_FROM_IO_16_BITS(win,buf,sectors) (blk_read_using_data_reg(win, buf, sectors))
#endif /*DOCHCPY_FROM_IO_16_BITS*/
#else /*DOCH_USE_FUNC*/ /*Compile-Time*/
#ifdef FL_MIGRATION_VERSION
/* DOCH Access Layer macros */
/*==========================*/
#ifndef DOCHREAD_ATA_REG
#define DOCHREAD_ATA_REG(base, regNum) C_16_8(flDirectRead16BitReg((DOCHFlash),(FLWord)(((regNum)<<1) + DOCH_CONT_REG_AREA)))
#endif /*DOCHREAD_ATA_REG*/
#ifndef DOCHWRITE_ATA_REG
#define DOCHWRITE_ATA_REG(base, regNum, val) flDirectWrite16BitReg((DOCHFlash),(FLWord)(((regNum)<<1) + DOCH_CONT_REG_AREA),(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) (flReadEvenNumberOfBytes((DOCHFlash),(FLWord)DOCH_DATA_PORT_AREA,(buf),((FLWord)(512*sectors))),0)
#endif /*DOCHBLK_READ*/
#ifndef DOCHBLK_WRITE
#define DOCHBLK_WRITE(address, buf, sectors) (flWriteEvenNumberOfBytes((DOCHFlash),(FLWord)DOCH_DATA_PORT_AREA,(buf),((FLWord)(512*sectors))),0)
#endif /*DOCHBLK_WRITE*/
#ifndef DOCHREAD_BURST
#define DOCHREAD_BURST(base, offset, dest, sectors) DOCHBLK_READ( (base)+(offset), dest, sectors)
#endif /*DOCHREAD_BURST*/
#ifndef DOCHWRITE_BURST
#define DOCHWRITE_BURST(base, offset, dest, sectors) DOCHBLK_READ( (base)+(offset), dest, sectors)
#endif /*DOCHWRITE_BURST*/
/* DOCH IO Access macros */
/*=======================*/
/* Not defined as we use legacy code */
#else /* FL_MIGRATION_VERSION */
#ifndef DOCHREAD_ATA_REG
#define DOCHREAD_ATA_REG(base, regNum) \
(FLByte)(DOCHREAD_IO_WORD((((volatile FLWord FAR0 *)base)+regNum + (DOCH_CONT_REG_AREA/2))));
#endif /*DOCHREAD_ATA_REG*/
#ifndef DOCHWRITE_ATA_REG
#define DOCHWRITE_ATA_REG(base, regNum, val) \
DOCHWRITE_IO_WORD((FLWord)val,(((volatile FLWord FAR0 *)base)+regNum + (DOCH_CONT_REG_AREA/2)));
#endif /*DOCHWRITE_ATA_REG*/
#ifndef DOCHREAD_CTRL_REG
#define DOCHREAD_CTRL_REG(base, regNum) \
DOCHREAD_IO_WORD(base + regNum);
#endif /*DOCHREAD_CTRL_REG*/
#ifndef DOCHWRITE_CTRL_REG
#define DOCHWRITE_CTRL_REG(base, regNum, val) \
DOCHWRITE_IO_WORD((FLWord)val, (base + regNum));
#endif /*DOCHWRITE_CTRL_REG*/
#ifndef DOCHBLK_READ
#define DOCHBLK_READ(address, buf, sectors) \
DOCHCPY_FROM_IO_16_BITS(address, buf, sectors)
#endif /*DOCHBLK_READ*/
#ifndef DOCHBLK_WRITE
#define DOCHBLK_WRITE(address, buf, sectors) \
DOCHCPY_TO_IO_16_BITS(address, buf, sectors)
#endif /*DOCHBLK_WRITE*/
/* DOCH IO Access macros */
/*=======================*/
#ifndef DOCHREAD_IO_WORD
#define DOCHREAD_IO_WORD(address) (FLREAD_IO_WORD(address))
#endif /*DOCHREAD_IO_WORD*/
#ifndef DOCHWRITE_IO_WORD
#define DOCHWRITE_IO_WORD(val, address) (FLWRITE_IO_WORD(val, address))
#endif /*DOCHWRITE_IO_WORD*/
#ifndef DOCHCPY_TO_IO_16_BITS
#define DOCHCPY_TO_IO_16_BITS(win,buf,sectors) TFFSCPY_TO_IO_16_BITS(win,buf,(sectors<<DOCH_SECTOR_SIZE_BITS))
#endif /*DOCHCPY_TO_IO_16_BITS*/
#ifndef DOCHCPY_FROM_IO_16_BITS
#define DOCHCPY_FROM_IO_16_BITS(win,buf,sectors) TFFSCPY_FROM_IO_16_BITS(win,buf,(sectors<<DOCH_SECTOR_SIZE_BITS))
#endif /*DOCHCPY_FROM_IO_16_BITS*/
#endif /* FL_MIGRATION_VERSION */
#endif /*DOCH_USE_FUNC*/
#ifndef DOCH_SET_WINDOW_OFFSET
#define DOCH_SET_WINDOW_OFFSET(using8KB, baseAddr)
#endif /*DOCH_SET_WINDOW_OFFSET*/
#endif /* _FL_CHK_DEFS_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -