From: Greg Kroah-Hartman Date: Mon, 8 Nov 2021 07:09:20 +0000 (+0100) Subject: 5.15-stable patches X-Git-Tag: v4.4.292~37 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=de2a44cd674135146139a80a71f251a0610cd5a7;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: usb-ehci-handshake-cmd_run-instead-of-sts_halt.patch --- diff --git a/queue-5.15/series b/queue-5.15/series index 36cb9e67a04..cedac7bfc5b 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -1,2 +1,3 @@ kvm-x86-avoid-warning-with-wbitwise-instead-of-logical.patch revert-x86-kvm-fix-vcpu-id-indexed-array-sizes.patch +usb-ehci-handshake-cmd_run-instead-of-sts_halt.patch diff --git a/queue-5.15/usb-ehci-handshake-cmd_run-instead-of-sts_halt.patch b/queue-5.15/usb-ehci-handshake-cmd_run-instead-of-sts_halt.patch new file mode 100644 index 00000000000..ef62d88cf13 --- /dev/null +++ b/queue-5.15/usb-ehci-handshake-cmd_run-instead-of-sts_halt.patch @@ -0,0 +1,71 @@ +From 7f2d73788d9067fd4f677ac5f60ffd25945af7af Mon Sep 17 00:00:00 2001 +From: Neal Liu +Date: Fri, 10 Sep 2021 15:36:19 +0800 +Subject: usb: ehci: handshake CMD_RUN instead of STS_HALT + +From: Neal Liu + +commit 7f2d73788d9067fd4f677ac5f60ffd25945af7af upstream. + +For Aspeed, HCHalted status depends on not only Run/Stop but also +ASS/PSS status. +Handshake CMD_RUN on startup instead. + +Tested-by: Tao Ren +Reviewed-by: Tao Ren +Acked-by: Alan Stern +Signed-off-by: Neal Liu +Link: https://lore.kernel.org/r/20210910073619.26095-1-neal_liu@aspeedtech.com +Cc: Joel Stanley +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/host/ehci-hcd.c | 11 ++++++++++- + drivers/usb/host/ehci-platform.c | 6 ++++++ + drivers/usb/host/ehci.h | 1 + + 3 files changed, 17 insertions(+), 1 deletion(-) + +--- a/drivers/usb/host/ehci-hcd.c ++++ b/drivers/usb/host/ehci-hcd.c +@@ -635,7 +635,16 @@ static int ehci_run (struct usb_hcd *hcd + /* Wait until HC become operational */ + ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */ + msleep(5); +- rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT, 0, 100 * 1000); ++ ++ /* For Aspeed, STS_HALT also depends on ASS/PSS status. ++ * Check CMD_RUN instead. ++ */ ++ if (ehci->is_aspeed) ++ rc = ehci_handshake(ehci, &ehci->regs->command, CMD_RUN, ++ 1, 100 * 1000); ++ else ++ rc = ehci_handshake(ehci, &ehci->regs->status, STS_HALT, ++ 0, 100 * 1000); + + up_write(&ehci_cf_port_reset_rwsem); + +--- a/drivers/usb/host/ehci-platform.c ++++ b/drivers/usb/host/ehci-platform.c +@@ -297,6 +297,12 @@ static int ehci_platform_probe(struct pl + "has-transaction-translator")) + hcd->has_tt = 1; + ++ if (of_device_is_compatible(dev->dev.of_node, ++ "aspeed,ast2500-ehci") || ++ of_device_is_compatible(dev->dev.of_node, ++ "aspeed,ast2600-ehci")) ++ ehci->is_aspeed = 1; ++ + if (soc_device_match(quirk_poll_match)) + priv->quirk_poll = true; + +--- a/drivers/usb/host/ehci.h ++++ b/drivers/usb/host/ehci.h +@@ -219,6 +219,7 @@ struct ehci_hcd { /* one per controlle + unsigned need_oc_pp_cycle:1; /* MPC834X port power */ + unsigned imx28_write_fix:1; /* For Freescale i.MX28 */ + unsigned spurious_oc:1; ++ unsigned is_aspeed:1; + + /* required for usb32 quirk */ + #define OHCI_CTRL_HCFS (3 << 6)