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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user