Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c2bb36f authored by Chandana Kishori Chiluveru's avatar Chandana Kishori Chiluveru
Browse files

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: default avatarChandana Kishori Chiluveru <cchiluve@codeaurora.org>
parent d77ce925
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -2580,10 +2580,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);
@@ -2620,7 +2616,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;