[U-Boot] [PATCH 1/3] usb: ums: support multiple controllers using controller_index

Rajesh Bhagat rajesh.bhagat at nxp.com
Wed Jun 1 06:03:47 CEST 2016



> -----Original Message-----
> From: Lukasz Majewski [mailto:l.majewski at samsung.com]
> Sent: Tuesday, May 31, 2016 8:22 PM
> To: Rajat Srivastava <rajat.srivastava at nxp.com>
> Cc: u-boot at lists.denx.de; sjg at chromium.org; marex at denx.de;
> albert.u.boot at aribaud.net; prabhakar at freescale.com; york sun
> <york.sun at nxp.com>; Mingkai Hu <mingkai.hu at nxp.com>; Rajesh Bhagat
> <rajesh.bhagat at nxp.com>; michal.simek at xilinx.com; felipe.balbi at linux.intel.com
> Subject: Re: [PATCH 1/3] usb: ums: support multiple controllers using
> controller_index
> 
> Hi Rajat,
> 
> > From: Rajesh Bhagat <rajesh.bhagat at nxp.com>
> >
> > Adds a new field in fsg_common namely controller_index to support
> > multiple controllers usb gadget support.
> >
> > Signed-off-by: Rajat Srivastava <rajat.srivastava at nxp.com>
> > Signed-off-by: Rajesh Bhagat <rajesh.bhagat at nxp.com>
> > ---
> >  cmd/usb_mass_storage.c              |  2 +-
> >  drivers/usb/gadget/f_mass_storage.c | 10 +++++++++-
> >  2 files changed, 10 insertions(+), 2 deletions(-)
> >
> > diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c index
> > b05913a..1c955f8 100644
> > --- a/cmd/usb_mass_storage.c
> > +++ b/cmd/usb_mass_storage.c
> > @@ -214,7 +214,7 @@ int do_usb_mass_storage(cmd_tbl_t *cmdtp, int
> > flag, while (1) {
> >  		usb_gadget_handle_interrupts(controller_index);
> >
> > -		rc = fsg_main_thread(NULL);
> > +		rc = fsg_main_thread(&controller_index);
> 

Hello Lukasz,

> controller_index is defined as unsigned int.
> 
> However, fsg_main_thread(void *common_) accepts void * as its parameter.
> 
> Could you adjust it to accept unsigned int index parameter?
> 

Will take care in v2. 

> >  		if (rc) {
> >  			/* Check I/O error */
> >  			if (rc == -EIO)
> > diff --git a/drivers/usb/gadget/f_mass_storage.c
> > b/drivers/usb/gadget/f_mass_storage.c index 1ecb92a..cc3e4af 100644
> > --- a/drivers/usb/gadget/f_mass_storage.c
> > +++ b/drivers/usb/gadget/f_mass_storage.c
> > @@ -362,6 +362,7 @@ struct fsg_common {
> >  	char inquiry_string[8 + 16 + 4 + 1];
> >
> >  	struct kref		ref;
> > +	unsigned int controller_index;
> >  };
> >
> >  struct fsg_config {
> > @@ -691,7 +692,7 @@ static int sleep_thread(struct fsg_common *common)
> >  			k = 0;
> >  		}
> >
> > -		usb_gadget_handle_interrupts(0);
> > +
> > usb_gadget_handle_interrupts(common->controller_index); }
> >  	common->thread_wakeup_needed = 0;
> >  	return rc;
> > @@ -2406,6 +2407,11 @@ int fsg_main_thread(void *common_)  {
> >  	int ret;
> >  	struct fsg_common	*common = the_fsg_common;
> > +
> > +	/* update the controller_index */
> > +	if (common_)
> 
> Replace common_ with unsigned int index
> 

Will take care in v2.

> > +		common->controller_index = *(unsigned int *)common_;
> > +
> >  	/* The main loop */
> >  	do {
> >  		if (exception_in_progress(common)) { @@ -2476,6 +2482,7 @@ static
> > struct fsg_common *fsg_common_init(struct fsg_common *common,
> >  	common->ops = NULL;
> >  	common->private_data = NULL;
> > +	common->controller_index = 0;
> >
> >  	common->gadget = gadget;
> >  	common->ep0 = gadget->ep0;
> > @@ -2770,6 +2777,7 @@ int fsg_add(struct usb_configuration *c)
> >
> >  	fsg_common->ops = NULL;
> >  	fsg_common->private_data = NULL;
> > +	fsg_common->controller_index = 0;
> >
> >  	the_fsg_common = fsg_common;
> >
> 
> 
> 
> --
> Best regards,
> 
> Lukasz Majewski
> 
> Samsung R&D Institute Poland (SRPOL) | Linux Platform Group


More information about the U-Boot mailing list