diff mbox

[U-Boot,v2,1/4] usb: ums: support multiple controllers using controller_index

Message ID 1465204596-6637-2-git-send-email-rajat.srivastava@nxp.com
State Superseded
Delegated to: York Sun
Headers show

Commit Message

Rajat Srivastava June 6, 2016, 9:16 a.m. UTC
From: Rajesh Bhagat <rajesh.bhagat@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@nxp.com>
Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com>
---
Changes for v2:
 - Changes type of fsg_main_thread argument to unsigned int

 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(-)

Comments

Ɓukasz Majewski June 23, 2016, 2:44 p.m. UTC | #1
Hi Rajat,

First of all, sorry for late reply. I was not in the office.

> From: Rajesh Bhagat <rajesh.bhagat@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@nxp.com>
> Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com>
> ---
> Changes for v2:
>  - Changes type of fsg_main_thread argument to unsigned int
> 
>  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 b05913a..bf80d37 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__ */

Acked-by: Lukasz Majewski <l.majewski@samsung.com>
diff mbox

Patch

diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c
index b05913a..bf80d37 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__ */