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 <[email protected]>
---
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
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 <[email protected]>
Acked-by: Peter Chen <[email protected]>
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
>
--
Thanks,
Peter Chen