usb: gsi: Allocate strings IDs for functions on every bind
Currently gsi driver calling usb_string_id() from bind() callbacks
to allocate string IDs for functions and then store that ID in the
appropriate descriptors and string table. This string_id will cleared
from composite driver in unbind path. During composition switch when
bind happens its checking previously allocated string_id for functions
and doesn't allocating again a new staring_id.
This will cause incorrect string_id assignment to usb functions and
USB CV interface descriptor test failing with no strings for
some compositions.
Hence fix this issue by allocating string_ids upon every function bind.
Change-Id: Icce114a770a13658614fc990e60670ef23044ba1
Signed-off-by: Chandana Kishori Chiluveru <cchiluve@codeaurora.org>
diff --git a/drivers/usb/gadget/function/f_gsi.c b/drivers/usb/gadget/function/f_gsi.c
index a038839..febe0a4 100644
--- a/drivers/usb/gadget/function/f_gsi.c
+++ b/drivers/usb/gadget/function/f_gsi.c
@@ -2580,10 +2580,6 @@
struct usb_function *f = &gsi->function;
int status;
- /* maybe allocate device-global string IDs */
- if (info->string_defs[0].id != 0)
- goto skip_string_id_alloc;
-
if (info->ctrl_str_idx >= 0 && info->ctrl_desc) {
/* ctrl interface label */
status = usb_string_id(cdev);
@@ -2620,7 +2616,6 @@
info->cdc_eth_desc->iMACAddress = status;
}
-skip_string_id_alloc:
if (info->ctrl_desc)
info->ctrl_desc->bInterfaceNumber = gsi->ctrl_id;