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

Function SdSelect

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

Send command SELECT to the device to select/deselect the device. @param[in] Device A pointer to the SD_DEVICE instance. @param[in] Rca The relative device address to use. @retval EFI_SUCCESS The request is executed successfully. @retval EFI_OUT_OF_RESOURCES The request could not be executed due to a lack of resources. @retval Others

Source from the content-addressed store, hash-verified

105
106**/
107EFI_STATUS
108SdSelect (
109 IN SD_DEVICE *Device,
110 IN UINT16 Rca
111 )
112{
113 EFI_STATUS Status;
114 EFI_SD_MMC_PASS_THRU_PROTOCOL *PassThru;
115 EFI_SD_MMC_COMMAND_BLOCK SdMmcCmdBlk;
116 EFI_SD_MMC_STATUS_BLOCK SdMmcStatusBlk;
117 EFI_SD_MMC_PASS_THRU_COMMAND_PACKET Packet;
118
119 PassThru = Device->Private->PassThru;
120
121 ZeroMem (&SdMmcCmdBlk, sizeof (SdMmcCmdBlk));
122 ZeroMem (&SdMmcStatusBlk, sizeof (SdMmcStatusBlk));
123 ZeroMem (&Packet, sizeof (Packet));
124 Packet.SdMmcCmdBlk = &SdMmcCmdBlk;
125 Packet.SdMmcStatusBlk = &SdMmcStatusBlk;
126 Packet.Timeout = SD_GENERIC_TIMEOUT;
127
128 SdMmcCmdBlk.CommandIndex = SD_SELECT_DESELECT_CARD;
129 SdMmcCmdBlk.CommandType = SdMmcCommandTypeAc;
130 if (Rca != 0) {
131 SdMmcCmdBlk.ResponseType = SdMmcResponseTypeR1b;
132 }
133 SdMmcCmdBlk.CommandArgument = (UINT32)Rca << 16;
134
135 Status = PassThru->PassThru (PassThru, Device->Slot, &Packet, NULL);
136
137 return Status;
138}
139
140/**
141 Send command SEND_STATUS to the device to get device status.

Callers 1

DiscoverUserAreaFunction · 0.85

Calls 1

ZeroMemFunction · 0.50

Tested by

no test coverage detected