drivers: imx: mxc_usdhc: Do not set MMC_RSP_48 for MMC_RESPONSE_R2
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Wed, 10 Oct 2018 11:08:33 +0000 (12:08 +0100)
committerBryan O'Donoghue <bryan.odonoghue@linaro.org>
Wed, 10 Oct 2018 11:15:33 +0000 (12:15 +0100)
commit 97d5db8c5cb95c7ce69ff4d36bcda2aeda143576 reverts an update to the
MMC layer that accompanied the original submission of this MMC driver this
is the right-thing-to-do in terms of the MMC spec.

Unfortunately the reversion also breaks this driver. The issue is the i.MX
controller doesn't want MMC_RSP_48 set for MMC_RESPONSE_R2.

The appropriate place to place that constraint is obviously in
drivers/imx/usdhc/imx_usdhc.c not in the shared MMC codebase. This patch
restores the logic the i.MX controller requires without breaking it for
everyone else.

Fixes: 97d5db8c5cb95c7ce69ff4d36bcda2aeda143576
Fixes: 2a82a9c95f6c06079f58d69315544a6b49cf64a4
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Cc: Jun Nie <jun.nie@linaro.org>
drivers/imx/usdhc/imx_usdhc.c

index ea96833f5a873db0cda7422d2ed3819bcfd26087..1f9550e172945ef53af8600698a1ffde0dbb80c1 100644 (file)
@@ -160,7 +160,7 @@ static int imx_usdhc_send_cmd(struct mmc_cmd *cmd)
                mixctl |= MIXCTRL_DMAEN;
        }
 
-       if (cmd->resp_type & MMC_RSP_48)
+       if (cmd->resp_type & MMC_RSP_48 && cmd->resp_type != MMC_RESPONSE_R2)
                xfertype |= XFERTYPE_RSPTYP_48;
        else if (cmd->resp_type & MMC_RSP_136)
                xfertype |= XFERTYPE_RSPTYP_136;