Loading drivers/usb/dwc3/core.h +1 −0 Original line number Diff line number Diff line Loading @@ -778,6 +778,7 @@ struct dwc3_ep { unsigned direction:1; unsigned stream_capable:1; unsigned gsi:1; unsigned int endless:1; /* For isochronous START TRANSFER workaround only */ u8 combo_num; Loading drivers/usb/dwc3/dwc3-msm.c +10 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include <linux/module.h> Loading Loading @@ -2060,6 +2060,15 @@ int msm_ep_unconfig(struct usb_ep *ep) return 0; } EXPORT_SYMBOL(msm_ep_unconfig); void msm_ep_set_endless(struct usb_ep *ep, bool set_clear) { struct dwc3_ep *dep = to_dwc3_ep(ep); dep->endless = !!set_clear; } EXPORT_SYMBOL(msm_ep_set_endless); #endif /* (CONFIG_USB_DWC3_GADGET) || (CONFIG_USB_DWC3_DUAL_ROLE) */ static void dwc3_resume_work(struct work_struct *w); Loading drivers/usb/dwc3/gadget.c +2 −2 Original line number Diff line number Diff line Loading @@ -778,8 +778,8 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action) * Issue StartTransfer here with no-op TRB so we can always rely on No * Response Update Transfer command. */ if ((usb_endpoint_xfer_bulk(desc) && !dep->stream_capable) || usb_endpoint_xfer_int(desc)) { if ((usb_endpoint_xfer_bulk(desc) && !dep->stream_capable && !dep->endless) || usb_endpoint_xfer_int(desc)) { struct dwc3_gadget_ep_cmd_params params; struct dwc3_trb *trb; dma_addr_t trb_dma; Loading drivers/usb/gadget/function/f_qdss.c +8 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ /* * f_qdss.c -- QDSS function Driver * * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include <linux/init.h> Loading @@ -11,6 +11,7 @@ #include <linux/device.h> #include <linux/usb/usb_qdss.h> #include <linux/usb/cdc.h> #include <linux/usb/dwc3-msm.h> #include "f_qdss.h" Loading Loading @@ -374,9 +375,11 @@ static void clear_eps(struct usb_function *f) qdss->port.ctrl_in->driver_data = NULL; if (qdss->port.ctrl_out) qdss->port.ctrl_out->driver_data = NULL; if (qdss->port.data) if (qdss->port.data) { msm_ep_set_endless(qdss->port.data, false); qdss->port.data->driver_data = NULL; } } static void clear_desc(struct usb_gadget *gadget, struct usb_function *f) { Loading Loading @@ -443,6 +446,9 @@ static int qdss_bind(struct usb_configuration *c, struct usb_function *f) qdss->port.data = ep; ep->driver_data = qdss; if (!strcmp(qdss->ch.name, USB_QDSS_CH_MSM)) msm_ep_set_endless(qdss->port.data, true); if (qdss->debug_inface_enabled) { ep = usb_ep_autoconfig_ss(gadget, &qdss_ss_ctrl_in_desc, &qdss_ctrl_in_ep_comp_desc); Loading include/linux/usb/dwc3-msm.h +4 −1 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2019, The Linux Foundation. All rights reserved. * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. */ #ifndef __LINUX_USB_DWC3_MSM_H Loading Loading @@ -115,6 +115,7 @@ struct usb_ep *usb_ep_autoconfig_by_name(struct usb_gadget *gadget, int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op); int msm_ep_config(struct usb_ep *ep, struct usb_request *request, u32 bam_opts); int msm_ep_unconfig(struct usb_ep *ep); void msm_ep_set_endless(struct usb_ep *ep, bool set_clear); void dwc3_tx_fifo_resize_request(struct usb_ep *ep, bool qdss_enable); int msm_data_fifo_config(struct usb_ep *ep, unsigned long addr, u32 size, u8 dst_pipe_idx); Loading @@ -136,6 +137,8 @@ static inline int msm_ep_config(struct usb_ep *ep, struct usb_request *request, { return -ENODEV; } static inline int msm_ep_unconfig(struct usb_ep *ep) { return -ENODEV; } static inline void msm_ep_set_endless(struct usb_ep *ep, bool set_clear) { } static inline void dwc3_tx_fifo_resize_request(struct usb_ep *ep, bool qdss_enable) { } Loading Loading
drivers/usb/dwc3/core.h +1 −0 Original line number Diff line number Diff line Loading @@ -778,6 +778,7 @@ struct dwc3_ep { unsigned direction:1; unsigned stream_capable:1; unsigned gsi:1; unsigned int endless:1; /* For isochronous START TRANSFER workaround only */ u8 combo_num; Loading
drivers/usb/dwc3/dwc3-msm.c +10 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include <linux/module.h> Loading Loading @@ -2060,6 +2060,15 @@ int msm_ep_unconfig(struct usb_ep *ep) return 0; } EXPORT_SYMBOL(msm_ep_unconfig); void msm_ep_set_endless(struct usb_ep *ep, bool set_clear) { struct dwc3_ep *dep = to_dwc3_ep(ep); dep->endless = !!set_clear; } EXPORT_SYMBOL(msm_ep_set_endless); #endif /* (CONFIG_USB_DWC3_GADGET) || (CONFIG_USB_DWC3_DUAL_ROLE) */ static void dwc3_resume_work(struct work_struct *w); Loading
drivers/usb/dwc3/gadget.c +2 −2 Original line number Diff line number Diff line Loading @@ -778,8 +778,8 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action) * Issue StartTransfer here with no-op TRB so we can always rely on No * Response Update Transfer command. */ if ((usb_endpoint_xfer_bulk(desc) && !dep->stream_capable) || usb_endpoint_xfer_int(desc)) { if ((usb_endpoint_xfer_bulk(desc) && !dep->stream_capable && !dep->endless) || usb_endpoint_xfer_int(desc)) { struct dwc3_gadget_ep_cmd_params params; struct dwc3_trb *trb; dma_addr_t trb_dma; Loading
drivers/usb/gadget/function/f_qdss.c +8 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ /* * f_qdss.c -- QDSS function Driver * * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #include <linux/init.h> Loading @@ -11,6 +11,7 @@ #include <linux/device.h> #include <linux/usb/usb_qdss.h> #include <linux/usb/cdc.h> #include <linux/usb/dwc3-msm.h> #include "f_qdss.h" Loading Loading @@ -374,9 +375,11 @@ static void clear_eps(struct usb_function *f) qdss->port.ctrl_in->driver_data = NULL; if (qdss->port.ctrl_out) qdss->port.ctrl_out->driver_data = NULL; if (qdss->port.data) if (qdss->port.data) { msm_ep_set_endless(qdss->port.data, false); qdss->port.data->driver_data = NULL; } } static void clear_desc(struct usb_gadget *gadget, struct usb_function *f) { Loading Loading @@ -443,6 +446,9 @@ static int qdss_bind(struct usb_configuration *c, struct usb_function *f) qdss->port.data = ep; ep->driver_data = qdss; if (!strcmp(qdss->ch.name, USB_QDSS_CH_MSM)) msm_ep_set_endless(qdss->port.data, true); if (qdss->debug_inface_enabled) { ep = usb_ep_autoconfig_ss(gadget, &qdss_ss_ctrl_in_desc, &qdss_ctrl_in_ep_comp_desc); Loading
include/linux/usb/dwc3-msm.h +4 −1 Original line number Diff line number Diff line /* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2019, The Linux Foundation. All rights reserved. * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. */ #ifndef __LINUX_USB_DWC3_MSM_H Loading Loading @@ -115,6 +115,7 @@ struct usb_ep *usb_ep_autoconfig_by_name(struct usb_gadget *gadget, int usb_gsi_ep_op(struct usb_ep *ep, void *op_data, enum gsi_ep_op op); int msm_ep_config(struct usb_ep *ep, struct usb_request *request, u32 bam_opts); int msm_ep_unconfig(struct usb_ep *ep); void msm_ep_set_endless(struct usb_ep *ep, bool set_clear); void dwc3_tx_fifo_resize_request(struct usb_ep *ep, bool qdss_enable); int msm_data_fifo_config(struct usb_ep *ep, unsigned long addr, u32 size, u8 dst_pipe_idx); Loading @@ -136,6 +137,8 @@ static inline int msm_ep_config(struct usb_ep *ep, struct usb_request *request, { return -ENODEV; } static inline int msm_ep_unconfig(struct usb_ep *ep) { return -ENODEV; } static inline void msm_ep_set_endless(struct usb_ep *ep, bool set_clear) { } static inline void dwc3_tx_fifo_resize_request(struct usb_ep *ep, bool qdss_enable) { } Loading