|
@@ -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;
|