mmc: mmc-test: add eMMC hardware reset test
Adrian Hunter [Mon, 29 Aug 2011 13:42:14 +0000 (16:42 +0300)]
MMC core provides a checking function that checks if the reset
has happended.  Add a test to use that function.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Chris Ball <cjb@laptop.org>

drivers/mmc/card/mmc_test.c

index 2bf229a..9cdce63 100644 (file)
@@ -2328,6 +2328,31 @@ static int mmc_test_profile_sglen_r_nonblock_perf(struct mmc_test_card *test)
        return mmc_test_rw_multiple_sg_len(test, &test_data);
 }
 
+/*
+ * eMMC hardware reset.
+ */
+static int mmc_test_hw_reset(struct mmc_test_card *test)
+{
+       struct mmc_card *card = test->card;
+       struct mmc_host *host = card->host;
+       int err;
+
+       err = mmc_hw_reset_check(host);
+       if (!err)
+               return RESULT_OK;
+
+       if (err == -ENOSYS)
+               return RESULT_FAIL;
+
+       if (err != -EOPNOTSUPP)
+               return err;
+
+       if (!mmc_can_reset(card))
+               return RESULT_UNSUP_CARD;
+
+       return RESULT_UNSUP_HOST;
+}
+
 static const struct mmc_test_case mmc_test_cases[] = {
        {
                .name = "Basic write (no data verification)",
@@ -2650,6 +2675,11 @@ static const struct mmc_test_case mmc_test_cases[] = {
                .run = mmc_test_profile_sglen_r_nonblock_perf,
                .cleanup = mmc_test_area_cleanup,
        },
+
+       {
+               .name = "eMMC hardware reset",
+               .run = mmc_test_hw_reset,
+       },
 };
 
 static DEFINE_MUTEX(mmc_test_lock);