712 lines
		
	
	
		
			33 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			712 lines
		
	
	
		
			33 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|     Header file for SDIO module driver
 | |
| 
 | |
|     @file       SDIO.h
 | |
|     @ingroup    mIDrvStg_SDIO
 | |
| 
 | |
|     @brief      SDIO Card driver header
 | |
| 
 | |
|     Copyright   Novatek Microelectronics Corp. 2009.  All rights reserved.
 | |
| */
 | |
| 
 | |
| #ifndef _SDIO_H
 | |
| #define _SDIO_H
 | |
| 
 | |
| #include "strg_def.h"
 | |
| #include "sdmmc_desc.h"
 | |
| 
 | |
| /**
 | |
|     @addtogroup mIDrvStg_SDIO
 | |
| */
 | |
| //@{
 | |
| 
 | |
| /*
 | |
|     @name SDIO card detect function prototype
 | |
| 
 | |
|     SDIO card insert/protect detection call back prototype
 | |
| 
 | |
|     @note for sdio_setDetectCardExistHdl(), sdio2_setDetectCardExistHdl(), sdio_setDetectCardProtectHdl(), sdio2_setDetectCardProtectHdl()
 | |
| */
 | |
| //@{
 | |
| typedef BOOL (*SDIO_CARD_DETECT_CB)(void);  ///< card insert/detect function prototype
 | |
| //@}
 | |
| 
 | |
| /*
 | |
|     @name SDIO IO pad control function prototype
 | |
| 
 | |
|     SDIO IO pad control call back prototype
 | |
| 
 | |
|     @note for sdio_setCardIOHdl(), sdio2_setCardIOHdl()
 | |
| */
 | |
| //@{
 | |
| typedef void (*SDIO_SET_CARDIO_CB)(void);   ///< SDIO IO pad call back function prototype
 | |
| //@}
 | |
| 
 | |
| /*
 | |
|     @name SDIO power control call back prototype
 | |
| 
 | |
|     @param[in] BOOL power on/off control
 | |
|                     - @b TRUE: power on
 | |
|                     - @b FALSE: power off
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| //@{
 | |
| typedef void (*SDIO_CARD_PWR_CTRL_CB)(BOOL);
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name SDIO general call back prototype
 | |
| 
 | |
|     @param[in] BOOL
 | |
| 
 | |
|     @return BOOL
 | |
| */
 | |
| typedef BOOL (*SDIO_CALLBACK_HDL)(BOOL);
 | |
| 
 | |
| //------------------------------------------------------------
 | |
| // Definitions for exported interface
 | |
| //------------------------------------------------------------
 | |
| 
 | |
| /**
 | |
|     @name SDIO source clock definition
 | |
| 
 | |
|     @note for sdioHost_setSrcClock()/sdioHost_getSrcClock()
 | |
| */
 | |
| //@{
 | |
| #define SDIO_SRC_CLK_20MHZ      0   ///< No use
 | |
| #define SDIO_SRC_CLK_24MHZ      1   ///< No use
 | |
| #define SDIO_SRC_CLK_40MHZ      2   ///< No use
 | |
| #define SDIO_SRC_CLK_48MHZ      3   ///< No use
 | |
| #define SDIO_SRC_CLK_60MHZ      4   ///< No use
 | |
| #define SDIO_SRC_CLK_80MHZ      5   ///< No use
 | |
| #define SDIO_SRC_CLK_SSPLLMHZ   6   ///< No use
 | |
| #define SDIO_SRC_CLK_SSPLL2MHZ  7   ///< No use
 | |
| #define SDIO_SRC_CLK_SSPLL3MHZ  8   ///< No use
 | |
| #define SDIO_SRC_CLK_SSPLL4MHZ  9   ///< No use
 | |
| #define SDIO_SRC_CLK_SSPLL5MHZ 10   ///< No use
 | |
| #define SDIO_SRC_CLK_96MHZ     11   ///< No use
 | |
| #define SDIO_SRC_CLK_PLL4      12   ///< Source clock PLL4
 | |
| #define SDIO_SRC_CLK_PLL2      13   ///< Source clock PLL2
 | |
| #define SDIO_SRC_CLK_480MHZ    14   ///< Source clock 480MHz
 | |
| #define SDIO_SRC_CLK_192MHZ    15   ///< Source clock 192MHz
 | |
| #define SDIO_SRC_CLK_320MHZ    16   ///< Source clock 320MHz
 | |
| #define SDIO_SRC_CLK_PLL9      17   ///< Source clock PLL9
 | |
| #define SDIO_SRC_CLK_END       SDIO_SRC_CLK_PLL9
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name SDIO IO RW flag definition.
 | |
| 
 | |
|     SDIO IO Read Write flag.
 | |
| 
 | |
|     SDIO IO Read Write flag.
 | |
| 
 | |
|     @note for SDIO_CMD52_STRUCT, SDIO_CMD53_STRUCT
 | |
| 
 | |
| */
 | |
| //@{
 | |
| #define SDIO_IO_R                           0x0         ///< IO Read flag
 | |
| #define SDIO_IO_W                           0x1         ///< IO Write flag
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name SDIO IO RAW (Read After Write) definition.
 | |
| 
 | |
|     @note for SDIO_CMD52_STRUCT
 | |
| 
 | |
| */
 | |
| //@{
 | |
| #define SDIO_IO_DIS_RAW                     0x0         ///< Disable IO RAW function
 | |
| #define SDIO_IO_EN_RAW                      0x1         ///< Enable IO RAW function
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name SDIO IO byte/block access definition.
 | |
| 
 | |
|     @note for SDIO_CMD53_STRUCT
 | |
| 
 | |
| */
 | |
| //@{
 | |
| #define SDIO_IO_BYTEMODE                    0x0         ///< IO byte access mode
 | |
| #define SDIO_IO_BLOCKMODE                   0x1         ///< IO block access mode
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name SDIO IO OP code definition.
 | |
| 
 | |
|     @note for SDIO_CMD53_STRUCT
 | |
| 
 | |
| */
 | |
| //@{
 | |
| #define SDIO_IO_OPCODE_FIX_ADDR             0           ///< OP code: multi byte R/W to fixed address
 | |
| #define SDIO_IO_OPCODE_INCREMENT_ADDR       1           ///< OP code: multi byte R/W to incrementing address
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name SDIO IO function select definition.
 | |
| 
 | |
|     @note for SDIO_CMD52_STRUCT, SDIO_CMD53_STRUCT
 | |
| 
 | |
| */
 | |
| //@{
 | |
| #define SDIO_IO_FUNNUM0                     0           ///< Function 0 on IO device
 | |
| #define SDIO_IO_FUNNUM1                     1           ///< Function 1 on IO device
 | |
| #define SDIO_IO_FUNNUM2                     2           ///< Function 2 on IO device
 | |
| #define SDIO_IO_FUNNUM3                     3           ///< Function 3 on IO device
 | |
| #define SDIO_IO_FUNNUM4                     4           ///< Function 4 on IO device
 | |
| #define SDIO_IO_FUNNUM5                     5           ///< Function 5 on IO device
 | |
| #define SDIO_IO_FUNNUM6                     6           ///< Function 6 on IO device
 | |
| #define SDIO_IO_FUNNUM7                     7           ///< Function 7 on IO device
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     @name SDIO input delay config
 | |
| 
 | |
|     @note for SDIO_CONFIG_ID_XXX_INPUT_DELAY in SDIO_CONFIG_ID
 | |
| */
 | |
| //@{
 | |
| #define SDIO_IN_DLY_CLK_SD                  (1<<9)
 | |
| #define SDIO_IN_DLY_ACT                     (1<<12)
 | |
| #define SDIO_IN_DLY_POLARITY                (1<<16)
 | |
| #define SDIO_IN_DLY_SEL(val)                ((val)<<24)
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|     SDIO card type
 | |
| 
 | |
|     @note For SDIO_MISC_INFORMATION
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_CARD_UNKNOWN,          ///< unknown card type
 | |
| 	SDIO_CARD_SD,               ///< SD card
 | |
| 	SDIO_CARD_SDHC,             ///< SDHC card
 | |
| 	SDIO_CARD_SDXC,             ///< SDXC card
 | |
| 	SDIO_CARD_MMC,              ///< MMC card
 | |
| 	SDIO_CARD_SDIO,             ///< SDIO card
 | |
| 	ENUM_DUMMY4WORD(SDIO_CARD_TYPE)
 | |
| } SDIO_CARD_TYPE;
 | |
| 
 | |
| /**
 | |
|     SDIO call back list
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_CALLBACK_CARD_DETECT,      ///< card detect callback
 | |
| 	SDIO_CALLBACK_WRITE_PROTECT,    ///< write protect detect callback
 | |
| 	SDIO_CALLBACK_IO_PAD,           ///< IO pad control callback
 | |
| 	SDIO_CALLBACK_POWER_CONTROL,    ///< power control callback
 | |
| 	SDIO_CALLBACK_IO_INT,           ///< Card IO interrupt callback
 | |
| 	ENUM_DUMMY4WORD(SDIO_CALLBACK)
 | |
| } SDIO_CALLBACK;
 | |
| 
 | |
| /**
 | |
|     SDIO configuration identifier
 | |
| 
 | |
|     @note For sdio_setConfig() and sdio_setInfo()
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_CONFIG_ID_BUS_SPEED_MODE,          ///< Select Bus Speed Mode (DS, HS, SDR12, SDR25, SDR50, DDR50)
 | |
| 	///< Context can be ORed of:
 | |
| 	///< - @b SDIO_BUS_SPEED_MODE_DS (Defalut value)
 | |
| 	///< - @b SDIO_BUS_SPEED_MODE_HS (Defalut value)
 | |
| 	///< - @b SDIO_BUS_SPEED_MODE_SDR12
 | |
| 	///< - @b SDIO_BUS_SPEED_MODE_SDR25
 | |
| 	///< - @b SDIO_BUS_SPEED_MODE_SDR50
 | |
| 	///< - @b SDIO_BUS_SPEED_MODE_DDR50
 | |
| 	SDIO_CONFIG_ID_DRIVING_SINK_EN,         ///< Enable adjust driving/sink
 | |
| 	///< - @b TRUE: enable SD driver to adjust driving/sink of clock pin according to SDIO_CONFIG_ID_BUS_SPEED_MODE
 | |
| 	///< - @b FALSE: SD driver will NEVER adjust driving/sink of clock pin (Default value)
 | |
| 	SDIO_CONFIG_ID_BUS_WIDTH,               ///< Set max bus width of SDIO host
 | |
| 	///< Context can be any of:
 | |
| 	///< - @b SD_HOST_BUS_1_BIT
 | |
| 	///< - @b SD_HOST_BUS_4_BITS (Default value)
 | |
| 	///< - @b SD_HOST_BUS_8_BITS
 | |
| 	SDIO_CONFIG_ID_FORMAD_OEMID,            ///< OEM ID to format SD card (valid context: ASCII String with length <= 8)
 | |
| 	SDIO_CONFIG_ID_FORMAD_VOL_LABLE,        ///< Volume lable to format SD card (valid context: ASCII String with length <= 11)
 | |
| 	SDIO_CONFIG_ID_FORMAD_VOL_ID,           ///< Volume ID to format SD card (valid context: 0x00000000 ~ 0xFFFFFFFF)
 | |
| 	SDIO_CONFIG_ID_FORMAD_RAND_VOL_ID_EN,   ///< Enable format SD card with randomized Volume ID
 | |
| 	///< Context can be any of:
 | |
| 	///< - @b TRUE: enable format SD card with randomized volume ID
 | |
| 	///< - @b FALSE: use volume ID specified by SDIO_CONFIG_ID_FORMAD_VOL_ID
 | |
| 	SDIO_CONFIG_ID_IMPROVE_COMP_EN,         ///< Enable improved compatibility mode
 | |
| 	///< Context can be any of:
 | |
| 	///< - @b TRUE: enable improved compatibility mode (i.e. no high speed for SD card <= 512MB)
 | |
| 	///< - @b FALSE: disable improved compatibility mode
 | |
| 	SDIO_CONFIG_ID_IO_EN,                   ///< Enable SDIO IO function
 | |
| 	///< Context can be any of:
 | |
| 	///< - @b TRUE: enable support of SDIO IO device
 | |
| 	///< - @b FALSE: disable support of SDIO IO device
 | |
| 	SDIO_CONFIG_ID_MMC_EN,                  ///< Enable support of MMC card
 | |
| 	///< Context can be any of:
 | |
| 	///< - @b TRUE: enable support of MMC card
 | |
| 	///< - @b FALSE: disable support of MMC card
 | |
| 	SDIO_CONFIG_ID_CLK_GATING,              ///< Set clock output high or low when auto clock gating
 | |
| 	///< - @b SDIO_CLK_AUTOGATING_LOW (Defalut value)
 | |
| 	///< - @b SDIO_CLK_AUTOGATING_HIGH
 | |
| 	SDIO_CONFIG_ID_SRCLK,                   ///< Set source clock for SDIO host
 | |
| 	///< Context can be any of:
 | |
| 	///< - @b SDIO_SRC_CLK_192MHZ (Default value)
 | |
| 	///< - @b SDIO_SRC_CLK_480MHZ
 | |
| 	///< - @b SDIO_SRC_CLK_PLL2
 | |
| 	///< - @b SDIO_SRC_CLK_PLL4
 | |
| 	SDIO_CONFIG_ID_DS_MAX_CLK,              ///< Set maximum clock frequency in Default Speed Mode
 | |
| 	///< Valid value: 1~25000000, unit: Hz
 | |
| 	///< Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_DS
 | |
| 	SDIO_CONFIG_ID_DS_DRIVING,              ///< Set driving/sink of clock pin when card is operated in Default Speed Mode
 | |
| 	///< valid context: (5, 10, 15, 20) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_DS_INPUT_DELAY,          ///< Set input delay parameter in Default Speed Mode
 | |
| 	SDIO_CONFIG_ID_DS_OUTPUT_DELAY,         ///< Set output delay parameter in Default Speed Mode
 | |
| 	SDIO_CONFIG_ID_HS_MAX_CLK,              ///< Set maximum clock frequency in High Speed Mode
 | |
| 	///< Valid value: 1~50000000, unit: Hz
 | |
| 	///< Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_HS
 | |
| 	SDIO_CONFIG_ID_HS_DRIVING,              ///< Set driving/sink of clock pin when card is operated in High Speed Mode
 | |
| 	///< valid context: (5, 10, 15, 20) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set set to TRUE)
 | |
| 	SDIO_CONFIG_ID_HS_INPUT_DELAY,          ///< Set input delay parameter in High Speed Mode
 | |
| 	SDIO_CONFIG_ID_HS_OUTPUT_DELAY,         ///< Set output delay parameter in High Speed Mode
 | |
| 	SDIO_CONFIG_ID_SDR12_MAX_CLK,           ///< Set maximum clock frequency in UHS-I SDR12 Mode
 | |
| 	///< (Valid value: 1~25000000, unit: Hz)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_SDR12)
 | |
| 	SDIO_CONFIG_ID_SDR12_DRIVING,           ///< Set driving/sink when card is operated in UHS-I SDR12 Mode
 | |
| 	///< (valid context: (5, 10, 15, 20) * 10, unit: mA. Default 10 mA)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR12_INPUT_DELAY,       ///< Set input delay parameter in UHS-I SDR12 Mode
 | |
| 	SDIO_CONFIG_ID_SDR12_OUTPUT_DELAY,      ///< Set output delay parameter in UHS-I SDR12 Mode
 | |
| 	SDIO_CONFIG_ID_SDR25_MAX_CLK,           ///< Set maximum clock frequency in UHS-I SDR25 Mode
 | |
| 	///< (Valid value: 1~50000000, unit: Hz)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_SDR25)
 | |
| 	SDIO_CONFIG_ID_SDR25_DRIVING,           ///< Set driving/sink when card is operated in UHS-I SDR25 Mode
 | |
| 	///< (valid context: (5, 10, 15, 20) * 10, unit: mA. Default 10 mA)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR25_INPUT_DELAY,       ///< Set input delay parameter in UHS-I SDR25 Mode
 | |
| 	SDIO_CONFIG_ID_SDR25_OUTPUT_DELAY,      ///< Set output delay parameter in UHS-I SDR25 Mode
 | |
| 	SDIO_CONFIG_ID_SDR50_MAX_CLK,           ///< Set maximum clock frequency in UHS-I SDR50 Mode
 | |
| 	///< (Valid value: 1~100000000, unit: Hz)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_SDR50)
 | |
| 	SDIO_CONFIG_ID_SDR50_DRIVING,           ///< Set driving/sink when card is operated in UHS-I SDR50 Mode
 | |
| 	///< (valid context: (5, 10, 15, 20) * 10, unit: mA. Default 10 mA)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR50_INPUT_DELAY,       ///< Set input delay parameter in UHS-I SDR50 Mode
 | |
| 	SDIO_CONFIG_ID_SDR50_OUTPUT_DELAY,      ///< Set output delay parameter in UHS-I SDR50 Mode
 | |
| 	SDIO_CONFIG_ID_DDR50_MAX_CLK,           ///< Set maximum clock frequency in UHS-I DDR50 Mode
 | |
| 	///< (Valid value: 1~50000000, unit: Hz)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_DDR50)
 | |
| 	SDIO_CONFIG_ID_DDR50_DRIVING,           ///< Set driving/sink when card is operated in UHS-I DDR50 Mode
 | |
| 	///< (valid context: (5, 10, 15, 20) * 10, unit: mA. Default 10 mA)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set set to TRUE)
 | |
| 	SDIO_CONFIG_ID_DDR50_INPUT_DELAY,       ///< Set input delay parameter in UHS-I DDR50 Mode
 | |
| 	SDIO_CONFIG_ID_DDR50_OUTPUT_DELAY,      ///< Set output delay parameter in UHS-I DDR50 Mode
 | |
| 	SDIO_CONFIG_ID_SDR104_MAX_CLK,           ///< Set maximum clock frequency in UHS-I SDR104 Mode
 | |
| 	///< (Valid value: 1~208000000, unit: Hz)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_SDR104)
 | |
| 	SDIO_CONFIG_ID_SDR104_DRIVING,           ///< Set driving/sink when card is operated in UHS-I SDR104 Mode
 | |
| 	///< (valid context: (5, 10, 15, 20) * 10, unit: mA. Default 10 mA)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR104_INPUT_DELAY,      ///< Set input delay parameter in UHS-I SDR104 Mode
 | |
| 	SDIO_CONFIG_ID_SDR104_OUTPUT_DELAY,     ///< Set output delay parameter in UHS-I SDR104 Mode
 | |
| 
 | |
| 	SDIO_CONFIG_ID_HS200_MAX_CLK,           ///< Set maximum clock frequency in HS200
 | |
| 	///< (Valid value: 1~96000000, unit: Hz)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_HS200)
 | |
| 	SDIO_CONFIG_ID_HS200_DRIVING,           ///< Set driving/sink when card is operated in HS200
 | |
| 	///< (valid context: (10, 16) * 10, unit: mA. Default 10 mA)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set set to TRUE)
 | |
| 	SDIO_CONFIG_ID_HS200_INPUT_DELAY,      ///< Set input delay parameter in HS200
 | |
| 	SDIO_CONFIG_ID_HS200_OUTPUT_DELAY,     ///< Set output delay parameter in HS200
 | |
| 	SDIO_CONFIG_ID_HS400_MAX_CLK,           ///< Set maximum clock frequency in HS400 Mode
 | |
| 	///< (Valid value: 1~208000000, unit: Hz)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_BUS_SPEED_MODE has SDIO_BUS_SPEED_MODE_HS400)
 | |
| 	SDIO_CONFIG_ID_HS400_DRIVING,           ///< Set driving/sink when card is operated in HS400 Mode
 | |
| 	///< (valid context: (5, 10, 15, 20) * 10, unit: mA. Default 10 mA)
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN is set set to TRUE)
 | |
| 	SDIO_CONFIG_ID_HS400_INPUT_DELAY,       ///< Set input delay parameter in HS400 Mode
 | |
| 	SDIO_CONFIG_ID_HS400_OUTPUT_DELAY,      ///< Set output delay parameter in HS400 Mode
 | |
| 	SDIO_CONFIG_ID_AUTO_CALIBRATION,        ///< Enable/Disable input delay auto calibration (valid with UHS-I SDR card)
 | |
| 
 | |
| 	SDIO_CONFIG_ID_DIS_CMD17_RANGE_CHECK,   ///< Disable Out_Of_Range Check after CMD17 read last block on card
 | |
| 	///< - @b TRUE: disable check. Can work with some non-standard card
 | |
| 	///< - @b FALSE: enable check. Follow SD spec. (default value)
 | |
| 	SDIO_CONFIG_ID_UHSI_EN,                 ///< Enable/Disable UHSI.
 | |
| 
 | |
| 	SDIO_CONFIG_ID_AUTOPINMUX,              ///< Auto pinmux to gpio when close
 | |
| 	///< - @b TRUE: enable set pinmux to gpio when close
 | |
| 	///< - @b FALSE: not set pinmux to gpio when close
 | |
| 
 | |
| 	SDIO_CONFIG_EMMC_BOOT_ACK,              ///< Set EMMC BOOT ACK
 | |
| 	SDIO_CONFIG_EMMC_BOOT_ALT,              ///< Set EMMC BOOT Alternative
 | |
| 	SDIO_CONFIG_EMMC_BOOT_CLK,              ///< Set EMMC BOOT CLK selection
 | |
| 	SDIO_CONFIG_EMMC_BOOT_BUS_WIDTH,        ///< Set EMMC BOOT BUS WIDTH
 | |
| 	SDIO_CONFIG_EMMC_BOOT_SPEED_MODE,       ///< Set EMMC BOOT SPEED MODE
 | |
| 
 | |
| 	SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN, ///< Enable adjust cmd+data driving/sink
 | |
| 	///< - @b TRUE: enable SD driver to adjust driving/sink of cmd+data pin according to SDIO_CONFIG_ID_BUS_SPEED_MODE
 | |
| 	///< - @b FALSE: SD driver will keep the driving/sink setting of cmd+data pin (for backword compatible)
 | |
| 	SDIO_CONFIG_ID_DS_CMD_DRIVING,          ///< Set driving/sink of cmd pin when card is operated in Default Speed Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_DS_DATA_DRIVING,         ///< Set driving/sink of data pin when card is operated in Default Speed Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_HS_CMD_DRIVING,          ///< Set driving/sink of cmd pin when card is operated in High Speed Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_HS_DATA_DRIVING,         ///< Set driving/sink of data pin when card is operated in High Speed Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR12_CMD_DRIVING,       ///< Set driving/sink of cmd pin when card is operated in UHS-I SDR12 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR12_DATA_DRIVING,      ///< Set driving/sink of data pin when card is operated in UHS-I SDR12 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR25_CMD_DRIVING,       ///< Set driving/sink of cmd pin when card is operated in UHS-I SDR25 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR25_DATA_DRIVING,      ///< Set driving/sink of data pin when card is operated in UHS-I SDR25 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR50_CMD_DRIVING,       ///< Set driving/sink of cmd pin when card is operated in UHS-I SDR50 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR50_DATA_DRIVING,      ///< Set driving/sink of data pin when card is operated in UHS-I SDR50 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_DDR50_CMD_DRIVING,       ///< Set driving/sink of cmd pin when card is operated in UHS-I DDR50 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_DDR50_DATA_DRIVING,      ///< Set driving/sink of data pin when card is operated in UHS-I DDR50 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_CMD23_EN,                ///< Enable CMD23 (set block count) support
 | |
| 	///< - @b TRUE: support CMD23 if card support this command (default value)
 | |
| 	///< - @b FALSE: don't issue CMD23 even card support this command
 | |
| 	SDIO_CONFIG_ID_SDR104_CMD_DRIVING,       ///< Set driving/sink of cmd pin when card is operated in UHS-I SDR104 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_SDR104_DATA_DRIVING,      ///< Set driving/sink of data pin when card is operated in UHS-I SDR104 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_HS200_CMD_DRIVING,       ///< Set driving/sink of cmd pin when card is operated in HS200
 | |
| 	///< valid context: (4, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_HS200_DATA_DRIVING,      ///< Set driving/sink of data pin when card is operated in HS200
 | |
| 	///< valid context: (4, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 
 | |
| 	SDIO_CONFIG_ID_DIRECT_MODE,             ///< Direct mode has higher priority than DMA/PIO mode
 | |
| 	SDIO_CONFIG_ID_HS400_CMD_DRIVING,       ///< Set driving/sink of cmd pin when card is operated in HS400 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_ID_HS400_DATA_DRIVING,      ///< Set driving/sink of data pin when card is operated in HS400 Mode
 | |
| 	///< valid context: (2.5, 5, 7.5, 10) * 10, unit: mA. Default 10 mA
 | |
| 	///< (Valid when SDIO_CONFIG_ID_DRIVING_SINK_EN & SDIO_CONFIG_ID_DRIVING_SINK_CMDDATA_EN  is set to TRUE)
 | |
| 	SDIO_CONFIG_SDIO_INIT_DEBUG,
 | |
| 	SDIO_CONFIG_SDIO_FLOW_DEBUG,
 | |
| 	SDIO_CONFIG_SDIO_CLOCK_DEBUG,
 | |
| 
 | |
| 	SDIO_SET_INFO_VER = 0x00010001,         ///< START Tag for sdio_setInfo()
 | |
| 	SDIO_INFOR_END_TAG = 0x444E4549,        ///< END Tag for sdio_setInfo() ('I''E''N''D')
 | |
| 	ENUM_DUMMY4WORD(SDIO_CONFIG_ID)
 | |
| } SDIO_CONFIG_ID;
 | |
| 
 | |
| /**
 | |
|     SDIO Bus Speed Mode
 | |
| 
 | |
|     @note For sdio_setConfig(SDIO_CONFIG_ID_BUS_SPEED_MODE, XXX)
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_BUS_SPEED_MODE_DS = 0x01,      ///< Default Speed
 | |
| 	SDIO_BUS_SPEED_MODE_HS = 0x02,      ///< High Seed
 | |
| 	SDIO_BUS_SPEED_MODE_SDR12 = 0x04,   ///< UHS-I SDR12
 | |
| 	SDIO_BUS_SPEED_MODE_SDR25 = 0x08,   ///< UHS-I SDR25
 | |
| 	SDIO_BUS_SPEED_MODE_SDR50 = 0x10,   ///< UHS-I SDR50
 | |
| 	SDIO_BUS_SPEED_MODE_DDR50 = 0x20,   ///< UHS-I DDR50
 | |
| 	SDIO_BUS_SPEED_MODE_SDR104 = 0x40,  ///< UHS-I SDR104
 | |
| 
 | |
| 	SDIO_BUS_SPEED_MODE_HS200 = 0x80,   ///< HS200-SDR
 | |
| 	SDIO_BUS_SPEED_MODE_HS400 = 0x100,  ///< HS400-DDR
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SDIO_BUS_SPEED_MODE)
 | |
| } SDIO_BUS_SPEED_MODE;
 | |
| 
 | |
| /**
 | |
|     EMMC BOOT ACK configuration
 | |
| 
 | |
|     @note For sdio_setConfig(SDIO_CONFIG_EMMC_BOOT_ACK, XXX)
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_EMMC_BOOT_ACK_DIS = 0,         ///< EMMC BOOT ACK DISALBE
 | |
| 	SDIO_EMMC_BOOT_ACK_EN,              ///< EMMC BOOT ACK ENABLE
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SDIO_EMMC_BOOT_ACK)
 | |
| } SDIO_EMMC_BOOT_ACK;
 | |
| 
 | |
| /**
 | |
|     EMMC BOOT BUS WIDTH configuration
 | |
| 
 | |
|     @note For sdio_setConfig(SDIO_CONFIG_EMMC_BOOT_BUS_WIDTH, XXX)
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_EMMC_BOOT_BUS_WIDTH_1 = 0,    ///< EMMC BOOT BUS WIDTH 1 bit
 | |
| 	SDIO_EMMC_BOOT_BUS_WIDTH_4,        ///< EMMC BOOT BUS WIDTH 4 bits
 | |
| 	SDIO_EMMC_BOOT_BUS_WIDTH_8,        ///< EMMC BOOT BUS WIDTH 8 bits
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SDIO_EMMC_BOOT_BUS_WIDTH)
 | |
| } SDIO_EMMC_BOOT_BUS_WIDTH;
 | |
| 
 | |
| /**
 | |
|     EMMC BOOT speed mode configuration
 | |
| 
 | |
|     @note For sdio_setConfig(SDIO_CONFIG_EMMC_BOOT_SPEED_MODE, XXX)
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_EMMC_BOOT_SPEED_MODE_SINGLE_BACK = 0, ///< EMMC BOOT MODE: single backward
 | |
| 	SDIO_EMMC_BOOT_SPEED_MODE_SINGLE_HIGH,     ///< EMMC BOOT MODE: single high speed
 | |
| 	SDIO_EMMC_BOOT_SPEED_MODE_DUAL,            ///< EMMC BOOT MODE: dual
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SDIO_EMMC_BOOT_MODE)
 | |
| } SDIO_EMMC_BOOT_SPEED_MODE;
 | |
| 
 | |
| typedef enum {
 | |
| 	SDIO_EMMC_BOOT_CLASS6_WP = 0,
 | |
| 	SDIO_EMMC_BOOT_CLASS6_RESERVED = 2,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SDIO_EMMC_BOOT_CLASS6)
 | |
| } SDIO_EMMC_BOOT_CLASS6;
 | |
| 
 | |
| typedef enum {
 | |
| 	SDIO_EMMC_USER_WP_PWR_WP_EN = 0,
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SDIO_EMMC_USER_WP)
 | |
| } SDIO_EMMC_USER_WP;
 | |
| 
 | |
| /**
 | |
|     EMMC BOOT cmd low or alternativeconfiguration
 | |
| 
 | |
|     @note For sdio_setConfig(SDIO_CONFIG_EMMC_BOOT_ALT, XXX)
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_EMMC_BOOT_CMDLOW = 0,                ///< EMMC BOOT CMD LOW
 | |
| 	SDIO_EMMC_BOOT_ALT,                       ///< EMMC BOOT ALTERNATIVE
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SDIO_EMMC_BOOT_ALT_SEL)
 | |
| } SDIO_EMMC_BOOT_ALT_SEL;
 | |
| 
 | |
| /**
 | |
|     EMMC BOOT speed mode configuration
 | |
| 
 | |
|     @note For sdio_setConfig(SDIO_CONFIG_EMMC_BOOT_CLK, XXX)
 | |
| */
 | |
| typedef enum {
 | |
| 	SDIO_EMMC_BOOT_CLKALWAYS = 0,            ///< EMMC BOOT CLK always output
 | |
| 	SDIO_EMMC_BOOT_CLKPAUSE,                 ///< EMMC BOOT CLK pause when dma transfer end
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(SDIO_EMMC_BOOT_CLK_SEL)
 | |
| } SDIO_EMMC_BOOT_CLK_SEL;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     SDIO IO device CMD52 request structure.
 | |
| 
 | |
|     Structure definition for IO device CMD52 operation.
 | |
| 
 | |
|     For more detail descriptions, please refer to SDIO spec.
 | |
| */
 | |
| typedef struct {
 | |
| 	UINT8   *pData;                         ///< pointer to read/write buffer address
 | |
| 	UINT32  Reg_Addr;                       ///< register address in SDIO IO device
 | |
| 	UINT8   RAW;                            ///< Read After Write flag
 | |
| 	///< - @b SDIO_IO_DIS_RAW: disable RAW function
 | |
| 	///< - @b SDIO_IO_EN_RAW: enable RAW function
 | |
| 	UINT8   Function_Num;                   ///< function number in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM0: function 0 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM1: function 1 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM2: function 2 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM3: function 3 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM4: function 4 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM5: function 5 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM6: function 6 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM7: function 7 in SDIO IO device
 | |
| 	UINT8   RW_flag;                        ///< R/W flag
 | |
| 	///< - @b SDIO_IO_R: IO read
 | |
| 	///< - @b SDIO_IO_W: IO write
 | |
| 	UINT16  ByteCount;                      ///< Transfer byte count
 | |
| 	UINT16  Stuff;                          ///< Write Data/Stuff bits
 | |
| } SDIO_CMD52_STRUCT, *PSDIO_CMD52_STRUCT;
 | |
| 
 | |
| /**
 | |
|     SDIO IO device CMD53 request structure.
 | |
| 
 | |
|     Structure definition for IO device CMD53 operation.
 | |
| 
 | |
|     For more detail descriptions, please refer to SDIO spec.
 | |
| */
 | |
| typedef struct {
 | |
| 	UINT8   *pData;                         ///< pointer to read/write buffer address
 | |
| 	UINT32  Reg_Addr;                       ///< register address in SDIO IO device
 | |
| 	UINT8   OpCode;                         ///< IO OP code:
 | |
| 	///< - @b SDIO_IO_OPCODE_FIX_ADDR: R/W to fixed address
 | |
| 	///< - @b SDIO_IO_OPCODE_INCREMENT_ADDR: R/W to incrementing address
 | |
| 	UINT8   Block;                          ///< Block/Byte IO mode
 | |
| 	///< - @b SDIO_IO_BYTEMODE: byte access mode
 | |
| 	///< - @b SDIO_IO_BLOCKMODE: block access mode
 | |
| 	UINT8   Function_Num;                   ///< function number in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM0: function 0 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM1: function 1 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM2: function 2 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM3: function 3 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM4: function 4 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM5: function 5 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM6: function 6 in SDIO IO device
 | |
| 	///< - @b SDIO_IO_FUNNUM7: function 7 in SDIO IO device
 | |
| 	UINT8   RW_flag;                        ///< R/W flag
 | |
| 	///< - @b SDIO_IO_R: IO read
 | |
| 	///< - @b SDIO_IO_W: IO write
 | |
| 	UINT16  ByteCount;                      ///< Transfer byte count
 | |
| 	UINT8   Stuff;                          ///< Write Data/Stuff bits
 | |
| } SDIO_CMD53_STRUCT, *PSDIO_CMD53_STRUCT;
 | |
| 
 | |
| /**
 | |
|     SD card information structure
 | |
| 
 | |
|     @note for sdio_getMiscInfo(), sdio2_getMiscInfo(), sdio3_getMiscInfo().
 | |
| */
 | |
| typedef struct {
 | |
| 	SDIO_CARD_TYPE  cardType;               ///< card type
 | |
| 	UINT16          uiVersion;              ///< SD/MMC spec version
 | |
| 	UINT32          uiWriteRate;            ///< Write performance. unit: MB/s
 | |
| 	SD_CID_STRUCT   sdCID;                  ///< SD CID (valid when cardType = SDIO_CARD_SD or SDIO_CARD_SDHC or SDIO_CARD_SDXC)
 | |
| 	MMC_CID_STRUCT  mmcCID;                 ///< MMC CID (valid when cardType = SDIO_CARD_MMC)
 | |
| } SDIO_MISC_INFORMATION, *PSDIO_MISC_INFORMATION;
 | |
| 
 | |
| //------------------------------------------------------------
 | |
| // The general api for the SDMMC device driver
 | |
| //------------------------------------------------------------
 | |
| 
 | |
| /*
 | |
|     Public OS level functions
 | |
| */
 | |
| /*
 | |
| // Functions exported from SDIO
 | |
| extern void                 sdio_init(void);
 | |
| extern ER                   sdio_open(void);
 | |
| extern ER                   sdio_close(void);
 | |
| extern BOOL                 sdio_isOpened(void);
 | |
| extern ER                   sdio_lock(void);
 | |
| extern ER                   sdio_unlock(void);
 | |
| 
 | |
| // Functions exported from SDIO2
 | |
| extern void                 sdio2_init(void);
 | |
| extern ER                   sdio2_open(void);
 | |
| extern ER                   sdio2_close(void);
 | |
| extern BOOL                 sdio2_isOpened(void);
 | |
| extern ER                   sdio2_lock(void);
 | |
| extern ER                   sdio2_unlock(void);
 | |
| */
 | |
| 
 | |
| /*
 | |
|     Public driver specific operating functions
 | |
| */
 | |
| 
 | |
| //#NT#2010/06/14#HH Chuang -begin
 | |
| //#NT#merge single call back install API
 | |
| /**
 | |
|     @name Backward compatible APIs
 | |
| 
 | |
|     For old version SDIO driver
 | |
| */
 | |
| //@{
 | |
| #define sdio_setDetectCardExistHdl(pHdl)    sdio_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio_setDetectCardProtectHdl(pHdl)  sdio_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio_setCardIOHdl(pHdl)             sdio_setCallBack(SDIO_CALLBACK_IO_PAD, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio_setCardPowerHdl(pHdl)          sdio_setCallBack(SDIO_CALLBACK_POWER_CONTROL, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio2_setDetectCardExistHdl(pHdl)   sdio2_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio2_setDetectCardProtectHdl(pHdl) sdio2_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio2_setCardIOHdl(pHdl)            sdio2_setCallBack(SDIO_CALLBACK_IO_PAD, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio2_setCardPowerHdl(pHdl)         sdio2_setCallBack(SDIO_CALLBACK_POWER_CONTROL, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio3_setDetectCardExistHdl(pHdl)   sdio3_setCallBack(SDIO_CALLBACK_CARD_DETECT, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio3_setDetectCardProtectHdl(pHdl) sdio3_setCallBack(SDIO_CALLBACK_WRITE_PROTECT, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio3_setCardIOHdl(pHdl)            sdio3_setCallBack(SDIO_CALLBACK_IO_PAD, (SDIO_CALLBACK_HDL)pHdl)
 | |
| #define sdio3_setCardPowerHdl(pHdl)         sdio3_setCallBack(SDIO_CALLBACK_POWER_CONTROL, (SDIO_CALLBACK_HDL)pHdl)
 | |
| 
 | |
| //@}
 | |
| //#NT#2010/06/14#HH Chuang -end
 | |
| 
 | |
| // Functions exported from SDIO
 | |
| #if(NEW_STORAGE_OBJECT  == ENABLE)
 | |
| extern PSTRG_TAB                sdio_getStorageObject(STRG_OBJ_ID objID);
 | |
| #else
 | |
| extern PSTRG_TAB                sdio_getStorageObject(void);
 | |
| #endif
 | |
| extern UINT32                   sdio_getCardExist(void);
 | |
| extern UINT32                   sdio_getCardWriteProt(void);
 | |
| extern ER                       sdio_setConfig(SDIO_CONFIG_ID configID, UINT32 configContext);
 | |
| extern ER                       sdio_setInfo(UINT32 *pInfo);
 | |
| 
 | |
| extern void                     sdio_printCardInformation(void);
 | |
| extern PSDMMC_INFO_STRUCT       sdio_getCardInformation(void);
 | |
| extern PSDIO_MISC_INFORMATION   sdio_getMiscInfo(void);
 | |
| extern ER                       sdio_setCallBack(SDIO_CALLBACK callBackID, SDIO_CALLBACK_HDL pCallBack);
 | |
| extern void                     sdio_setIOEnable(BOOL IOEn);
 | |
| extern ER                       sdio_sendIOCMD52(PSDIO_CMD52_STRUCT pSDIO_CMD52);
 | |
| extern ER                       sdio_sendIOCMD53(PSDIO_CMD53_STRUCT pSDIO_CMD53);
 | |
| 
 | |
| //extern PMMC_EXT_CSD_STRUCT      sdio_getExtCSD(void);
 | |
| 
 | |
| // Functions exported from SDIO2
 | |
| #if (NEW_STORAGE_OBJECT  == ENABLE)
 | |
| extern PSTORAGE_OBJ             sdio2_getStorageObject(STRG_OBJ_ID objID);
 | |
| #else
 | |
| extern PSTRG_TAB                sdio2_getStorageObject(void);
 | |
| #endif
 | |
| extern UINT32                   sdio2_getCardExist(void);
 | |
| extern UINT32                   sdio2_getCardWriteProt(void);
 | |
| extern ER                       sdio2_setConfig(SDIO_CONFIG_ID configID, UINT32 configContext);
 | |
| extern ER                       sdio2_setInfo(UINT32 *pInfo);
 | |
| 
 | |
| extern void                     sdio2_printCardInformation(void);
 | |
| extern PSDMMC_INFO_STRUCT       sdio2_getCardInformation(void);
 | |
| extern PSDIO_MISC_INFORMATION   sdio2_getMiscInfo(void);
 | |
| extern ER                       sdio2_setCallBack(SDIO_CALLBACK callBackID, SDIO_CALLBACK_HDL pCallBack);
 | |
| extern void                     sdio2_setIOEnable(BOOL IOEn);
 | |
| extern ER                       sdio2_sendIOCMD52(PSDIO_CMD52_STRUCT pSDIO_CMD52);
 | |
| extern ER                       sdio2_sendIOCMD53(PSDIO_CMD53_STRUCT pSDIO_CMD53);
 | |
| 
 | |
| //extern PMMC_EXT_CSD_STRUCT      sdio2_getExtCSD(void);
 | |
| 
 | |
| // Functions exported from SDIO3
 | |
| #if (NEW_STORAGE_OBJECT  == ENABLE)
 | |
| extern PSTORAGE_OBJ             sdio3_getStorageObject(STRG_OBJ_ID objID);
 | |
| #else
 | |
| extern PSTRG_TAB                sdio3_getStorageObject(void);
 | |
| #endif
 | |
| extern UINT32                   sdio3_getCardExist(void);
 | |
| extern UINT32                   sdio3_getCardWriteProt(void);
 | |
| extern ER                       sdio3_setConfig(SDIO_CONFIG_ID configID, UINT32 configContext);
 | |
| extern ER                       sdio3_setInfo(UINT32 *pInfo);
 | |
| 
 | |
| extern void                     sdio3_printCardInformation(void);
 | |
| extern PSDMMC_INFO_STRUCT       sdio3_getCardInformation(void);
 | |
| extern PSDIO_MISC_INFORMATION   sdio3_getMiscInfo(void);
 | |
| extern ER                       sdio3_setCallBack(SDIO_CALLBACK callBackID, SDIO_CALLBACK_HDL pCallBack);
 | |
| extern void                     sdio3_setIOEnable(BOOL IOEn);
 | |
| extern ER                       sdio3_sendIOCMD52(PSDIO_CMD52_STRUCT pSDIO_CMD52);
 | |
| extern ER                       sdio3_sendIOCMD53(PSDIO_CMD53_STRUCT pSDIO_CMD53);
 | |
| 
 | |
| //extern PMMC_EXT_CSD_STRUCT      sdio3_getExtCSD(void);
 | |
| 
 | |
| extern ER                       sdio3_send_power_on_wp(UINT32 curr_sector, UINT32 num_sector);
 | |
| extern UINT8                    sdio3_get_wp_status(UINT32 addr);
 | |
| 
 | |
| extern void                     sdio_platform_init(void);
 | |
| extern void                     sdio_platform_uninit(void);
 | |
| 
 | |
| //@}
 | |
| 
 | |
| #endif // _SDIO_H
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | 
