Felipe, > -----Original Message----- > From: Balbi, Felipe > Sent: Tuesday, March 24, 2015 11:54 AM > To: Liu, Bin > Cc: Balbi, Felipe; linux-usb@xxxxxxxxxxxxxxx > Subject: Re: [PATCH] usb: musb: only set test mode once > > On Tue, Mar 24, 2015 at 11:52:04AM -0500, Liu, Bin wrote: > > Felipe, > > > > > -----Original Message----- > > > From: Balbi, Felipe > > > Sent: Tuesday, March 24, 2015 11:31 AM > > > To: Liu, Bin > > > Cc: linux-usb@xxxxxxxxxxxxxxx; Balbi, Felipe > > > Subject: Re: [PATCH] usb: musb: only set test mode once > > > > > > On Fri, Mar 20, 2015 at 04:49:58PM -0500, Bin Liu wrote: > > > > 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@xxxxxx> > > > > --- > > > > 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 78a283e..cd0c381 100644 > > > > --- a/drivers/usb/musb/musb_debugfs.c > > > > +++ b/drivers/usb/musb/musb_debugfs.c > > > > @@ -194,6 +194,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"); > > > > > > with this message, user doesn't really know exactly what to do. > > > Perhaps mention that a USB Bus Reset is needed to get the thing out of test > mode? > > > > Ok, will change it. How about only print the error message when the > > new test mode is different from the running one, and silently do > > nothing if the new test mode is the same. Something like > > > > if (test) { > > if (new test is different) { > > dev_err(...); > > return -EINVAL; > > } else { > > return 0; > > } > > } > > USB2 spec says you *must* go through a bus reset in order to get out of > testmode. So if you want to change test_j to test_k, you must first bus reset. Yes, this will be handled in if branch - dev_err(): dev_err(musb->controller, "Error: test mode is already running. " "Please do USB Bus Reset to start a new test\n"); Regards, -Bin. > > -- > balbi -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html