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

Function SdSendStatus

MdeModulePkg/Bus/Sd/SdDxe/SdBlockIo.c:152–184  ·  view source on GitHub ↗

Send command SEND_STATUS to the device to get device status. @param[in] Device A pointer to the SD_DEVICE instance. @param[in] Rca The relative device address to use. @param[out] DevStatus The buffer to store the device status. @retval EFI_SUCCESS The request is executed successfully. @retval EFI_OUT_OF_RESOURCES The request could no

Source from the content-addressed store, hash-verified

150
151**/
152EFI_STATUS
153SdSendStatus (
154 IN SD_DEVICE *Device,
155 IN UINT16 Rca,
156 OUT UINT32 *DevStatus
157 )
158{
159 EFI_STATUS Status;
160 EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
161 EFI_SD_MMC_COMMAND_BLOCK SdMmcCmdBlk;
162 EFI_SD_MMC_STATUS_BLOCK SdMmcStatusBlk;
163 EFI_SD_MMC_PASS_THRU_COMMAND_PACKET Packet;
164
165 PassThru = Device->Private->PassThru;
166
167 ZeroMem (&SdMmcCmdBlk, sizeof (SdMmcCmdBlk));
168 ZeroMem (&SdMmcStatusBlk, sizeof (SdMmcStatusBlk));
169 ZeroMem (&Packet, sizeof (Packet));
170 Packet.SdMmcCmdBlk = &SdMmcCmdBlk;
171 Packet.SdMmcStatusBlk = &SdMmcStatusBlk;
172 Packet.Timeout = SD_GENERIC_TIMEOUT;
173
174 SdMmcCmdBlk.CommandIndex = SD_SEND_STATUS;
175 SdMmcCmdBlk.CommandType = SdMmcCommandTypeAc;
176 SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR1;
177 SdMmcCmdBlk.CommandArgument = (UINT32)Rca << 16;
178
179 Status = PassThru->PassThru (PassThru, Device->Slot, &Packet, NULL);
180 if (!EFI_ERROR(Status)) {
181 CopyMem(DevStatus, &SdMmcStatusBlk.Resp0, sizeof (UINT32));
182 }
183 return Status;
184}
185
186/**
187 Send command SEND_CSD to the device to get the CSD register data.

Callers 1

DiscoverUserAreaFunction · 0.85

Calls 2

ZeroMemFunction · 0.50
CopyMemFunction · 0.50

Tested by

no test coverage detected