Loading drivers/usb/gadget/u_bam_data.c +29 −8 Original line number Diff line number Diff line Loading @@ -594,14 +594,20 @@ static void bam_data_endless_tx_complete(struct usb_ep *ep, static void bam_data_start_endless_rx(struct bam_data_port *port) { struct bam_data_ch_info *d = &port->data_ch; struct usb_ep *ep; unsigned long flags; int status; spin_lock_irqsave(&port->port_lock, flags); if (!port->port_usb) { spin_unlock_irqrestore(&port->port_lock, flags); return; } ep = port->port_usb->out; spin_unlock_irqrestore(&port->port_lock, flags); pr_debug("%s: enqueue\n", __func__); status = usb_ep_queue(port->port_usb->out, d->rx_req, GFP_ATOMIC); status = usb_ep_queue(ep, d->rx_req, GFP_ATOMIC); if (status) pr_err("error enqueuing transfer, %d\n", status); } Loading @@ -609,13 +615,20 @@ static void bam_data_start_endless_rx(struct bam_data_port *port) static void bam_data_start_endless_tx(struct bam_data_port *port) { struct bam_data_ch_info *d = &port->data_ch; struct usb_ep *ep; unsigned long flags; int status; if (!port->port_usb) spin_lock_irqsave(&port->port_lock, flags); if (!port->port_usb) { spin_unlock_irqrestore(&port->port_lock, flags); return; } ep = port->port_usb->in; spin_unlock_irqrestore(&port->port_lock, flags); pr_debug("%s: enqueue\n", __func__); status = usb_ep_queue(port->port_usb->in, d->tx_req, GFP_ATOMIC); status = usb_ep_queue(ep, d->tx_req, GFP_ATOMIC); if (status) pr_err("error enqueuing transfer, %d\n", status); } Loading @@ -623,11 +636,12 @@ static void bam_data_start_endless_tx(struct bam_data_port *port) static void bam_data_stop_endless_rx(struct bam_data_port *port) { struct bam_data_ch_info *d = &port->data_ch; unsigned long flags; int status; spin_lock(&port->port_lock); spin_lock_irqsave(&port->port_lock, flags); if (!port->port_usb) { spin_unlock(&port->port_lock); spin_unlock_irqrestore(&port->port_lock, flags); return; } Loading @@ -636,18 +650,25 @@ static void bam_data_stop_endless_rx(struct bam_data_port *port) if (status) pr_err("%s: error dequeuing transfer, %d\n", __func__, status); spin_unlock(&port->port_lock); spin_unlock_irqrestore(&port->port_lock, flags); } static void bam_data_stop_endless_tx(struct bam_data_port *port) { struct bam_data_ch_info *d = &port->data_ch; struct usb_ep *ep; unsigned long flags; int status; if (!port->port_usb) spin_lock_irqsave(&port->port_lock, flags); if (!port->port_usb) { spin_unlock_irqrestore(&port->port_lock, flags); return; } ep = port->port_usb->in; spin_unlock_irqrestore(&port->port_lock, flags); pr_debug("%s: dequeue\n", __func__); status = usb_ep_dequeue(port->port_usb->in, d->tx_req); status = usb_ep_dequeue(ep, d->tx_req); if (status) pr_err("%s: error dequeuing transfer, %d\n", __func__, status); } Loading Loading
drivers/usb/gadget/u_bam_data.c +29 −8 Original line number Diff line number Diff line Loading @@ -594,14 +594,20 @@ static void bam_data_endless_tx_complete(struct usb_ep *ep, static void bam_data_start_endless_rx(struct bam_data_port *port) { struct bam_data_ch_info *d = &port->data_ch; struct usb_ep *ep; unsigned long flags; int status; spin_lock_irqsave(&port->port_lock, flags); if (!port->port_usb) { spin_unlock_irqrestore(&port->port_lock, flags); return; } ep = port->port_usb->out; spin_unlock_irqrestore(&port->port_lock, flags); pr_debug("%s: enqueue\n", __func__); status = usb_ep_queue(port->port_usb->out, d->rx_req, GFP_ATOMIC); status = usb_ep_queue(ep, d->rx_req, GFP_ATOMIC); if (status) pr_err("error enqueuing transfer, %d\n", status); } Loading @@ -609,13 +615,20 @@ static void bam_data_start_endless_rx(struct bam_data_port *port) static void bam_data_start_endless_tx(struct bam_data_port *port) { struct bam_data_ch_info *d = &port->data_ch; struct usb_ep *ep; unsigned long flags; int status; if (!port->port_usb) spin_lock_irqsave(&port->port_lock, flags); if (!port->port_usb) { spin_unlock_irqrestore(&port->port_lock, flags); return; } ep = port->port_usb->in; spin_unlock_irqrestore(&port->port_lock, flags); pr_debug("%s: enqueue\n", __func__); status = usb_ep_queue(port->port_usb->in, d->tx_req, GFP_ATOMIC); status = usb_ep_queue(ep, d->tx_req, GFP_ATOMIC); if (status) pr_err("error enqueuing transfer, %d\n", status); } Loading @@ -623,11 +636,12 @@ static void bam_data_start_endless_tx(struct bam_data_port *port) static void bam_data_stop_endless_rx(struct bam_data_port *port) { struct bam_data_ch_info *d = &port->data_ch; unsigned long flags; int status; spin_lock(&port->port_lock); spin_lock_irqsave(&port->port_lock, flags); if (!port->port_usb) { spin_unlock(&port->port_lock); spin_unlock_irqrestore(&port->port_lock, flags); return; } Loading @@ -636,18 +650,25 @@ static void bam_data_stop_endless_rx(struct bam_data_port *port) if (status) pr_err("%s: error dequeuing transfer, %d\n", __func__, status); spin_unlock(&port->port_lock); spin_unlock_irqrestore(&port->port_lock, flags); } static void bam_data_stop_endless_tx(struct bam_data_port *port) { struct bam_data_ch_info *d = &port->data_ch; struct usb_ep *ep; unsigned long flags; int status; if (!port->port_usb) spin_lock_irqsave(&port->port_lock, flags); if (!port->port_usb) { spin_unlock_irqrestore(&port->port_lock, flags); return; } ep = port->port_usb->in; spin_unlock_irqrestore(&port->port_lock, flags); pr_debug("%s: dequeue\n", __func__); status = usb_ep_dequeue(port->port_usb->in, d->tx_req); status = usb_ep_dequeue(ep, d->tx_req); if (status) pr_err("%s: error dequeuing transfer, %d\n", __func__, status); } Loading