Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;
}