usb: musb: only set test mode once
[firefly-linux-kernel-4.4.55.git] / drivers / usb / musb / musb_debugfs.c
index 78a283e9ce40b112a44fc3ab22e5b43bc75e5685..04382ec31d3f07adf5a19d21d3cca49c5a1b85ca 100644 (file)
@@ -191,9 +191,16 @@ static ssize_t musb_test_mode_write(struct file *file,
 {
        struct seq_file         *s = file->private_data;
        struct musb             *musb = s->private;
-       u8                      test = 0;
+       u8                      test;
        char                    buf[18];
 
+       test = musb_readb(musb->mregs, MUSB_TESTMODE);
+       if (test) {
+               dev_err(musb->controller, "Error: test mode is already set. "
+                       "Please do USB Bus Reset to start a new test.\n");
+               return count;
+       }
+
        memset(buf, 0x00, sizeof(buf));
 
        if (copy_from_user(buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))