mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 15:11:48 -04:00
Merge "usb: gadget: Don't perform start xfer with USB BAM endpoint"
This commit is contained in:
commit
7adaf062b8
5 changed files with 25 additions and 6 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// 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>
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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"
|
||||
|
||||
|
|
@ -374,8 +375,10 @@ 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)
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* 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
|
||||
|
|
@ -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);
|
||||
|
|
@ -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…
Reference in a new issue