Message ID | 20231026073737.165450-1-pawell@cadence.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 2998874736bca1031ca84b0a3235a2cd09dfa426 |
Headers | show |
Series | usb:cdnsp: remove TRB_FLUSH_ENDPOINT command | expand |
On 23-10-26 09:37:37, Pawel Laszczak wrote: > Patch removes TRB_FLUSH_ENDPOINT command from driver. > This command is not supported by controller and > USBSSP returns TRB Error completion code for it. > > Signed-off-by: Pawel Laszczak <pawell@cadence.com> Acked-by: Peter Chen <peter.chen@kernel.org> Peter > --- > drivers/usb/cdns3/cdnsp-debug.h | 3 --- > drivers/usb/cdns3/cdnsp-gadget.c | 6 +----- > drivers/usb/cdns3/cdnsp-gadget.h | 5 ----- > drivers/usb/cdns3/cdnsp-ring.c | 24 ------------------------ > 4 files changed, 1 insertion(+), 37 deletions(-) > > diff --git a/drivers/usb/cdns3/cdnsp-debug.h b/drivers/usb/cdns3/cdnsp-debug.h > index f0ca865cce2a..ad617b7455b9 100644 > --- a/drivers/usb/cdns3/cdnsp-debug.h > +++ b/drivers/usb/cdns3/cdnsp-debug.h > @@ -131,8 +131,6 @@ static inline const char *cdnsp_trb_type_string(u8 type) > return "Endpoint Not ready"; > case TRB_HALT_ENDPOINT: > return "Halt Endpoint"; > - case TRB_FLUSH_ENDPOINT: > - return "FLush Endpoint"; > default: > return "UNKNOWN"; > } > @@ -328,7 +326,6 @@ static inline const char *cdnsp_decode_trb(char *str, size_t size, u32 field0, > break; > case TRB_RESET_EP: > case TRB_HALT_ENDPOINT: > - case TRB_FLUSH_ENDPOINT: > ret = snprintf(str, size, > "%s: ep%d%s(%d) ctx %08x%08x slot %ld flags %c", > cdnsp_trb_type_string(type), > diff --git a/drivers/usb/cdns3/cdnsp-gadget.c b/drivers/usb/cdns3/cdnsp-gadget.c > index 4b67749edb99..4a3f0f958256 100644 > --- a/drivers/usb/cdns3/cdnsp-gadget.c > +++ b/drivers/usb/cdns3/cdnsp-gadget.c > @@ -1024,10 +1024,8 @@ static int cdnsp_gadget_ep_disable(struct usb_ep *ep) > pep->ep_state |= EP_DIS_IN_RROGRESS; > > /* Endpoint was unconfigured by Reset Device command. */ > - if (!(pep->ep_state & EP_UNCONFIGURED)) { > + if (!(pep->ep_state & EP_UNCONFIGURED)) > cdnsp_cmd_stop_ep(pdev, pep); > - cdnsp_cmd_flush_ep(pdev, pep); > - } > > /* Remove all queued USB requests. */ > while (!list_empty(&pep->pending_list)) { > @@ -1424,8 +1422,6 @@ static void cdnsp_stop(struct cdnsp_device *pdev) > { > u32 temp; > > - cdnsp_cmd_flush_ep(pdev, &pdev->eps[0]); > - > /* Remove internally queued request for ep0. */ > if (!list_empty(&pdev->eps[0].pending_list)) { > struct cdnsp_request *req; > diff --git a/drivers/usb/cdns3/cdnsp-gadget.h b/drivers/usb/cdns3/cdnsp-gadget.h > index e1b5801fdddf..dbee6f085277 100644 > --- a/drivers/usb/cdns3/cdnsp-gadget.h > +++ b/drivers/usb/cdns3/cdnsp-gadget.h > @@ -1128,8 +1128,6 @@ union cdnsp_trb { > #define TRB_HALT_ENDPOINT 54 > /* Doorbell Overflow Event. */ > #define TRB_DRB_OVERFLOW 57 > -/* Flush Endpoint Command. */ > -#define TRB_FLUSH_ENDPOINT 58 > > #define TRB_TYPE_LINK(x) (((x) & TRB_TYPE_BITMASK) == TRB_TYPE(TRB_LINK)) > #define TRB_TYPE_LINK_LE32(x) (((x) & cpu_to_le32(TRB_TYPE_BITMASK)) == \ > @@ -1539,8 +1537,6 @@ void cdnsp_queue_configure_endpoint(struct cdnsp_device *pdev, > void cdnsp_queue_reset_ep(struct cdnsp_device *pdev, unsigned int ep_index); > void cdnsp_queue_halt_endpoint(struct cdnsp_device *pdev, > unsigned int ep_index); > -void cdnsp_queue_flush_endpoint(struct cdnsp_device *pdev, > - unsigned int ep_index); > void cdnsp_force_header_wakeup(struct cdnsp_device *pdev, int intf_num); > void cdnsp_queue_reset_device(struct cdnsp_device *pdev); > void cdnsp_queue_new_dequeue_state(struct cdnsp_device *pdev, > @@ -1574,7 +1570,6 @@ void cdnsp_irq_reset(struct cdnsp_device *pdev); > int cdnsp_halt_endpoint(struct cdnsp_device *pdev, > struct cdnsp_ep *pep, int value); > int cdnsp_cmd_stop_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep); > -int cdnsp_cmd_flush_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep); > void cdnsp_setup_analyze(struct cdnsp_device *pdev); > int cdnsp_status_stage(struct cdnsp_device *pdev); > int cdnsp_reset_device(struct cdnsp_device *pdev); > diff --git a/drivers/usb/cdns3/cdnsp-ring.c b/drivers/usb/cdns3/cdnsp-ring.c > index 07f6068342d4..af981778382d 100644 > --- a/drivers/usb/cdns3/cdnsp-ring.c > +++ b/drivers/usb/cdns3/cdnsp-ring.c > @@ -2123,19 +2123,6 @@ int cdnsp_cmd_stop_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep) > return ret; > } > > -int cdnsp_cmd_flush_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep) > -{ > - int ret; > - > - cdnsp_queue_flush_endpoint(pdev, pep->idx); > - cdnsp_ring_cmd_db(pdev); > - ret = cdnsp_wait_for_cmd_compl(pdev); > - > - trace_cdnsp_handle_cmd_flush_ep(pep->out_ctx); > - > - return ret; > -} > - > /* > * The transfer burst count field of the isochronous TRB defines the number of > * bursts that are required to move all packets in this TD. Only SuperSpeed > @@ -2465,17 +2452,6 @@ void cdnsp_queue_halt_endpoint(struct cdnsp_device *pdev, unsigned int ep_index) > EP_ID_FOR_TRB(ep_index)); > } > > -/* > - * Queue a flush endpoint request on the command ring. > - */ > -void cdnsp_queue_flush_endpoint(struct cdnsp_device *pdev, > - unsigned int ep_index) > -{ > - cdnsp_queue_command(pdev, 0, 0, 0, TRB_TYPE(TRB_FLUSH_ENDPOINT) | > - SLOT_ID_FOR_TRB(pdev->slot_id) | > - EP_ID_FOR_TRB(ep_index)); > -} > - > void cdnsp_force_header_wakeup(struct cdnsp_device *pdev, int intf_num) > { > u32 lo, mid; > -- > 2.25.1 >
diff --git a/drivers/usb/cdns3/cdnsp-debug.h b/drivers/usb/cdns3/cdnsp-debug.h index f0ca865cce2a..ad617b7455b9 100644 --- a/drivers/usb/cdns3/cdnsp-debug.h +++ b/drivers/usb/cdns3/cdnsp-debug.h @@ -131,8 +131,6 @@ static inline const char *cdnsp_trb_type_string(u8 type) return "Endpoint Not ready"; case TRB_HALT_ENDPOINT: return "Halt Endpoint"; - case TRB_FLUSH_ENDPOINT: - return "FLush Endpoint"; default: return "UNKNOWN"; } @@ -328,7 +326,6 @@ static inline const char *cdnsp_decode_trb(char *str, size_t size, u32 field0, break; case TRB_RESET_EP: case TRB_HALT_ENDPOINT: - case TRB_FLUSH_ENDPOINT: ret = snprintf(str, size, "%s: ep%d%s(%d) ctx %08x%08x slot %ld flags %c", cdnsp_trb_type_string(type), diff --git a/drivers/usb/cdns3/cdnsp-gadget.c b/drivers/usb/cdns3/cdnsp-gadget.c index 4b67749edb99..4a3f0f958256 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.c +++ b/drivers/usb/cdns3/cdnsp-gadget.c @@ -1024,10 +1024,8 @@ static int cdnsp_gadget_ep_disable(struct usb_ep *ep) pep->ep_state |= EP_DIS_IN_RROGRESS; /* Endpoint was unconfigured by Reset Device command. */ - if (!(pep->ep_state & EP_UNCONFIGURED)) { + if (!(pep->ep_state & EP_UNCONFIGURED)) cdnsp_cmd_stop_ep(pdev, pep); - cdnsp_cmd_flush_ep(pdev, pep); - } /* Remove all queued USB requests. */ while (!list_empty(&pep->pending_list)) { @@ -1424,8 +1422,6 @@ static void cdnsp_stop(struct cdnsp_device *pdev) { u32 temp; - cdnsp_cmd_flush_ep(pdev, &pdev->eps[0]); - /* Remove internally queued request for ep0. */ if (!list_empty(&pdev->eps[0].pending_list)) { struct cdnsp_request *req; diff --git a/drivers/usb/cdns3/cdnsp-gadget.h b/drivers/usb/cdns3/cdnsp-gadget.h index e1b5801fdddf..dbee6f085277 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.h +++ b/drivers/usb/cdns3/cdnsp-gadget.h @@ -1128,8 +1128,6 @@ union cdnsp_trb { #define TRB_HALT_ENDPOINT 54 /* Doorbell Overflow Event. */ #define TRB_DRB_OVERFLOW 57 -/* Flush Endpoint Command. */ -#define TRB_FLUSH_ENDPOINT 58 #define TRB_TYPE_LINK(x) (((x) & TRB_TYPE_BITMASK) == TRB_TYPE(TRB_LINK)) #define TRB_TYPE_LINK_LE32(x) (((x) & cpu_to_le32(TRB_TYPE_BITMASK)) == \ @@ -1539,8 +1537,6 @@ void cdnsp_queue_configure_endpoint(struct cdnsp_device *pdev, void cdnsp_queue_reset_ep(struct cdnsp_device *pdev, unsigned int ep_index); void cdnsp_queue_halt_endpoint(struct cdnsp_device *pdev, unsigned int ep_index); -void cdnsp_queue_flush_endpoint(struct cdnsp_device *pdev, - unsigned int ep_index); void cdnsp_force_header_wakeup(struct cdnsp_device *pdev, int intf_num); void cdnsp_queue_reset_device(struct cdnsp_device *pdev); void cdnsp_queue_new_dequeue_state(struct cdnsp_device *pdev, @@ -1574,7 +1570,6 @@ void cdnsp_irq_reset(struct cdnsp_device *pdev); int cdnsp_halt_endpoint(struct cdnsp_device *pdev, struct cdnsp_ep *pep, int value); int cdnsp_cmd_stop_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep); -int cdnsp_cmd_flush_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep); void cdnsp_setup_analyze(struct cdnsp_device *pdev); int cdnsp_status_stage(struct cdnsp_device *pdev); int cdnsp_reset_device(struct cdnsp_device *pdev); diff --git a/drivers/usb/cdns3/cdnsp-ring.c b/drivers/usb/cdns3/cdnsp-ring.c index 07f6068342d4..af981778382d 100644 --- a/drivers/usb/cdns3/cdnsp-ring.c +++ b/drivers/usb/cdns3/cdnsp-ring.c @@ -2123,19 +2123,6 @@ int cdnsp_cmd_stop_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep) return ret; } -int cdnsp_cmd_flush_ep(struct cdnsp_device *pdev, struct cdnsp_ep *pep) -{ - int ret; - - cdnsp_queue_flush_endpoint(pdev, pep->idx); - cdnsp_ring_cmd_db(pdev); - ret = cdnsp_wait_for_cmd_compl(pdev); - - trace_cdnsp_handle_cmd_flush_ep(pep->out_ctx); - - return ret; -} - /* * The transfer burst count field of the isochronous TRB defines the number of * bursts that are required to move all packets in this TD. Only SuperSpeed @@ -2465,17 +2452,6 @@ void cdnsp_queue_halt_endpoint(struct cdnsp_device *pdev, unsigned int ep_index) EP_ID_FOR_TRB(ep_index)); } -/* - * Queue a flush endpoint request on the command ring. - */ -void cdnsp_queue_flush_endpoint(struct cdnsp_device *pdev, - unsigned int ep_index) -{ - cdnsp_queue_command(pdev, 0, 0, 0, TRB_TYPE(TRB_FLUSH_ENDPOINT) | - SLOT_ID_FOR_TRB(pdev->slot_id) | - EP_ID_FOR_TRB(ep_index)); -} - void cdnsp_force_header_wakeup(struct cdnsp_device *pdev, int intf_num) { u32 lo, mid;
Patch removes TRB_FLUSH_ENDPOINT command from driver. This command is not supported by controller and USBSSP returns TRB Error completion code for it. Signed-off-by: Pawel Laszczak <pawell@cadence.com> --- drivers/usb/cdns3/cdnsp-debug.h | 3 --- drivers/usb/cdns3/cdnsp-gadget.c | 6 +----- drivers/usb/cdns3/cdnsp-gadget.h | 5 ----- drivers/usb/cdns3/cdnsp-ring.c | 24 ------------------------ 4 files changed, 1 insertion(+), 37 deletions(-)