NVIDIA: SAUCE: usb: gadget: xudc: Avoid skipping clear feature

We skip ClearFeature(ENDPOINT_HALT) for endpoints which are not halted
in previous codes. That will cause sequence number mismatching.
According to 9.4.5 in USB3.2 Revision 1.1 specification, we should
always reinitialize data sequence and set stream state machine to
disabled.

http://nvbugs/5104500

Signed-off-by: haotienh <haotienh@nvidia.com>
Reviewed-by: Henry Lin <henryl@nvidia.com>
Reviewed-by: EJ Hsu <ejh@nvidia.com>
Reviewed-by: WK Tsai <wtsai@nvidia.com>
Reviewed-by: Wayne Chang <waynec@nvidia.com>
Signed-off-by: Vishwaroop A <va@nvidia.com>
Acked-by: Noah Wager <noah.wager@canonical.com>
Acked-by: Jacob Martin <jacob.martin@canonical.com>
Signed-off-by: Noah Wager <noah.wager@canonical.com>
This commit is contained in:
haotienh
2025-04-09 02:49:58 +00:00
committed by Noah Wager
parent 4f5f9f0e5e
commit e422044e67
+1 -7
View File
@@ -2,7 +2,7 @@
/*
* NVIDIA Tegra XUSB device mode controller
*
* SPDX-FileCopyrightText: Copyright (c) 2013-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-FileCopyrightText: Copyright (c) 2013-2025, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* Copyright (c) 2015, Google Inc.
*/
@@ -1568,12 +1568,6 @@ static int __tegra_xudc_ep_set_halt(struct tegra_xudc_ep *ep, bool halt)
return 0;
}
if (!!(xudc_readl(xudc, EP_HALT) & BIT(ep->index)) == halt) {
dev_dbg(xudc->dev, "EP %u already %s\n", ep->index,
halt ? "halted" : "not halted");
return 0;
}
if (halt) {
ep_halt(xudc, ep->index);
} else {