| From 8c420c9fedc7815be7e71feaa2b7b6fed838ada3 Mon Sep 17 00:00:00 2001 |
| From: Mathias Nyman <mathias.nyman@linux.intel.com> |
| Date: Fri, 11 Nov 2016 15:13:28 +0200 |
| Subject: [PATCH 290/299] xhci: add helper to get the endpoint state of a |
| endpoint context |
| |
| define GET_EP_CTX_STATE() macro to get the endpoint state from a |
| pointer to a le32 enpoint context structure |
| |
| No functional changes |
| |
| Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| (cherry picked from commit 5071e6b279178f7d25e1aebd23f49f686657a5fb) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/usb/host/xhci-ring.c | 18 ++++++------------ |
| drivers/usb/host/xhci.c | 3 +-- |
| drivers/usb/host/xhci.h | 2 ++ |
| 3 files changed, 9 insertions(+), 14 deletions(-) |
| |
| --- a/drivers/usb/host/xhci-ring.c |
| +++ b/drivers/usb/host/xhci-ring.c |
| @@ -1059,8 +1059,7 @@ static void xhci_handle_cmd_set_deq(stru |
| break; |
| case COMP_CTX_STATE: |
| xhci_warn(xhci, "WARN Set TR Deq Ptr cmd failed due to incorrect slot or ep state.\n"); |
| - ep_state = le32_to_cpu(ep_ctx->ep_info); |
| - ep_state &= EP_STATE_MASK; |
| + ep_state = GET_EP_CTX_STATE(ep_ctx); |
| slot_state = le32_to_cpu(slot_ctx->dev_state); |
| slot_state = GET_SLOT_STATE(slot_state); |
| xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, |
| @@ -1819,8 +1818,7 @@ static int xhci_requires_manual_halt_cle |
| * endpoint anyway. Check if a babble halted the |
| * endpoint. |
| */ |
| - if ((ep_ctx->ep_info & cpu_to_le32(EP_STATE_MASK)) == |
| - cpu_to_le32(EP_STATE_HALTED)) |
| + if (GET_EP_CTX_STATE(ep_ctx) == EP_STATE_HALTED) |
| return 1; |
| |
| return 0; |
| @@ -2269,9 +2267,7 @@ static int handle_tx_event(struct xhci_h |
| ep = &xdev->eps[ep_index]; |
| ep_ring = xhci_dma_to_transfer_ring(ep, le64_to_cpu(event->buffer)); |
| ep_ctx = xhci_get_ep_ctx(xhci, xdev->out_ctx, ep_index); |
| - if (!ep_ring || |
| - (le32_to_cpu(ep_ctx->ep_info) & EP_STATE_MASK) == |
| - EP_STATE_DISABLED) { |
| + if (!ep_ring || GET_EP_CTX_STATE(ep_ctx) == EP_STATE_DISABLED) { |
| xhci_err(xhci, "ERROR Transfer event for disabled endpoint " |
| "or incorrect stream ring\n"); |
| xhci_err(xhci, "@%016llx %08x %08x %08x %08x\n", |
| @@ -2832,8 +2828,7 @@ static int prepare_transfer(struct xhci_ |
| return -EINVAL; |
| } |
| |
| - ret = prepare_ring(xhci, ep_ring, |
| - le32_to_cpu(ep_ctx->ep_info) & EP_STATE_MASK, |
| + ret = prepare_ring(xhci, ep_ring, GET_EP_CTX_STATE(ep_ctx), |
| num_trbs, mem_flags); |
| if (ret) |
| return ret; |
| @@ -3729,7 +3724,7 @@ int xhci_queue_isoc_tx_prepare(struct xh |
| /* Check the ring to guarantee there is enough room for the whole urb. |
| * Do not insert any td of the urb to the ring if the check failed. |
| */ |
| - ret = prepare_ring(xhci, ep_ring, le32_to_cpu(ep_ctx->ep_info) & EP_STATE_MASK, |
| + ret = prepare_ring(xhci, ep_ring, GET_EP_CTX_STATE(ep_ctx), |
| num_trbs, mem_flags); |
| if (ret) |
| return ret; |
| @@ -3742,8 +3737,7 @@ int xhci_queue_isoc_tx_prepare(struct xh |
| |
| /* Calculate the start frame and put it in urb->start_frame. */ |
| if (HCC_CFC(xhci->hcc_params) && !list_empty(&ep_ring->td_list)) { |
| - if ((le32_to_cpu(ep_ctx->ep_info) & EP_STATE_MASK) == |
| - EP_STATE_RUNNING) { |
| + if (GET_EP_CTX_STATE(ep_ctx) == EP_STATE_RUNNING) { |
| urb->start_frame = xep->next_frame_id; |
| goto skip_start_over; |
| } |
| --- a/drivers/usb/host/xhci.c |
| +++ b/drivers/usb/host/xhci.c |
| @@ -1643,8 +1643,7 @@ int xhci_drop_endpoint(struct usb_hcd *h |
| /* If the HC already knows the endpoint is disabled, |
| * or the HCD has noted it is disabled, ignore this request |
| */ |
| - if (((ep_ctx->ep_info & cpu_to_le32(EP_STATE_MASK)) == |
| - cpu_to_le32(EP_STATE_DISABLED)) || |
| + if ((GET_EP_CTX_STATE(ep_ctx) == EP_STATE_DISABLED) || |
| le32_to_cpu(ctrl_ctx->drop_flags) & |
| xhci_get_endpoint_flag(&ep->desc)) { |
| /* Do not warn when called after a usb_device_reset */ |
| --- a/drivers/usb/host/xhci.h |
| +++ b/drivers/usb/host/xhci.h |
| @@ -709,6 +709,8 @@ struct xhci_ep_ctx { |
| #define EP_STATE_HALTED 2 |
| #define EP_STATE_STOPPED 3 |
| #define EP_STATE_ERROR 4 |
| +#define GET_EP_CTX_STATE(ctx) (le32_to_cpu((ctx)->ep_info) & EP_STATE_MASK) |
| + |
| /* Mult - Max number of burtst within an interval, in EP companion desc. */ |
| #define EP_MULT(p) (((p) & 0x3) << 8) |
| #define CTX_TO_EP_MULT(p) (((p) >> 8) & 0x3) |