Loading drivers/usb/dwc3/dwc3-msm.c +25 −0 Original line number Diff line number Diff line Loading @@ -1746,6 +1746,11 @@ int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op) switch (op) { case GSI_EP_OP_PREPARE_TRBS: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } request = (struct usb_gsi_request *)op_data; ret = gsi_prepare_trbs(ep, request); break; Loading @@ -1754,12 +1759,22 @@ int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op) gsi_free_trbs(ep, request); break; case GSI_EP_OP_CONFIG: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } request = (struct usb_gsi_request *)op_data; spin_lock_irqsave(&dwc->lock, flags); gsi_configure_ep(ep, request); spin_unlock_irqrestore(&dwc->lock, flags); break; case GSI_EP_OP_STARTXFER: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } request = (struct usb_gsi_request *)op_data; spin_lock_irqsave(&dwc->lock, flags); ret = gsi_startxfer_for_ep(ep, request); Loading @@ -1773,6 +1788,11 @@ int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op) gsi_store_ringbase_dbl_info(ep, request); break; case GSI_EP_OP_ENABLE_GSI: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } gsi_enable(ep); break; case GSI_EP_OP_GET_CH_INFO: Loading @@ -1780,6 +1800,11 @@ int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op) gsi_get_channel_info(ep, ch_info); break; case GSI_EP_OP_RING_DB: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } request = (struct usb_gsi_request *)op_data; gsi_ring_db(ep, request); break; Loading drivers/usb/gadget/function/f_gsi.c +10 −8 Original line number Diff line number Diff line Loading @@ -839,8 +839,10 @@ static int gsi_ep_enable(struct f_gsi *gsi) return ret; log_event_dbg("%s: Enable IN ep", __func__); usb_gsi_ep_op(gsi->d_port.in_ep, ret = usb_gsi_ep_op(gsi->d_port.in_ep, &gsi->d_port.in_request, GSI_EP_OP_CONFIG); if (ret) return ret; } if (gsi->d_port.out_ep && !gsi->d_port.out_ep->desc) { Loading @@ -850,8 +852,13 @@ static int gsi_ep_enable(struct f_gsi *gsi) return ret; log_event_dbg("%s: Enable OUT ep", __func__); usb_gsi_ep_op(gsi->d_port.out_ep, ret = usb_gsi_ep_op(gsi->d_port.out_ep, &gsi->d_port.out_request, GSI_EP_OP_CONFIG); if (ret) { usb_gsi_ep_op(gsi->d_port.in_ep, &gsi->d_port.in_request, GSI_EP_OP_DISABLE); return ret; } } return 0; Loading Loading @@ -2593,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); Loading Loading @@ -2633,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; Loading Loading
drivers/usb/dwc3/dwc3-msm.c +25 −0 Original line number Diff line number Diff line Loading @@ -1746,6 +1746,11 @@ int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op) switch (op) { case GSI_EP_OP_PREPARE_TRBS: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } request = (struct usb_gsi_request *)op_data; ret = gsi_prepare_trbs(ep, request); break; Loading @@ -1754,12 +1759,22 @@ int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op) gsi_free_trbs(ep, request); break; case GSI_EP_OP_CONFIG: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } request = (struct usb_gsi_request *)op_data; spin_lock_irqsave(&dwc->lock, flags); gsi_configure_ep(ep, request); spin_unlock_irqrestore(&dwc->lock, flags); break; case GSI_EP_OP_STARTXFER: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } request = (struct usb_gsi_request *)op_data; spin_lock_irqsave(&dwc->lock, flags); ret = gsi_startxfer_for_ep(ep, request); Loading @@ -1773,6 +1788,11 @@ int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op) gsi_store_ringbase_dbl_info(ep, request); break; case GSI_EP_OP_ENABLE_GSI: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } gsi_enable(ep); break; case GSI_EP_OP_GET_CH_INFO: Loading @@ -1780,6 +1800,11 @@ int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op) gsi_get_channel_info(ep, ch_info); break; case GSI_EP_OP_RING_DB: if (!dwc->pullups_connected) { dbg_log_string("No Pullup\n"); return -ESHUTDOWN; } request = (struct usb_gsi_request *)op_data; gsi_ring_db(ep, request); break; Loading
drivers/usb/gadget/function/f_gsi.c +10 −8 Original line number Diff line number Diff line Loading @@ -839,8 +839,10 @@ static int gsi_ep_enable(struct f_gsi *gsi) return ret; log_event_dbg("%s: Enable IN ep", __func__); usb_gsi_ep_op(gsi->d_port.in_ep, ret = usb_gsi_ep_op(gsi->d_port.in_ep, &gsi->d_port.in_request, GSI_EP_OP_CONFIG); if (ret) return ret; } if (gsi->d_port.out_ep && !gsi->d_port.out_ep->desc) { Loading @@ -850,8 +852,13 @@ static int gsi_ep_enable(struct f_gsi *gsi) return ret; log_event_dbg("%s: Enable OUT ep", __func__); usb_gsi_ep_op(gsi->d_port.out_ep, ret = usb_gsi_ep_op(gsi->d_port.out_ep, &gsi->d_port.out_request, GSI_EP_OP_CONFIG); if (ret) { usb_gsi_ep_op(gsi->d_port.in_ep, &gsi->d_port.in_request, GSI_EP_OP_DISABLE); return ret; } } return 0; Loading Loading @@ -2593,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); Loading Loading @@ -2633,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; Loading