|
Jiri Slaby |
7a187a |
From: Pawel Laszczak <pawell@cadence.com>
|
|
Jiri Slaby |
7a187a |
Date: Tue, 7 Mar 2023 06:14:20 -0500
|
|
Jiri Slaby |
7a187a |
Subject: [PATCH] usb: cdnsp: Fixes issue with redundant Status Stage
|
|
Jiri Slaby |
7a187a |
References: bsc#1012628
|
|
Jiri Slaby |
7a187a |
Patch-mainline: 6.2.9
|
|
Jiri Slaby |
7a187a |
Git-commit: 5bc38d33a5a1209fd4de65101d1ae8255ea12c6e
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
commit 5bc38d33a5a1209fd4de65101d1ae8255ea12c6e upstream.
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
In some cases, driver trees to send Status Stage twice.
|
|
Jiri Slaby |
7a187a |
The first one from upper layer of gadget usb subsystem and
|
|
Jiri Slaby |
7a187a |
second time from controller driver.
|
|
Jiri Slaby |
7a187a |
This patch fixes this issue and remove tricky handling of
|
|
Jiri Slaby |
7a187a |
SET_INTERFACE from controller driver which is no longer
|
|
Jiri Slaby |
7a187a |
needed.
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
cc: <stable@vger.kernel.org>
|
|
Jiri Slaby |
7a187a |
Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
|
|
Jiri Slaby |
7a187a |
Signed-off-by: Pawel Laszczak <pawell@cadence.com>
|
|
Jiri Slaby |
7a187a |
Link: https://lore.kernel.org/r/20230307111420.376056-1-pawell@cadence.com
|
|
Jiri Slaby |
7a187a |
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Jiri Slaby |
7a187a |
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Jiri Slaby |
7a187a |
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
|
Jiri Slaby |
7a187a |
---
|
|
Jiri Slaby |
7a187a |
drivers/usb/cdns3/cdnsp-ep0.c | 19 +------------------
|
|
Jiri Slaby |
7a187a |
1 file changed, 1 insertion(+), 18 deletions(-)
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
diff --git a/drivers/usb/cdns3/cdnsp-ep0.c b/drivers/usb/cdns3/cdnsp-ep0.c
|
|
Jiri Slaby |
7a187a |
index 9b8325f8..d63d5d92 100644
|
|
Jiri Slaby |
7a187a |
--- a/drivers/usb/cdns3/cdnsp-ep0.c
|
|
Jiri Slaby |
7a187a |
+++ b/drivers/usb/cdns3/cdnsp-ep0.c
|
|
Jiri Slaby |
7a187a |
@@ -403,20 +403,6 @@ static int cdnsp_ep0_std_request(struct cdnsp_device *pdev,
|
|
Jiri Slaby |
7a187a |
case USB_REQ_SET_ISOCH_DELAY:
|
|
Jiri Slaby |
7a187a |
ret = cdnsp_ep0_set_isoch_delay(pdev, ctrl);
|
|
Jiri Slaby |
7a187a |
break;
|
|
Jiri Slaby |
7a187a |
- case USB_REQ_SET_INTERFACE:
|
|
Jiri Slaby |
7a187a |
- /*
|
|
Jiri Slaby |
7a187a |
- * Add request into pending list to block sending status stage
|
|
Jiri Slaby |
7a187a |
- * by libcomposite.
|
|
Jiri Slaby |
7a187a |
- */
|
|
Jiri Slaby |
7a187a |
- list_add_tail(&pdev->ep0_preq.list,
|
|
Jiri Slaby |
7a187a |
- &pdev->ep0_preq.pep->pending_list);
|
|
Jiri Slaby |
7a187a |
-
|
|
Jiri Slaby |
7a187a |
- ret = cdnsp_ep0_delegate_req(pdev, ctrl);
|
|
Jiri Slaby |
7a187a |
- if (ret == -EBUSY)
|
|
Jiri Slaby |
7a187a |
- ret = 0;
|
|
Jiri Slaby |
7a187a |
-
|
|
Jiri Slaby |
7a187a |
- list_del(&pdev->ep0_preq.list);
|
|
Jiri Slaby |
7a187a |
- break;
|
|
Jiri Slaby |
7a187a |
default:
|
|
Jiri Slaby |
7a187a |
ret = cdnsp_ep0_delegate_req(pdev, ctrl);
|
|
Jiri Slaby |
7a187a |
break;
|
|
Jiri Slaby |
7a187a |
@@ -474,9 +460,6 @@ void cdnsp_setup_analyze(struct cdnsp_device *pdev)
|
|
Jiri Slaby |
7a187a |
else
|
|
Jiri Slaby |
7a187a |
ret = cdnsp_ep0_delegate_req(pdev, ctrl);
|
|
Jiri Slaby |
7a187a |
|
|
Jiri Slaby |
7a187a |
- if (!len)
|
|
Jiri Slaby |
7a187a |
- pdev->ep0_stage = CDNSP_STATUS_STAGE;
|
|
Jiri Slaby |
7a187a |
-
|
|
Jiri Slaby |
7a187a |
if (ret == USB_GADGET_DELAYED_STATUS) {
|
|
Jiri Slaby |
7a187a |
trace_cdnsp_ep0_status_stage("delayed");
|
|
Jiri Slaby |
7a187a |
return;
|
|
Jiri Slaby |
7a187a |
@@ -484,6 +467,6 @@ void cdnsp_setup_analyze(struct cdnsp_device *pdev)
|
|
Jiri Slaby |
7a187a |
out:
|
|
Jiri Slaby |
7a187a |
if (ret < 0)
|
|
Jiri Slaby |
7a187a |
cdnsp_ep0_stall(pdev);
|
|
Jiri Slaby |
7a187a |
- else if (pdev->ep0_stage == CDNSP_STATUS_STAGE)
|
|
Jiri Slaby |
7a187a |
+ else if (!len && pdev->ep0_stage != CDNSP_STATUS_STAGE)
|
|
Jiri Slaby |
7a187a |
cdnsp_status_stage(pdev);
|
|
Jiri Slaby |
7a187a |
}
|
|
Jiri Slaby |
7a187a |
--
|
|
Jiri Slaby |
7a187a |
2.35.3
|
|
Jiri Slaby |
7a187a |
|