Lines Matching defs:card

150 int sd_cmd9(struct sd_handle *handle, struct sd_card_data *card)
168 if (handle->card->type == SD_CARD_MMC) {
169 card->csd.mmc.structure = (resp.data.r2.rsp4 >> 22) & 0x3;
170 card->csd.mmc.csdSpecVer = (resp.data.r2.rsp4 >> 18) & 0x0f;
171 card->csd.mmc.taac = (resp.data.r2.rsp4 >> 8) & 0xff;
172 card->csd.mmc.nsac = resp.data.r2.rsp4 & 0xff;
173 card->csd.mmc.speed = resp.data.r2.rsp3 >> 24;
174 card->csd.mmc.classes = (resp.data.r2.rsp3 >> 12) & 0xfff;
175 card->csd.mmc.rdBlkLen = (resp.data.r2.rsp3 >> 8) & 0xf;
176 card->csd.mmc.rdBlkPartial = (resp.data.r2.rsp3 >> 7) & 0x01;
177 card->csd.mmc.wrBlkMisalign = (resp.data.r2.rsp3 >> 6) & 0x1;
178 card->csd.mmc.rdBlkMisalign = (resp.data.r2.rsp3 >> 5) & 0x1;
179 card->csd.mmc.dsr = (resp.data.r2.rsp2 >> 4) & 0x01;
180 card->csd.mmc.size =
183 card->csd.mmc.vddRdCurrMin = (resp.data.r2.rsp2 >> 19) & 0x7;
184 card->csd.mmc.vddRdCurrMax = (resp.data.r2.rsp2 >> 16) & 0x7;
185 card->csd.mmc.vddWrCurrMin = (resp.data.r2.rsp2 >> 13) & 0x7;
186 card->csd.mmc.vddWrCurrMax = (resp.data.r2.rsp2 >> 10) & 0x7;
187 card->csd.mmc.devSizeMulti = (resp.data.r2.rsp2 >> 7) & 0x7;
188 card->csd.mmc.eraseGrpSize = (resp.data.r2.rsp2 >> 2) & 0x1f;
189 card->csd.mmc.eraseGrpSizeMulti =
192 card->csd.mmc.wrProtGroupSize =
194 card->csd.mmc.wrProtGroupEnable =
196 card->csd.mmc.manuDefEcc = (resp.data.r2.rsp1 >> 21) & 0x3;
197 card->csd.mmc.wrSpeedFactor = (resp.data.r2.rsp1 >> 18) & 0x7;
198 card->csd.mmc.wrBlkLen = (resp.data.r2.rsp1 >> 14) & 0xf;
199 card->csd.mmc.wrBlkPartial = (resp.data.r2.rsp1 >> 13) & 0x1;
200 card->csd.mmc.protAppl = (resp.data.r2.rsp1 >> 8) & 0x1;
201 card->csd.mmc.copyFlag = (resp.data.r2.rsp1 >> 7) & 0x1;
202 card->csd.mmc.permWrProt = (resp.data.r2.rsp1 >> 6) & 0x1;
203 card->csd.mmc.tmpWrProt = (resp.data.r2.rsp1 >> 5) & 0x1;
204 card->csd.mmc.fileFormat = (resp.data.r2.rsp1 >> 4) & 0x03;
205 card->csd.mmc.eccCode = resp.data.r2.rsp1 & 0x03;
206 maxReadBlockLen <<= card->csd.mmc.rdBlkLen;
207 maxWriteBlockLen <<= card->csd.mmc.wrBlkLen;
209 iBlkNum = card->csd.mmc.size + 1;
210 multiFactor = (1 << (card->csd.mmc.devSizeMulti + 2));
212 handle->card->size =
213 iBlkNum * multiFactor * (1 << card->csd.mmc.rdBlkLen);
216 handle->card->maxRdBlkLen = maxReadBlockLen;
217 handle->card->maxWtBlkLen = maxWriteBlockLen;
219 if (handle->card->size < 0xA00000) {
224 handle->card->size = 0x40000000;
225 handle->card->maxRdBlkLen = 512;
226 handle->card->maxWtBlkLen = 512;
229 if ((handle->card->maxRdBlkLen > 512) ||
230 (handle->card->maxWtBlkLen > 512)) {
231 handle->card->maxRdBlkLen = 512;
232 handle->card->maxWtBlkLen = 512;
233 } else if ((handle->card->maxRdBlkLen == 0) ||
234 (handle->card->maxWtBlkLen == 0)) {
235 handle->card->maxRdBlkLen = 512;
236 handle->card->maxWtBlkLen = 512;
239 handle->device->cfg.blockSize = handle->card->maxRdBlkLen;
675 /* Check result of Cmd6 using Cmd13 to check card status */
681 /* Check bit 7 (SWITCH_ERROR) in card status */