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-...@ti.com>
---
 drivers/usb/musb/musb_debugfs.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
index 179d885..7119639 100644
--- a/drivers/usb/musb/musb_debugfs.c
+++ b/drivers/usb/musb/musb_debugfs.c
@@ -189,6 +189,12 @@ static ssize_t musb_test_mode_write(struct file *file,
        u8                      test = 0;
        char                    buf[18];
 
+       test = musb_readb(musb->mregs, MUSB_TESTMODE);
+       if (test) {
+               dev_err(musb->controller, "Error: test mode is running\n");
+               return -EINVAL;
+       }
+
        memset(buf, 0x00, sizeof(buf));
 
        if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count)))
-- 
1.8.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to