mmc_test: add test case control
authorPierre Ossman <drzeus@drzeus.cx>
Sat, 24 May 2008 20:36:31 +0000 (22:36 +0200)
committerPierre Ossman <drzeus@drzeus.cx>
Tue, 15 Jul 2008 12:14:40 +0000 (14:14 +0200)
Add the ability to run just a single test case by writing the test
case number into the sysfs "test" file.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
drivers/mmc/card/mmc_test.c

index ffadee549a414cd99a8f3a5c5db71f3554d019c8..371d922d9ee2ec376e0ce4fe4b025d34421cba7b 100644 (file)
@@ -743,7 +743,7 @@ static const struct mmc_test_case mmc_test_cases[] = {
 
 static struct mutex mmc_test_lock;
 
-static void mmc_test_run(struct mmc_test_card *test)
+static void mmc_test_run(struct mmc_test_card *test, int testcase)
 {
        int i, ret;
 
@@ -753,6 +753,9 @@ static void mmc_test_run(struct mmc_test_card *test)
        mmc_claim_host(test->card->host);
 
        for (i = 0;i < ARRAY_SIZE(mmc_test_cases);i++) {
+               if (testcase && ((i + 1) != testcase))
+                       continue;
+
                printk(KERN_INFO "%s: Test case %d. %s...\n",
                        mmc_hostname(test->card->host), i + 1,
                        mmc_test_cases[i].name);
@@ -824,9 +827,12 @@ static ssize_t mmc_test_store(struct device *dev,
 {
        struct mmc_card *card;
        struct mmc_test_card *test;
+       int testcase;
 
        card = container_of(dev, struct mmc_card, dev);
 
+       testcase = simple_strtol(buf, NULL, 10);
+
        test = kzalloc(sizeof(struct mmc_test_card), GFP_KERNEL);
        if (!test)
                return -ENOMEM;
@@ -836,7 +842,7 @@ static ssize_t mmc_test_store(struct device *dev,
        test->buffer = kzalloc(BUFFER_SIZE, GFP_KERNEL);
        if (test->buffer) {
                mutex_lock(&mmc_test_lock);
-               mmc_test_run(test);
+               mmc_test_run(test, testcase);
                mutex_unlock(&mmc_test_lock);
        }