From 478130eeb441881ccb3937c02cb283564b516457 Mon Sep 17 00:00:00 2001 From: P L Sai Krishna Date: Fri, 9 Jan 2015 14:40:47 +0530 Subject: [PATCH] sdps: Added support for SD Card v1.0 This patch adds support for version 1.0 SD Cards. Signed-off-by: P L Sai Krishna --- XilinxProcessorIPLib/drivers/sdps/src/xsdps.c | 8 ++++++-- XilinxProcessorIPLib/drivers/sdps/src/xsdps.h | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/XilinxProcessorIPLib/drivers/sdps/src/xsdps.c b/XilinxProcessorIPLib/drivers/sdps/src/xsdps.c index 54952fc9..680cc3db 100755 --- a/XilinxProcessorIPLib/drivers/sdps/src/xsdps.c +++ b/XilinxProcessorIPLib/drivers/sdps/src/xsdps.c @@ -54,6 +54,7 @@ * WP/CD. CR# 810655. * Checked for DAT Inhibit mask instead of CMD * Inhibit mask in Cmd Transfer API. +* Added Support for SD Card v1.0 * * * @@ -314,8 +315,10 @@ int XSdPs_SdCardInitialize(XSdPs *InstancePtr) RespOCR = XSdPs_ReadReg(InstancePtr->Config.BaseAddress, XSDPS_RESP0_OFFSET); if (RespOCR != XSDPS_CMD8_VOL_PATTERN) { - Status = XST_FAILURE; - goto RETURN_PATH; + InstancePtr->CardType = CT_SD1; + } + else { + InstancePtr->CardType = CT_SD2; } RespOCR = 0; @@ -1021,6 +1024,7 @@ int XSdPs_MmcCardInitialize(XSdPs *InstancePtr) goto RETURN_PATH; } + InstancePtr->CardType = CT_MMC; RespOCR = 0; /* * Send CMD1 while card is still busy with power up diff --git a/XilinxProcessorIPLib/drivers/sdps/src/xsdps.h b/XilinxProcessorIPLib/drivers/sdps/src/xsdps.h index 4cc90c10..f58b7ac5 100755 --- a/XilinxProcessorIPLib/drivers/sdps/src/xsdps.h +++ b/XilinxProcessorIPLib/drivers/sdps/src/xsdps.h @@ -112,6 +112,7 @@ * WP/CD. CR# 810655. * Checked for DAT Inhibit mask instead of CMD * Inhibit mask in Cmd Transfer API. +* Added Support for SD Card v1.0 * * * @@ -133,6 +134,9 @@ extern "C" { #define XSDPS_CLK_400_KHZ 400000 /**< 400 KHZ */ #define XSDPS_CLK_50_MHZ 50000000 /**< 50 MHZ */ +#define CT_MMC 0x1 /**< MMC Card */ +#define CT_SD1 0x2 /**< SD ver 1 */ +#define CT_SD2 0x3 /**< SD ver 2 */ /**************************** Type Definitions *******************************/ /** * This typedef contains configuration information for the device. @@ -166,6 +170,7 @@ typedef struct { u32 HCS; /**< High capacity support in card */ u32 CardID[4]; /**< Card ID */ u32 RelCardAddr; /**< Relative Card Address */ + u32 CardType; /**< Card Type(version) */ /**< ADMA Descriptors */ #ifdef __ICCARM__ #pragma data_alignment = 32