sdps: Added the driver support for micro sd without WP/CD.

This patch add the driver support for micro sd without WP/CD.

Signed-off-by: P L Sai Krishna <lakshmis@xilinx.com>
This commit is contained in:
P L Sai Krishna 2014-12-04 14:39:38 +05:30 committed by Suneel Garapati
parent ec95e33596
commit a6dbf26307
3 changed files with 54 additions and 37 deletions

View file

@ -37,17 +37,18 @@
# ----- ---- -------- ----------------------------------------------- # ----- ---- -------- -----------------------------------------------
# 1.00a hk 10/17/13 First release # 1.00a hk 10/17/13 First release
# 2.0 adk 12/10/13 Updated as per the New Tcl API's # 2.0 adk 12/10/13 Updated as per the New Tcl API's
# 2.4 sk 12/04/14 Added CD and WP parameters
# #
############################################################################## ##############################################################################
#uses "xillib.tcl" #uses "xillib.tcl"
proc generate {drv_handle} { proc generate {drv_handle} {
xdefine_zynq_include_file $drv_handle "xparameters.h" "XSdPs" "NUM_INSTANCES" "DEVICE_ID" "C_S_AXI_BASEADDR" "C_S_AXI_HIGHADDR" "C_SDIO_CLK_FREQ_HZ" xdefine_zynq_include_file $drv_handle "xparameters.h" "XSdPs" "NUM_INSTANCES" "DEVICE_ID" "C_S_AXI_BASEADDR" "C_S_AXI_HIGHADDR" "C_SDIO_CLK_FREQ_HZ" "C_HAS_CD" "C_HAS_WP"
xdefine_zynq_config_file $drv_handle "xsdps_g.c" "XSdPs" "DEVICE_ID" "C_S_AXI_BASEADDR" "C_SDIO_CLK_FREQ_HZ" xdefine_zynq_config_file $drv_handle "xsdps_g.c" "XSdPs" "DEVICE_ID" "C_S_AXI_BASEADDR" "C_SDIO_CLK_FREQ_HZ" "C_HAS_CD" "C_HAS_WP"
xdefine_zynq_canonical_xpars $drv_handle "xparameters.h" "XSdPs" "DEVICE_ID" "C_S_AXI_BASEADDR" "C_S_AXI_HIGHADDR" "C_SDIO_CLK_FREQ_HZ" xdefine_zynq_canonical_xpars $drv_handle "xparameters.h" "XSdPs" "DEVICE_ID" "C_S_AXI_BASEADDR" "C_S_AXI_HIGHADDR" "C_SDIO_CLK_FREQ_HZ" "C_HAS_CD" "C_HAS_WP"
} }

View file

@ -50,6 +50,8 @@
* when re-initialization is done.CR# 819614. * when re-initialization is done.CR# 819614.
* Use XSdPs_Change_ClkFreq API whenever changing * Use XSdPs_Change_ClkFreq API whenever changing
* clock.CR# 816586. * clock.CR# 816586.
* 2.4 sk 12/04/14 Added support for micro SD without
* WP/CD. CR# 810655.
* *
* </pre> * </pre>
* *
@ -139,6 +141,8 @@ int XSdPs_CfgInitialize(XSdPs *InstancePtr, XSdPs_Config *ConfigPtr,
InstancePtr->Config.BaseAddress = EffectiveAddr; InstancePtr->Config.BaseAddress = EffectiveAddr;
InstancePtr->Config.InputClockHz = ConfigPtr->InputClockHz; InstancePtr->Config.InputClockHz = ConfigPtr->InputClockHz;
InstancePtr->IsReady = XIL_COMPONENT_IS_READY; InstancePtr->IsReady = XIL_COMPONENT_IS_READY;
InstancePtr->Config.CardDetect = ConfigPtr->CardDetect;
InstancePtr->Config.WriteProtect = ConfigPtr->WriteProtect;
/* /*
* "Software reset for all" is initiated * "Software reset for all" is initiated
@ -255,6 +259,7 @@ int XSdPs_SdCardInitialize(XSdPs *InstancePtr)
Xil_AssertNonvoid(InstancePtr != NULL); Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
if(InstancePtr->Config.CardDetect) {
/* /*
* Check the present state register to make sure * Check the present state register to make sure
* card is inserted and detected by host controller * card is inserted and detected by host controller
@ -265,6 +270,7 @@ int XSdPs_SdCardInitialize(XSdPs *InstancePtr)
Status = XST_FAILURE; Status = XST_FAILURE;
goto RETURN_PATH; goto RETURN_PATH;
} }
}
/* /*
* 74 CLK delay after card is powered up, before the first command. * 74 CLK delay after card is powered up, before the first command.
@ -650,6 +656,7 @@ int XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff)
u32 PresentStateReg; u32 PresentStateReg;
u32 StatusReg; u32 StatusReg;
if(InstancePtr->Config.CardDetect) {
/* /*
* Check status to ensure card is initialized * Check status to ensure card is initialized
*/ */
@ -659,6 +666,7 @@ int XSdPs_ReadPolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, u8 *Buff)
Status = XST_FAILURE; Status = XST_FAILURE;
goto RETURN_PATH; goto RETURN_PATH;
} }
}
/* /*
* Set block size to 512 if not already set * Set block size to 512 if not already set
@ -746,6 +754,7 @@ int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff)
u32 PresentStateReg; u32 PresentStateReg;
u32 StatusReg; u32 StatusReg;
if(InstancePtr->Config.CardDetect) {
/* /*
* Check status to ensure card is initialized * Check status to ensure card is initialized
*/ */
@ -755,6 +764,7 @@ int XSdPs_WritePolled(XSdPs *InstancePtr, u32 Arg, u32 BlkCnt, const u8 *Buff)
Status = XST_FAILURE; Status = XST_FAILURE;
goto RETURN_PATH; goto RETURN_PATH;
} }
}
/* /*
* Set block size to 512 if not already set * Set block size to 512 if not already set
@ -970,6 +980,7 @@ int XSdPs_MmcCardInitialize(XSdPs *InstancePtr)
Xil_AssertNonvoid(InstancePtr != NULL); Xil_AssertNonvoid(InstancePtr != NULL);
Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY);
if(InstancePtr->Config.CardDetect) {
/* /*
* Check the present state register to make sure * Check the present state register to make sure
* card is inserted and detected by host controller * card is inserted and detected by host controller
@ -980,6 +991,7 @@ int XSdPs_MmcCardInitialize(XSdPs *InstancePtr)
Status = XST_FAILURE; Status = XST_FAILURE;
goto RETURN_PATH; goto RETURN_PATH;
} }
}
/* /*
* 74 CLK delay after card is powered up, before the first command. * 74 CLK delay after card is powered up, before the first command.

View file

@ -108,6 +108,8 @@
* when re-initialization is done.CR# 819614. * when re-initialization is done.CR# 819614.
* Use XSdPs_Change_ClkFreq API whenever changing * Use XSdPs_Change_ClkFreq API whenever changing
* clock.CR# 816586. * clock.CR# 816586.
* 2.4 sk 12/04/14 Added support for micro SD without
* WP/CD. CR# 810655.
* *
* </pre> * </pre>
* *
@ -137,6 +139,8 @@ typedef struct {
u16 DeviceId; /**< Unique ID of device */ u16 DeviceId; /**< Unique ID of device */
u32 BaseAddress; /**< Base address of the device */ u32 BaseAddress; /**< Base address of the device */
u32 InputClockHz; /**< Input clock frequency */ u32 InputClockHz; /**< Input clock frequency */
u32 CardDetect; /**< Card Detect */
u32 WriteProtect; /**< Write Protect */
} XSdPs_Config; } XSdPs_Config;
/* /*