Though card didn't support HPI,someone could use the send_hpi_cmd().
Then maybe didn't work fine.
Because card->ext_csd.hpi_cmd didn't set.
So if card didn't support hpi, return the waring message.

And CMD12's flags is MMC_RSP_R1B.

Signed-off-by: Jaehoon Chung <[email protected]>
Signed-off-by: Kyungmin Park <[email protected]>
---
 drivers/mmc/core/mmc_ops.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
index 4d41fa9..395f944 100644
--- a/drivers/mmc/core/mmc_ops.c
+++ b/drivers/mmc/core/mmc_ops.c
@@ -556,9 +556,15 @@ int mmc_send_hpi_cmd(struct mmc_card *card, u32 *status)
        unsigned int flags;
        int err;
 
+       if (!card->ext_csd.hpi) {
+               pr_waring("%s: Card didn't support HPI command\n",
+                               mmc_hostname(card->host));
+               return -EINVAL;
+       }
+
        opcode = card->ext_csd.hpi_cmd;
        if (opcode == MMC_STOP_TRANSMISSION)
-               flags = MMC_RSP_R1 | MMC_CMD_AC;
+               flags = MMC_RSP_R1B | MMC_CMD_AC;
        else if (opcode == MMC_SEND_STATUS)
                flags = MMC_RSP_R1 | MMC_CMD_AC;
 
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to