]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
usb: host: xhci-plat: allow upper layers to signal power loss
authorThéo Lebrun <theo.lebrun@bootlin.com>
Wed, 5 Feb 2025 17:36:53 +0000 (18:36 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 14 Mar 2025 08:18:02 +0000 (09:18 +0100)
Now that xhci_resume() exposes a power_lost boolean argument, expose
that to all xhci-plat implementations. They are free to set it from
wherever they want:
 - Their own resume() callback.
 - The xhci_plat_priv::resume_quirk() callback.

Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Link: https://lore.kernel.org/r/20250205-s2r-cdns-v7-8-13658a271c3c@bootlin.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-plat.c
drivers/usb/host/xhci-plat.h

index 7c2d7c4e601188ab721fd22c338456ca8100240b..3155e3a842da9a979f29e5cad18a3b18d70cfdab 100644 (file)
@@ -482,6 +482,7 @@ static int xhci_plat_suspend(struct device *dev)
 static int xhci_plat_resume_common(struct device *dev, bool power_lost)
 {
        struct usb_hcd  *hcd = dev_get_drvdata(dev);
+       struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd);
        struct xhci_hcd *xhci = hcd_to_xhci(hcd);
        int ret;
 
@@ -501,7 +502,7 @@ static int xhci_plat_resume_common(struct device *dev, bool power_lost)
        if (ret)
                goto disable_clks;
 
-       ret = xhci_resume(xhci, power_lost, false);
+       ret = xhci_resume(xhci, power_lost || priv->power_lost, false);
        if (ret)
                goto disable_clks;
 
index 6475130eac4b38061ea038ad14b00a48f269d4e0..fe4f95e690fa69a60ea8c7671cda41634ab86e80 100644 (file)
@@ -15,6 +15,7 @@ struct usb_hcd;
 struct xhci_plat_priv {
        const char *firmware_name;
        unsigned long long quirks;
+       bool power_lost;
        void (*plat_start)(struct usb_hcd *);
        int (*init_quirk)(struct usb_hcd *);
        int (*suspend_quirk)(struct usb_hcd *);