[U-Boot] [PATCH 09/14] usb: ums: support multiple controllers using controller_index
Tom Rini
trini at konsulko.com
Tue May 16 19:31:58 UTC 2017
On Tue, May 16, 2017 at 08:16:29PM +0800, yinbo.zhu wrote:
> 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>
> Acked-by: Lukasz Majewski <l.majewski at samsung.com>
> ---
> cmd/usb_mass_storage.c | 2 +-
> drivers/usb/gadget/f_mass_storage.c | 11 +++++++++--
> include/usb_mass_storage.h | 2 +-
> 3 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c
> index 86398fc..139b537 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);
> 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..27ca5fe 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;
> @@ -2402,10 +2403,14 @@ static void handle_exception(struct fsg_common *common)
>
> /*-------------------------------------------------------------------------*/
>
> -int fsg_main_thread(void *common_)
> +int fsg_main_thread(unsigned int controller_index)
> {
> int ret;
> struct fsg_common *common = the_fsg_common;
> +
> + /* update the controller_index */
> + common->controller_index = controller_index;
> +
> /* The main loop */
> do {
> if (exception_in_progress(common)) {
> @@ -2476,6 +2481,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 +2776,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;
>
> diff --git a/include/usb_mass_storage.h b/include/usb_mass_storage.h
> index 8229f62..f21cc7a 100644
> --- a/include/usb_mass_storage.h
> +++ b/include/usb_mass_storage.h
> @@ -28,6 +28,6 @@ struct ums {
>
> int fsg_init(struct ums *ums_devs, int count);
> void fsg_cleanup(void);
> -int fsg_main_thread(void *);
> +int fsg_main_thread(unsigned int);
> int fsg_add(struct usb_configuration *c);
> #endif /* __USB_MASS_STORAGE_H__ */
Lukasz?
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170516/b71a4db6/attachment.sig>
More information about the U-Boot
mailing list