mirror of
https://github.com/torvalds/linux.git
synced 2026-04-20 07:43:57 -04:00
The wording in the current documentation is a little strong. The intention was not to fix any particular interrupt as wakeup capable but leave those details to the device. It wasn't intended to enforce any rules as what can be or can't be a wakeup interrupt. Soften the wording to not mandate that the 'wakeup-source' property be used, and clarify what it means when an interrupt is marked (or not marked) for wakeup. Link: https://lore.kernel.org/all/ZYAjxxHcCOgDVMTQ@bogus/ Link: https://lore.kernel.org/all/CAL_Jsq+MYwOG40X26cYmO9EkZ9xqWrXDi03MaRfxnV-+VGkXWQ@mail.gmail.com/ Signed-off-by: Mark Hasemeyer <markhas@chromium.org> Link: https://lore.kernel.org/r/20240102140734.v4.4.I1016a45ac9e8daf8a9ebc9854ab90ec3542e7c30@changeid Signed-off-by: Rob Herring <robh@kernel.org>
74 lines
2.2 KiB
Plaintext
74 lines
2.2 KiB
Plaintext
Specifying wakeup capability for devices
|
|
============================================
|
|
|
|
Any device nodes
|
|
----------------
|
|
Nodes that describe devices which have wakeup capability may contain a
|
|
"wakeup-source" boolean property.
|
|
|
|
If the device is marked as a wakeup-source, interrupt wake capability depends
|
|
on the device specific "interrupt-names" property. If no interrupts are labeled
|
|
as wake capable, then it is up to the device to determine which interrupts can
|
|
wake the system.
|
|
|
|
However if a device has a dedicated interrupt as the wakeup source, then it
|
|
needs to specify/identify it using a device specific interrupt name. In such
|
|
cases only that interrupt can be used as a wakeup interrupt.
|
|
|
|
While various legacy interrupt names exist, new devices should use "wakeup" as
|
|
the canonical interrupt name.
|
|
|
|
List of legacy properties and respective binding document
|
|
---------------------------------------------------------
|
|
|
|
1. "gpio-key,wakeup" Documentation/devicetree/bindings/input/gpio-keys{,-polled}.txt
|
|
2. "has-tpo" Documentation/devicetree/bindings/rtc/rtc-opal.txt
|
|
3. "linux,wakeup" Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
|
|
Documentation/devicetree/bindings/mfd/tc3589x.txt
|
|
Documentation/devicetree/bindings/input/touchscreen/ads7846.txt
|
|
4. "linux,keypad-wakeup" Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt
|
|
5. "linux,input-wakeup" Documentation/devicetree/bindings/input/samsung-keypad.txt
|
|
6. "nvidia,wakeup-source" Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt
|
|
|
|
Examples
|
|
--------
|
|
|
|
1. With "wakeup" interrupt name
|
|
|
|
device@10000 {
|
|
compatible = "vendor,device-id";
|
|
reg = <0x10000 0x1000>;
|
|
interrupts = <0 19 4>, <0 21 4>, <0 22 4>;
|
|
interrupt-names = "ack", "err", "wakeup";
|
|
wakeup-source;
|
|
};
|
|
|
|
2. Without "wakeup" interrupt name
|
|
|
|
embedded-controller {
|
|
compatible = "google,cros-ec-i2c";
|
|
reg = <0x1e>;
|
|
interrupts = <6 0>;
|
|
interrupt-parent = <&gpx1>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&ec_irq>;
|
|
wakeup-source;
|
|
};
|
|
|
|
3. Without interrupts
|
|
|
|
gpio_keys {
|
|
compatible = "gpio-keys";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
button@1 {
|
|
debounce-interval = <50>;
|
|
wakeup-source;
|
|
linux,code = <116>;
|
|
label = "POWER";
|
|
gpios = <&iofpga_gpio0 0 0x4>;
|
|
};
|
|
[....]
|
|
};
|