[U-Boot] [PATCH] usb: ums: wait for usb cable connection before enter ums mode

Marek Vasut marex at denx.de
Mon Jan 13 12:14:26 CET 2014


On Monday, January 13, 2014 at 10:18:51 AM, Przemyslaw Marczak wrote:
> Hello everyone,
> 
> On 01/07/2014 03:08 PM, Przemyslaw Marczak wrote:
> > Before this change ums mode can not be entered when device
> > was using the same usb port for usb/uart communication.
> > Switching USB cable from UART to USB always causes ums exit.
> > 
> > Signed-off-by: Przemyslaw Marczak <p.marczak at samsung.com>
> > 
> > ---
> > 
> >   common/cmd_usb_mass_storage.c |   24 ++++++++++++++++++++++++
> >   include/usb_mass_storage.h    |    3 +++
> >   2 files changed, 27 insertions(+)
> > 
> > diff --git a/common/cmd_usb_mass_storage.c
> > b/common/cmd_usb_mass_storage.c index 99487f4..5f557d5 100644
> > --- a/common/cmd_usb_mass_storage.c
> > +++ b/common/cmd_usb_mass_storage.c
> > @@ -42,6 +42,30 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
> > 
> >   	g_dnl_register("ums");
> > 
> > +	/* Timeout unit: seconds */
> > +	int cable_ready_timeout = UMS_CABLE_READY_TIMEOUT;
> > +
> > +	if (!usb_cable_connected()) {
> > +		puts("Please connect USB cable.\n");
> > +
> > +		while (!usb_cable_connected()) {
> > +			if (ctrlc()) {
> > +				puts("\rCTRL+C - Operation aborted.\n");
> > +				goto exit;
> > +			}
> > +			if (!cable_ready_timeout) {
> > +				puts("\rUSB cable not detected.\n" \
> > +				     "Command exit.\n");
> > +				goto exit;
> > +			}
> > +
> > +			printf("\rAuto exit in: %.2d s.", cable_ready_timeout);
> > +			mdelay(1000);
> > +			cable_ready_timeout--;
> > +		}
> > +		puts("\r\n");
> > +	}
> > +
> > 
> >   	while (1) {
> >   	
> >   		usb_gadget_handle_interrupts();
> > 
> > diff --git a/include/usb_mass_storage.h b/include/usb_mass_storage.h
> > index 9df3adc..058dcf1 100644
> > --- a/include/usb_mass_storage.h
> > +++ b/include/usb_mass_storage.h
> > @@ -20,6 +20,9 @@
> > 
> >   #define UMS_NUM_SECTORS		0
> >   #endif
> > 
> > +/* Wait at maximum 60 seconds for cable connection */
> > +#define UMS_CABLE_READY_TIMEOUT	60
> > +
> > 
> >   struct ums {
> >   
> >   	int (*read_sector)(struct ums *ums_dev,
> >   	
> >   			   ulong start, lbaint_t blkcnt, void *buf);
> 
> I was send some very useful fix to the ums. It is required for users who
> are using the same usb port for USB and UART purposes. Without this fix
> such users just can't use ums because it will always exit to prompt when
> user change the cable.

Can you please share the schematic of such a cable in public? How does this 
"sharing" of USB and UART work? I am very curious here :-)

> So I have few questions...
> Marek, could you review this patch?

On it!

> And what about the release, are you going to send pull request before
> the release?
> If not, then is it possible to apply this patch directly to
> u-boot/master by Tom Rini?

PR will happen once I am through the load of patches in my mailbox.


More information about the U-Boot mailing list