usb:cdnsp: remove TRB_FLUSH_ENDPOINT command
authorPawel Laszczak <pawell@cadence.com>
Thu, 26 Oct 2023 07:37:37 +0000 (09:37 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Oct 2023 10:56:37 +0000 (12:56 +0200)
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>
Link: https://lore.kernel.org/r/20231026073737.165450-1-pawell@cadence.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/cdns3/cdnsp-debug.h
drivers/usb/cdns3/cdnsp-gadget.c
drivers/usb/cdns3/cdnsp-gadget.h
drivers/usb/cdns3/cdnsp-ring.c

index f0ca865cce2a095660b817f632deb57c89646784..ad617b7455b9c3e26bb1dee98fccbb6ad0c11e2e 100644 (file)
@@ -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),
index 4b67749edb997490b3d6a37991fc76f807c36145..4a3f0f95825698f0524cace5c06bfcf27f763149 100644 (file)
@@ -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;
index e1b5801fdddf8c5cb76d081f3fb1cfb505ffa36e..dbee6f08527773d6cdebb9f26748e2cea871197d 100644 (file)
@@ -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);
index 07f6068342d4604720cdf79d849919d0f34e6b97..af981778382df71d6c109e3a2f7a83b0b3fb2d6a 100644 (file)
@@ -2123,19 +2123,6 @@ ep_stopped:
        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;