Please ignore this email. This patch has been already accepted. It has been send due to some server email issue. >-----Original Message----- >From: Pawel Laszczak <pawell@xxxxxxxxxxx> >Sent: Thursday, October 12, 2023 6:46 AM >To: peter.chen@xxxxxxxxxx >Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx; linux- >kernel@xxxxxxxxxxxxxxx; Pawel Laszczak <pawell@xxxxxxxxxxx> >Subject: [PATCH] usb:cdnsp: remove TRB_FLUSH_ENDPOINT command > >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@xxxxxxxxxxx> >--- > 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