|
@@ -819,10 +819,12 @@ static u32 sh_mmcif_set_cmd(struct sh_mmcif_host *host,
|
|
|
tmp |= CMD_SET_RTYP_NO;
|
|
|
break;
|
|
|
case MMC_RSP_R1:
|
|
|
- case MMC_RSP_R1B:
|
|
|
case MMC_RSP_R3:
|
|
|
tmp |= CMD_SET_RTYP_6B;
|
|
|
break;
|
|
|
+ case MMC_RSP_R1B:
|
|
|
+ tmp |= CMD_SET_RBSY | CMD_SET_RTYP_6B;
|
|
|
+ break;
|
|
|
case MMC_RSP_R2:
|
|
|
tmp |= CMD_SET_RTYP_17B;
|
|
|
break;
|
|
@@ -830,17 +832,7 @@ static u32 sh_mmcif_set_cmd(struct sh_mmcif_host *host,
|
|
|
dev_err(dev, "Unsupported response type.\n");
|
|
|
break;
|
|
|
}
|
|
|
- switch (opc) {
|
|
|
- /* RBSY */
|
|
|
- case MMC_SLEEP_AWAKE:
|
|
|
- case MMC_SWITCH:
|
|
|
- case MMC_STOP_TRANSMISSION:
|
|
|
- case MMC_SET_WRITE_PROT:
|
|
|
- case MMC_CLR_WRITE_PROT:
|
|
|
- case MMC_ERASE:
|
|
|
- tmp |= CMD_SET_RBSY;
|
|
|
- break;
|
|
|
- }
|
|
|
+
|
|
|
/* WDAT / DATW */
|
|
|
if (data) {
|
|
|
tmp |= CMD_SET_WDAT;
|
|
@@ -925,23 +917,13 @@ static void sh_mmcif_start_cmd(struct sh_mmcif_host *host,
|
|
|
{
|
|
|
struct mmc_command *cmd = mrq->cmd;
|
|
|
u32 opc = cmd->opcode;
|
|
|
- u32 mask;
|
|
|
+ u32 mask = 0;
|
|
|
unsigned long flags;
|
|
|
|
|
|
- switch (opc) {
|
|
|
- /* response busy check */
|
|
|
- case MMC_SLEEP_AWAKE:
|
|
|
- case MMC_SWITCH:
|
|
|
- case MMC_STOP_TRANSMISSION:
|
|
|
- case MMC_SET_WRITE_PROT:
|
|
|
- case MMC_CLR_WRITE_PROT:
|
|
|
- case MMC_ERASE:
|
|
|
+ if (cmd->flags & MMC_RSP_BUSY)
|
|
|
mask = MASK_START_CMD | MASK_MRBSYE;
|
|
|
- break;
|
|
|
- default:
|
|
|
+ else
|
|
|
mask = MASK_START_CMD | MASK_MCRSPE;
|
|
|
- break;
|
|
|
- }
|
|
|
|
|
|
if (host->ccs_enable)
|
|
|
mask |= MASK_MCCSTO;
|