diff options
author | Al Cooper <alcooperx@gmail.com> | 2020-01-03 21:18:02 +0300 |
---|---|---|
committer | Kishon Vijay Abraham I <kishon@ti.com> | 2020-01-08 10:28:06 +0300 |
commit | f1c0db40a3ade1f1a39e5794d728f2953d817322 (patch) | |
tree | bf7b48a51f2d1c5fce0f5294c65ae997609d99a4 /drivers/phy/broadcom/phy-brcm-usb-init.h | |
parent | 6597af4e4835ec0709638d48f73c11b5c624790f (diff) | |
download | linux-f1c0db40a3ade1f1a39e5794d728f2953d817322.tar.xz |
phy: usb: Add "wake on" functionality
Add the ability to handle USB wake events from USB devices when
in S2 mode. Typically there is some additional configuration
needed to tell the USB device to generate the wake event when
suspended but this varies with the different USB device classes.
For example, on USB Ethernet dongles, ethtool should be used to
enable the magic packet wake functionality in the dongle.
NOTE: This requires that the "power/wakeup" sysfs entry for
the USB device generating the wakeup be set to "enabled".
This functionality requires a special hardware sideband path that
will trigger the AON_PM_L2 interrupt needed to wake the system from
S2 even though the USB host controllers are in IDDQ (low power state)
and most USB related clocks are shut off. For the sideband signaling
to work we need to leave the usbx_freerun clock running, but this
clock consumes very little power by design. There's a bug in the
XHCI wake hardware so only EHCI/OHCI wake is currently supported.
Signed-off-by: Al Cooper <alcooperx@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Diffstat (limited to 'drivers/phy/broadcom/phy-brcm-usb-init.h')
-rw-r--r-- | drivers/phy/broadcom/phy-brcm-usb-init.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/phy/broadcom/phy-brcm-usb-init.h b/drivers/phy/broadcom/phy-brcm-usb-init.h index f4f4f6d5d258..f473e0c51f0b 100644 --- a/drivers/phy/broadcom/phy-brcm-usb-init.h +++ b/drivers/phy/broadcom/phy-brcm-usb-init.h @@ -38,5 +38,6 @@ void brcm_usb_init_xhci(struct brcm_usb_init_params *ini); void brcm_usb_uninit_common(struct brcm_usb_init_params *ini); void brcm_usb_uninit_eohci(struct brcm_usb_init_params *ini); void brcm_usb_uninit_xhci(struct brcm_usb_init_params *ini); +void brcm_usb_wake_enable(struct brcm_usb_init_params *params, int enable); #endif /* _USB_BRCM_COMMON_INIT_H */ |