On 11/4/2018 11:11 PM, Felipe Balbi wrote:
> Both flags are used for the same purpose in dwc3: appending an extra
> TRB at the end to deal with controller requirements. By combining both
> flags into one, we make it clear that the situation is the same and
> that they should be treated equally.
>
> Signed-off-by: Felipe Balbi <felipe.ba...@linux.intel.com>
> ---
>  drivers/usb/dwc3/core.h   |  7 +++----
>  drivers/usb/dwc3/gadget.c | 17 ++++++++---------
>  2 files changed, 11 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index 5bfb62533e0f..4872cba8699b 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -847,11 +847,11 @@ struct dwc3_hwparams {
>   * @epnum: endpoint number to which this request refers
>   * @trb: pointer to struct dwc3_trb
>   * @trb_dma: DMA address of @trb
> - * @unaligned: true for OUT endpoints with length not divisible by maxp
> + * @needs_extra_trb: true when request needs one extra TRB (either due to ZLP
> + *   or unaligned OUT)
>   * @direction: IN or OUT direction flag
>   * @mapped: true when request has been dma-mapped
>   * @started: request is started
> - * @zero: wants a ZLP
>   */
>  struct dwc3_request {
>       struct usb_request      request;
> @@ -867,11 +867,10 @@ struct dwc3_request {
>       struct dwc3_trb         *trb;
>       dma_addr_t              trb_dma;
>  
> -     unsigned                unaligned:1;
> +     unsigned                needs_extra_trb:1;
>       unsigned                direction:1;
>       unsigned                mapped:1;
>       unsigned                started:1;
> -     unsigned                zero:1;
>  };
>  
>  /*
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index 2de1a3971a26..502a85707e65 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -1064,7 +1064,7 @@ static void dwc3_prepare_one_trb_sg(struct dwc3_ep *dep,
>                       struct dwc3     *dwc = dep->dwc;
>                       struct dwc3_trb *trb;
>  
> -                     req->unaligned = true;
> +                     req->needs_extra_trb = true;
>  
>                       /* prepare normal TRB */
>                       dwc3_prepare_one_trb(dep, req, true, i);
> @@ -1108,7 +1108,7 @@ static void dwc3_prepare_one_trb_linear(struct dwc3_ep 
> *dep,
>               struct dwc3     *dwc = dep->dwc;
>               struct dwc3_trb *trb;
>  
> -             req->unaligned = true;
> +             req->needs_extra_trb = true;
>  
>               /* prepare normal TRB */
>               dwc3_prepare_one_trb(dep, req, true, 0);
> @@ -1124,7 +1124,7 @@ static void dwc3_prepare_one_trb_linear(struct dwc3_ep 
> *dep,
>               struct dwc3     *dwc = dep->dwc;
>               struct dwc3_trb *trb;
>  
> -             req->zero = true;
> +             req->needs_extra_trb = true;
>  
>               /* prepare normal TRB */
>               dwc3_prepare_one_trb(dep, req, true, 0);
> @@ -1406,7 +1406,7 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
>                                       dwc3_ep_inc_deq(dep);
>                               }
>  
> -                             if (r->unaligned || r->zero) {
> +                             if (r->needs_extra_trb) {
>                                       trb = r->trb + r->num_pending_sgs + 1;
>                                       trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
>                                       dwc3_ep_inc_deq(dep);
> @@ -1417,7 +1417,7 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep,
>                               trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
>                               dwc3_ep_inc_deq(dep);
>  
> -                             if (r->unaligned || r->zero) {
> +                             if (r->needs_extra_trb) {
>                                       trb = r->trb + 1;
>                                       trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
>                                       dwc3_ep_inc_deq(dep);
> @@ -2250,7 +2250,7 @@ static int dwc3_gadget_ep_reclaim_completed_trb(struct 
> dwc3_ep *dep,
>        * with one TRB pending in the ring. We need to manually clear HWO bit
>        * from that TRB.
>        */
> -     if ((req->zero || req->unaligned) && !(trb->ctrl & DWC3_TRB_CTRL_CHN)) {
> +     if (req->needs_extra_trb && !(trb->ctrl & DWC3_TRB_CTRL_CNH)) {

DWC3_TRB_CTRL_CNH -> DWC3_TRB_CTRL_CHN

Thinh

Reply via email to