mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 13:43:28 +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)
|
||||
{
|
||||
#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);
|
||||
#endif
|
||||
}
|
||||
|
||||
int mmc_send_status(struct mmc *mmc, int timeout)
|
||||
|
@ -80,6 +133,10 @@ int mmc_send_status(struct mmc *mmc, int 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) {
|
||||
printf("Timeout waiting card ready\n");
|
||||
return TIMEOUT;
|
||||
|
|
Loading…
Reference in a new issue