int card_csd(struct sd_card *card) { /* send_csd -> r2 response */ command.cmd = MMC_SEND_CSD; command.resp_type = RESP_LEN_136; command.args = MMC_ARG_RCA(card->rca); /* card rca */ if (mmc_send_cmd(&command)) { return 1; } card->csd[0] = command.resp[0]; card->csd[1] = command.resp[1]; card->csd[2] = command.resp[2]; card->csd[3] = command.resp[3]; int x = SD_CSD_CSDVER(card->csd); if (SD_CSD_CSDVER(card->csd) != SD_CSD_CSDVER_2_0) { printf("Version 2.0 of CSD register expected\n"); return 1; } /* sanity check */ printf("size = %lu bytes\n", SD_CSD_V2_CAPACITY( card->csd) * 512); return 0; }
int card_csd(struct sd_card_regs *card) { /* Read the Card Specific Data register */ struct mmc_command command; /* send_csd -> r2 response */ command.cmd = MMC_SEND_CSD; command.resp_type = RESP_LEN_136; command.args = MMC_ARG_RCA(card->rca); /* card rca */ if (mmc_send_cmd(&command)) { return 1; } card->csd[0] = command.resp[0]; card->csd[1] = command.resp[1]; card->csd[2] = command.resp[2]; card->csd[3] = command.resp[3]; if (SD_CSD_CSDVER(card->csd) != SD_CSD_CSDVER_2_0) { mmc_log_warn(&log, "Version 2.0 of CSD register expected\n"); return 1; } /* sanity check */ // mmc_log_warn(&log,"size = %llu bytes\n", (long long // unsigned)SD_CSD_V2_CAPACITY( card->csd) * 512); return 0; }