Loading drivers/usb/gadget/function/f_cdev.c +3 −0 Original line number Diff line number Diff line Loading @@ -970,6 +970,9 @@ static void usb_cser_unbind(struct usb_configuration *c, struct usb_function *f) { struct f_cdev *port = func_to_port(f); /* Reset string id */ cser_string_defs[0].id = 0; usb_free_all_descriptors(f); usb_cser_free_req(port->port_usb.notify, port->port_usb.notify_req); } Loading drivers/usb/gadget/function/f_gsi.c +7 −0 Original line number Diff line number Diff line Loading @@ -3359,6 +3359,13 @@ static void gsi_unbind(struct usb_configuration *c, struct usb_function *f) drain_workqueue(gsi->d_port.ipa_usb_wq); ipa_usb_deinit_teth_prot((enum ipa_usb_teth_prot)gsi->prot_id); /* Reset string ids */ rndis_gsi_string_defs[0].id = 0; ecm_gsi_string_defs[0].id = 0; rmnet_gsi_string_defs[0].id = 0; mbim_gsi_string_defs[0].id = 0; qdss_gsi_string_defs[0].id = 0; skip_ipa_dinit: if (gsi->prot_id == USB_PROT_RNDIS_IPA) { gsi->d_port.sm_state = STATE_UNINITIALIZED; Loading drivers/usb/gadget/function/f_qdss.c +19 −11 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ * f_qdss.c -- QDSS function Driver * * Copyright (c) 2012-2018, 2020, The Linux Foundation. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. Loading Loading @@ -423,11 +422,13 @@ static int qdss_bind(struct usb_configuration *c, struct usb_function *f) qdss_data_intf_desc.bInterfaceNumber = iface; qdss->data_iface_id = iface; if (!qdss_string_defs[QDSS_DATA_IDX].id) { id = usb_string_id(c->cdev); if (id < 0) return id; qdss_string_defs[QDSS_DATA_IDX].id = id; qdss_data_intf_desc.iInterface = id; } if (qdss->debug_inface_enabled) { /* Allocate ctrl I/F */ Loading @@ -438,12 +439,15 @@ static int qdss_bind(struct usb_configuration *c, struct usb_function *f) } qdss_ctrl_intf_desc.bInterfaceNumber = iface; qdss->ctrl_iface_id = iface; if (!qdss_string_defs[QDSS_CTRL_IDX].id) { id = usb_string_id(c->cdev); if (id < 0) return id; qdss_string_defs[QDSS_CTRL_IDX].id = id; qdss_ctrl_intf_desc.iInterface = id; } } /* for non-accelerated path keep tx fifo size 1k */ if (!strcmp(qdss->ch.name, USB_QDSS_CH_MDM)) Loading Loading @@ -526,6 +530,10 @@ static void qdss_unbind(struct usb_configuration *c, struct usb_function *f) flush_workqueue(qdss->wq); /* Reset string ids */ qdss_string_defs[QDSS_DATA_IDX].id = 0; qdss_string_defs[QDSS_CTRL_IDX].id = 0; qdss->debug_inface_enabled = 0; clear_eps(f); Loading Loading
drivers/usb/gadget/function/f_cdev.c +3 −0 Original line number Diff line number Diff line Loading @@ -970,6 +970,9 @@ static void usb_cser_unbind(struct usb_configuration *c, struct usb_function *f) { struct f_cdev *port = func_to_port(f); /* Reset string id */ cser_string_defs[0].id = 0; usb_free_all_descriptors(f); usb_cser_free_req(port->port_usb.notify, port->port_usb.notify_req); } Loading
drivers/usb/gadget/function/f_gsi.c +7 −0 Original line number Diff line number Diff line Loading @@ -3359,6 +3359,13 @@ static void gsi_unbind(struct usb_configuration *c, struct usb_function *f) drain_workqueue(gsi->d_port.ipa_usb_wq); ipa_usb_deinit_teth_prot((enum ipa_usb_teth_prot)gsi->prot_id); /* Reset string ids */ rndis_gsi_string_defs[0].id = 0; ecm_gsi_string_defs[0].id = 0; rmnet_gsi_string_defs[0].id = 0; mbim_gsi_string_defs[0].id = 0; qdss_gsi_string_defs[0].id = 0; skip_ipa_dinit: if (gsi->prot_id == USB_PROT_RNDIS_IPA) { gsi->d_port.sm_state = STATE_UNINITIALIZED; Loading
drivers/usb/gadget/function/f_qdss.c +19 −11 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ * f_qdss.c -- QDSS function Driver * * Copyright (c) 2012-2018, 2020, The Linux Foundation. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. Loading Loading @@ -423,11 +422,13 @@ static int qdss_bind(struct usb_configuration *c, struct usb_function *f) qdss_data_intf_desc.bInterfaceNumber = iface; qdss->data_iface_id = iface; if (!qdss_string_defs[QDSS_DATA_IDX].id) { id = usb_string_id(c->cdev); if (id < 0) return id; qdss_string_defs[QDSS_DATA_IDX].id = id; qdss_data_intf_desc.iInterface = id; } if (qdss->debug_inface_enabled) { /* Allocate ctrl I/F */ Loading @@ -438,12 +439,15 @@ static int qdss_bind(struct usb_configuration *c, struct usb_function *f) } qdss_ctrl_intf_desc.bInterfaceNumber = iface; qdss->ctrl_iface_id = iface; if (!qdss_string_defs[QDSS_CTRL_IDX].id) { id = usb_string_id(c->cdev); if (id < 0) return id; qdss_string_defs[QDSS_CTRL_IDX].id = id; qdss_ctrl_intf_desc.iInterface = id; } } /* for non-accelerated path keep tx fifo size 1k */ if (!strcmp(qdss->ch.name, USB_QDSS_CH_MDM)) Loading Loading @@ -526,6 +530,10 @@ static void qdss_unbind(struct usb_configuration *c, struct usb_function *f) flush_workqueue(qdss->wq); /* Reset string ids */ qdss_string_defs[QDSS_DATA_IDX].id = 0; qdss_string_defs[QDSS_CTRL_IDX].id = 0; qdss->debug_inface_enabled = 0; clear_eps(f); Loading