usb: musb: only set test mode once
authorBin Liu <b-liu@ti.com>
Tue, 24 Mar 2015 20:09:25 +0000 (15:09 -0500)
committerFelipe Balbi <balbi@ti.com>
Mon, 27 Apr 2015 20:51:45 +0000 (15:51 -0500)
The MUSB test mode register can only be set once, otherwise the result
is undefined.

This prevents the debugfs testmode entry to set the register more than
once which causes test failure.

Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
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)))