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>
This commit is contained in:
Chandana Kishori Chiluveru 2018-06-28 11:52:24 +05:30 • committed by Jack Pham
commit f34a46e4b4

View file

@ -2600,10 +2600,6 @@ static int gsi_update_function_bind_params(struct f_gsi *gsi,
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);
@ -2640,7 +2636,6 @@ static int gsi_update_function_bind_params(struct f_gsi *gsi,
info->cdc_eth_desc->iMACAddress = status;
}
skip_string_id_alloc:
if (info->ctrl_desc)
info->ctrl_desc->bInterfaceNumber = gsi->ctrl_id;