Merge tag 'linux-kselftest-next-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kerne...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / power / wakeup-source.txt
1 Specifying wakeup capability for devices
2 ============================================
3
4 Any device nodes
5 ----------------
6 Nodes that describe devices which has wakeup capability must contain an
7 "wakeup-source" boolean property.
8
9 Also, if device is marked as a wakeup source, then all the primary
10 interrupt(s) can be used as wakeup interrupt(s).
11
12 However if the devices have dedicated interrupt as the wakeup source
13 then they need to specify/identify the same using device specific
14 interrupt name. In such cases only that interrupt can be used as wakeup
15 interrupt.
16
17 List of legacy properties and respective binding document
18 ---------------------------------------------------------
19
20 1. "enable-sdio-wakeup"         Documentation/devicetree/bindings/mmc/mmc.txt
21 2. "gpio-key,wakeup"            Documentation/devicetree/bindings/input/gpio-keys{,-polled}.txt
22 3. "has-tpo"                    Documentation/devicetree/bindings/rtc/rtc-opal.txt
23 4. "linux,wakeup"               Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt
24                                 Documentation/devicetree/bindings/mfd/tc3589x.txt
25                                 Documentation/devicetree/bindings/input/touchscreen/ads7846.txt
26 5. "linux,keypad-wakeup"        Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt
27 6. "linux,input-wakeup"         Documentation/devicetree/bindings/input/samsung-keypad.txt
28 7. "nvidia,wakeup-source"       Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt
29
30 Examples
31 --------
32
33 1. With "wakeup" interrupt name
34
35         device@10000 {
36                 compatible      = "vendor,device-id";
37                 reg             = <0x10000 0x1000>;
38                 interrupts      = <0 19 4>, <0 21 4>, <0 22 4>;
39                 interrupt-names = "ack", "err", "wakeup";
40                 wakeup-source;
41         };
42
43 2. Without "wakeup" interrupt name
44
45         embedded-controller {
46                 compatible = "google,cros-ec-i2c";
47                 reg = <0x1e>;
48                 interrupts = <6 0>;
49                 interrupt-parent = <&gpx1>;
50                 pinctrl-names = "default";
51                 pinctrl-0 = <&ec_irq>;
52                 wakeup-source;
53         };
54
55 3. Without interrupts
56
57         gpio_keys {
58                 compatible = "gpio-keys";
59                 #address-cells = <1>;
60                 #size-cells = <0>;
61
62                 button@1 {
63                         debounce-interval = <50>;
64                         wakeup-source;
65                         linux,code = <116>;
66                         label = "POWER";
67                         gpios = <&iofpga_gpio0 0 0x4>;
68                 };
69                 [....]
70         };