mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-16 14:08:45 +00:00
mmc: trace added
Defining CONFIG_MMC_TRACE in the include board file it is possible to activate a tracing support. This code helps in case of eMMC hw failure or to investigate possible eMMC initialization issues. Signed-off-by: Raffaele Recalcati <raffaele.recalcati@bticino.it> Signed-off-by: Andy Fleming <afleming@freescale.com>
This commit is contained in:
parent
31cacbabf0
commit
5db2fe3ad9
1 changed files with 57 additions and 0 deletions
|
@ -49,7 +49,60 @@ int board_mmc_getcd(u8 *cd, struct mmc *mmc)__attribute__((weak,
|
||||||
|
|
||||||
int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
|
int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_MMC_TRACE
|
||||||
|
int ret;
|
||||||
|
int i;
|
||||||
|
u8 *ptr;
|
||||||
|
|
||||||
|
printf("CMD_SEND:%d\n", cmd->cmdidx);
|
||||||
|
printf("\t\tARG\t\t\t 0x%08X\n", cmd->cmdarg);
|
||||||
|
printf("\t\tFLAG\t\t\t %d\n", cmd->flags);
|
||||||
|
ret = mmc->send_cmd(mmc, cmd, data);
|
||||||
|
switch (cmd->resp_type) {
|
||||||
|
case MMC_RSP_NONE:
|
||||||
|
printf("\t\tMMC_RSP_NONE\n");
|
||||||
|
break;
|
||||||
|
case MMC_RSP_R1:
|
||||||
|
printf("\t\tMMC_RSP_R1,5,6,7 \t 0x%08X \n",
|
||||||
|
cmd->response[0]);
|
||||||
|
break;
|
||||||
|
case MMC_RSP_R1b:
|
||||||
|
printf("\t\tMMC_RSP_R1b\t\t 0x%08X \n",
|
||||||
|
cmd->response[0]);
|
||||||
|
break;
|
||||||
|
case MMC_RSP_R2:
|
||||||
|
printf("\t\tMMC_RSP_R2\t\t 0x%08X \n",
|
||||||
|
cmd->response[0]);
|
||||||
|
printf("\t\t \t\t 0x%08X \n",
|
||||||
|
cmd->response[1]);
|
||||||
|
printf("\t\t \t\t 0x%08X \n",
|
||||||
|
cmd->response[2]);
|
||||||
|
printf("\t\t \t\t 0x%08X \n",
|
||||||
|
cmd->response[3]);
|
||||||
|
printf("\n");
|
||||||
|
printf("\t\t\t\t\tDUMPING DATA\n");
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
int j;
|
||||||
|
printf("\t\t\t\t\t%03d - ", i*4);
|
||||||
|
ptr = &cmd->response[i];
|
||||||
|
ptr += 3;
|
||||||
|
for (j = 0; j < 4; j++)
|
||||||
|
printf("%02X ", *ptr--);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MMC_RSP_R3:
|
||||||
|
printf("\t\tMMC_RSP_R3,4\t\t 0x%08X \n",
|
||||||
|
cmd->response[0]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("\t\tERROR MMC rsp not supported\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
#else
|
||||||
return mmc->send_cmd(mmc, cmd, data);
|
return mmc->send_cmd(mmc, cmd, data);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int mmc_send_status(struct mmc *mmc, int timeout)
|
int mmc_send_status(struct mmc *mmc, int timeout)
|
||||||
|
@ -80,6 +133,10 @@ int mmc_send_status(struct mmc *mmc, int timeout)
|
||||||
}
|
}
|
||||||
} while (timeout--);
|
} while (timeout--);
|
||||||
|
|
||||||
|
#ifdef CONFIG_MMC_TRACE
|
||||||
|
status = (cmd.response[0] & MMC_STATUS_CURR_STATE) >> 9;
|
||||||
|
printf("CURR STATE:%d\n", status);
|
||||||
|
#endif
|
||||||
if (!timeout) {
|
if (!timeout) {
|
||||||
printf("Timeout waiting card ready\n");
|
printf("Timeout waiting card ready\n");
|
||||||
return TIMEOUT;
|
return TIMEOUT;
|
||||||
|
|
Loading…
Add table
Reference in a new issue