Вот что удалось проследить отладчиком:
Вызывается функция инициализации карты mmc_sd_init_card. Далее драйвер пытается получить CID в функции mmc_sd_get_cid. В этой функции карта переводится в IDLE с помощью функции mmc_go_idle. Далее выполняется SD_SEND_IF_COND в одноименной функции mmc_send_if_cond. Далее mmc_host_uhs и sd_get_host_max_current. Затем вызывается mmc_send_app_op_cond, из которой вызывается mmc_app_cmd. Приведу листинг функции на всякий случай:
int mmc_wait_for_app_cmd(struct mmc_host *host, struct mmc_card *card,
struct mmc_command *cmd, int retries)
{
struct mmc_request mrq = {NULL};
int i, err;
BUG_ON(!cmd);
BUG_ON(retries < 0);
err = -EIO;
/*
* We have to resend MMC_APP_CMD for each attempt so
* we cannot use the retries field in mmc_command.
*/
for (i = 0;i <= retries;i++) {
err = mmc_app_cmd(host, card);
if (err) {
/* no point in retrying; no APP commands allowed */
if (mmc_host_is_spi(host)) {
if (cmd->resp[0] & R1_SPI_ILLEGAL_COMMAND)
break;
}
continue;
}
memset(&mrq, 0, sizeof(struct mmc_request));
memset(cmd->resp, 0, sizeof(cmd->resp));
cmd->retries = 0;
mrq.cmd = cmd;
cmd->data = NULL;
mmc_wait_for_req(host, &mrq);
err = cmd->error;
if (!cmd->error)
break;
/* no point in retrying illegal APP commands */
if (mmc_host_is_spi(host)) {
if (cmd->resp[0] & R1_SPI_ILLEGAL_COMMAND)
break;
}
}
return err;
}
В цикле for на второй итерации mmc_app_cmd возвращает ошибку -110.
На счет успешного считывания CID я наверное погорячился.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Вызывается функция инициализации карты mmc_sd_init_card. Далее драйвер пытается получить CID в функции mmc_sd_get_cid. В этой функции карта переводится в IDLE с помощью функции mmc_go_idle. Далее выполняется SD_SEND_IF_COND в одноименной функции mmc_send_if_cond. Далее mmc_host_uhs и sd_get_host_max_current. Затем вызывается mmc_send_app_op_cond, из которой вызывается mmc_app_cmd. Приведу листинг функции на всякий случай:
В цикле for на второй итерации mmc_app_cmd возвращает ошибку -110.
На счет успешного считывания CID я наверное погорячился.