Commit 98c0a3ff authored by Yoshihiro Shimoda's avatar Yoshihiro Shimoda Committed by Greg Kroah-Hartman

usb: host: xhci-plat: add resume_quirk()

This patch adds resume_quirk() to do platform specific process in
resume timing.
Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 835e4241
...@@ -55,6 +55,16 @@ static int xhci_priv_init_quirk(struct usb_hcd *hcd) ...@@ -55,6 +55,16 @@ static int xhci_priv_init_quirk(struct usb_hcd *hcd)
return priv->init_quirk(hcd); return priv->init_quirk(hcd);
} }
static int xhci_priv_resume_quirk(struct usb_hcd *hcd)
{
struct xhci_plat_priv *priv = hcd_to_xhci_priv(hcd);
if (!priv->resume_quirk)
return 0;
return priv->resume_quirk(hcd);
}
static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci) static void xhci_plat_quirks(struct device *dev, struct xhci_hcd *xhci)
{ {
/* /*
...@@ -369,10 +379,15 @@ static int xhci_plat_resume(struct device *dev) ...@@ -369,10 +379,15 @@ static int xhci_plat_resume(struct device *dev)
{ {
struct usb_hcd *hcd = dev_get_drvdata(dev); struct usb_hcd *hcd = dev_get_drvdata(dev);
struct xhci_hcd *xhci = hcd_to_xhci(hcd); struct xhci_hcd *xhci = hcd_to_xhci(hcd);
int ret;
if (!device_may_wakeup(dev) && !IS_ERR(xhci->clk)) if (!device_may_wakeup(dev) && !IS_ERR(xhci->clk))
clk_prepare_enable(xhci->clk); clk_prepare_enable(xhci->clk);
ret = xhci_priv_resume_quirk(hcd);
if (ret)
return ret;
return xhci_resume(xhci, 0); return xhci_resume(xhci, 0);
} }
#endif /* CONFIG_PM_SLEEP */ #endif /* CONFIG_PM_SLEEP */
......
...@@ -17,6 +17,7 @@ struct xhci_plat_priv { ...@@ -17,6 +17,7 @@ struct xhci_plat_priv {
const char *firmware_name; const char *firmware_name;
void (*plat_start)(struct usb_hcd *); void (*plat_start)(struct usb_hcd *);
int (*init_quirk)(struct usb_hcd *); int (*init_quirk)(struct usb_hcd *);
int (*resume_quirk)(struct usb_hcd *);
}; };
#define hcd_to_xhci_priv(h) ((struct xhci_plat_priv *)hcd_to_xhci(h)->priv) #define hcd_to_xhci_priv(h) ((struct xhci_plat_priv *)hcd_to_xhci(h)->priv)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment