MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / DumpCsd

Function DumpCsd

MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c:97–139  ·  view source on GitHub ↗

Decode and print SD CSD Register content. @param[in] Csd Pointer to SD_CSD data structure. @retval EFI_SUCCESS The function completed successfully **/

Source from the content-addressed store, hash-verified

95 @retval EFI_SUCCESS The function completed successfully
96**/
97EFI_STATUS
98DumpCsd (
99 IN SD_CSD *Csd
100 )
101{
102 SD_CSD2 *Csd2;
103
104 DEBUG((DEBUG_INFO, "== Dump Sd Csd Register==\n"));
105 DEBUG((DEBUG_INFO, " CSD structure 0x%x\n", Csd->CsdStructure));
106 DEBUG((DEBUG_INFO, " Data read access-time 1 0x%x\n", Csd->Taac));
107 DEBUG((DEBUG_INFO, " Data read access-time 2 0x%x\n", Csd->Nsac));
108 DEBUG((DEBUG_INFO, " Max. bus clock frequency 0x%x\n", Csd->TranSpeed));
109 DEBUG((DEBUG_INFO, " Device command classes 0x%x\n", Csd->Ccc));
110 DEBUG((DEBUG_INFO, " Max. read data block length 0x%x\n", Csd->ReadBlLen));
111 DEBUG((DEBUG_INFO, " Partial blocks for read allowed 0x%x\n", Csd->ReadBlPartial));
112 DEBUG((DEBUG_INFO, " Write block misalignment 0x%x\n", Csd->WriteBlkMisalign));
113 DEBUG((DEBUG_INFO, " Read block misalignment 0x%x\n", Csd->ReadBlkMisalign));
114 DEBUG((DEBUG_INFO, " DSR implemented 0x%x\n", Csd->DsrImp));
115 if (Csd->CsdStructure == 0) {
116 DEBUG((DEBUG_INFO, " Device size 0x%x\n", Csd->CSizeLow | (Csd->CSizeHigh << 2)));
117 DEBUG((DEBUG_INFO, " Max. read current @ VDD min 0x%x\n", Csd->VddRCurrMin));
118 DEBUG((DEBUG_INFO, " Max. read current @ VDD max 0x%x\n", Csd->VddRCurrMax));
119 DEBUG((DEBUG_INFO, " Max. write current @ VDD min 0x%x\n", Csd->VddWCurrMin));
120 DEBUG((DEBUG_INFO, " Max. write current @ VDD max 0x%x\n", Csd->VddWCurrMax));
121 } else {
122 Csd2 = (SD_CSD2*)(VOID*)Csd;
123 DEBUG((DEBUG_INFO, " Device size 0x%x\n", Csd2->CSizeLow | (Csd->CSizeHigh << 16)));
124 }
125 DEBUG((DEBUG_INFO, " Erase sector size 0x%x\n", Csd->SectorSize));
126 DEBUG((DEBUG_INFO, " Erase single block enable 0x%x\n", Csd->EraseBlkEn));
127 DEBUG((DEBUG_INFO, " Write protect group size 0x%x\n", Csd->WpGrpSize));
128 DEBUG((DEBUG_INFO, " Write protect group enable 0x%x\n", Csd->WpGrpEnable));
129 DEBUG((DEBUG_INFO, " Write speed factor 0x%x\n", Csd->R2WFactor));
130 DEBUG((DEBUG_INFO, " Max. write data block length 0x%x\n", Csd->WriteBlLen));
131 DEBUG((DEBUG_INFO, " Partial blocks for write allowed 0x%x\n", Csd->WriteBlPartial));
132 DEBUG((DEBUG_INFO, " File format group 0x%x\n", Csd->FileFormatGrp));
133 DEBUG((DEBUG_INFO, " Copy flag (OTP) 0x%x\n", Csd->Copy));
134 DEBUG((DEBUG_INFO, " Permanent write protection 0x%x\n", Csd->PermWriteProtect));
135 DEBUG((DEBUG_INFO, " Temporary write protection 0x%x\n", Csd->TmpWriteProtect));
136 DEBUG((DEBUG_INFO, " File format 0x%x\n", Csd->FileFormat));
137
138 return EFI_SUCCESS;
139}
140
141/**
142 Get SD device model name.

Callers 1

DiscoverUserAreaFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected