sd.h 1016 Bytes
#ifndef	__SD_H__
#define	__SD_H__


typedef enum {
	enCMDT_BC,
	enCMDT_BCR,
	enCMDT_AC,
	enCMDT_ACR,
	enCMDT_ADTC
}	enum_CMD_TYPE;

typedef enum {
	enCMDC_CMD,
	enCMDC_ACMD
}	enum_CMD_CATEGORY;

typedef	enum {
	enRESP_NONE,
	enRESP_R1,		//48 bits 	(32)
	enRESP_R1B,		//48 
	enRESP_R2,		//136 		(120)
	enRESP_R3,		//48	
	enRESP_R4,		//48
	enRESP_R5,		//48
	enRESP_R5B,		//48
	enRESP_R6,		//48
	enRESP_R7		//48
}	enum_RESP_TYPE;

typedef enum {
	enDIR_NONE,
	enDIR_HOST2CARD,
	enDIR_CARD2HOST
}	enum_TRANS_DATA_DIR;


typedef struct {
	U8	index;
	U8	type;
	U8	category;
	U8	respType;
	U8	dataDir;
	U8	class;
	U8	abort;
} CARD_CMD;


int sd_preinit( void );
BOOL sd_init( void );
BOOL sd_fini( void );
BOOL sd_open( void );
BOOL sd_close( void );
U16	sd_writeBlocks( U8 *buf, U32 lba, U16 blkcnt );
U16	sd_readBlocks( U8 *buf, U32 lba, U16 blkcnt );

int sd_isCardPresent( void );
int sd_getCardInfo(SD_CARD_INFO *pinfo);
int sd_isCardWP( int *wp );
int sd_clkChange( U32 sysclk );
int sd_errRecover( void );



#endif