|
|
|
@ -62,45 +62,45 @@ int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) |
|
|
|
|
printf("\t\tARG\t\t\t 0x%08X\n", cmd->cmdarg); |
|
|
|
|
ret = mmc->cfg->ops->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]); |
|
|
|
|
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 = (u8 *)&cmd->response[i]; |
|
|
|
|
ptr += 3; |
|
|
|
|
for (j = 0; j < 4; j++) |
|
|
|
|
printf("%02X ", *ptr--); |
|
|
|
|
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 = (u8 *)&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; |
|
|
|
|
} |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
#else |
|
|
|
|
ret = mmc->cfg->ops->send_cmd(mmc, cmd, data); |
|
|
|
@ -906,20 +906,20 @@ retry_scr: |
|
|
|
|
mmc->scr[1] = __be32_to_cpu(scr[1]); |
|
|
|
|
|
|
|
|
|
switch ((mmc->scr[0] >> 24) & 0xf) { |
|
|
|
|
case 0: |
|
|
|
|
mmc->version = SD_VERSION_1_0; |
|
|
|
|
break; |
|
|
|
|
case 1: |
|
|
|
|
mmc->version = SD_VERSION_1_10; |
|
|
|
|
break; |
|
|
|
|
case 2: |
|
|
|
|
mmc->version = SD_VERSION_2; |
|
|
|
|
if ((mmc->scr[0] >> 15) & 0x1) |
|
|
|
|
mmc->version = SD_VERSION_3; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
mmc->version = SD_VERSION_1_0; |
|
|
|
|
break; |
|
|
|
|
case 0: |
|
|
|
|
mmc->version = SD_VERSION_1_0; |
|
|
|
|
break; |
|
|
|
|
case 1: |
|
|
|
|
mmc->version = SD_VERSION_1_10; |
|
|
|
|
break; |
|
|
|
|
case 2: |
|
|
|
|
mmc->version = SD_VERSION_2; |
|
|
|
|
if ((mmc->scr[0] >> 15) & 0x1) |
|
|
|
|
mmc->version = SD_VERSION_3; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
mmc->version = SD_VERSION_1_0; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (mmc->scr[0] & SD_DATA_4BIT) |
|
|
|
@ -1102,24 +1102,24 @@ static int mmc_startup(struct mmc *mmc) |
|
|
|
|
int version = (cmd.response[0] >> 26) & 0xf; |
|
|
|
|
|
|
|
|
|
switch (version) { |
|
|
|
|
case 0: |
|
|
|
|
mmc->version = MMC_VERSION_1_2; |
|
|
|
|
break; |
|
|
|
|
case 1: |
|
|
|
|
mmc->version = MMC_VERSION_1_4; |
|
|
|
|
break; |
|
|
|
|
case 2: |
|
|
|
|
mmc->version = MMC_VERSION_2_2; |
|
|
|
|
break; |
|
|
|
|
case 3: |
|
|
|
|
mmc->version = MMC_VERSION_3; |
|
|
|
|
break; |
|
|
|
|
case 4: |
|
|
|
|
mmc->version = MMC_VERSION_4; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
mmc->version = MMC_VERSION_1_2; |
|
|
|
|
break; |
|
|
|
|
case 0: |
|
|
|
|
mmc->version = MMC_VERSION_1_2; |
|
|
|
|
break; |
|
|
|
|
case 1: |
|
|
|
|
mmc->version = MMC_VERSION_1_4; |
|
|
|
|
break; |
|
|
|
|
case 2: |
|
|
|
|
mmc->version = MMC_VERSION_2_2; |
|
|
|
|
break; |
|
|
|
|
case 3: |
|
|
|
|
mmc->version = MMC_VERSION_3; |
|
|
|
|
break; |
|
|
|
|
case 4: |
|
|
|
|
mmc->version = MMC_VERSION_4; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
mmc->version = MMC_VERSION_1_2; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|