1 Specifying wakeup capability for devices 1 Specifying wakeup capability for devices 2 ============================================ 2 ============================================ 3 3 4 Any device nodes 4 Any device nodes 5 ---------------- 5 ---------------- 6 Nodes that describe devices which have wakeup 6 Nodes that describe devices which have wakeup capability may contain a 7 "wakeup-source" boolean property. 7 "wakeup-source" boolean property. 8 8 9 If the device is marked as a wakeup-source, in 9 If the device is marked as a wakeup-source, interrupt wake capability depends 10 on the device specific "interrupt-names" prope 10 on the device specific "interrupt-names" property. If no interrupts are labeled 11 as wake capable, then it is up to the device t 11 as wake capable, then it is up to the device to determine which interrupts can 12 wake the system. 12 wake the system. 13 13 14 However if a device has a dedicated interrupt 14 However if a device has a dedicated interrupt as the wakeup source, then it 15 needs to specify/identify it using a device sp 15 needs to specify/identify it using a device specific interrupt name. In such 16 cases only that interrupt can be used as a wak 16 cases only that interrupt can be used as a wakeup interrupt. 17 17 18 While various legacy interrupt names exist, ne 18 While various legacy interrupt names exist, new devices should use "wakeup" as 19 the canonical interrupt name. 19 the canonical interrupt name. 20 20 21 List of legacy properties and respective bindi 21 List of legacy properties and respective binding document 22 ---------------------------------------------- 22 --------------------------------------------------------- 23 23 24 1. "gpio-key,wakeup" Documentation/ 24 1. "gpio-key,wakeup" Documentation/devicetree/bindings/input/gpio-keys{,-polled}.txt 25 2. "has-tpo" Documentation/ 25 2. "has-tpo" Documentation/devicetree/bindings/rtc/rtc-opal.txt 26 3. "linux,wakeup" Documentation/ 26 3. "linux,wakeup" Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt 27 Documentation/ 27 Documentation/devicetree/bindings/mfd/tc3589x.txt 28 Documentation/ 28 Documentation/devicetree/bindings/input/touchscreen/ti,ads7843.yaml 29 4. "linux,keypad-wakeup" Documentation/ 29 4. "linux,keypad-wakeup" Documentation/devicetree/bindings/input/qcom,pm8921-keypad.yaml 30 5. "linux,input-wakeup" Documentation/ 30 5. "linux,input-wakeup" Documentation/devicetree/bindings/input/samsung,s3c6410-keypad.yaml 31 6. "nvidia,wakeup-source" Documentation/ 31 6. "nvidia,wakeup-source" Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt 32 32 33 Examples 33 Examples 34 -------- 34 -------- 35 35 36 1. With "wakeup" interrupt name 36 1. With "wakeup" interrupt name 37 37 38 device@10000 { 38 device@10000 { 39 compatible = "vendor,devi 39 compatible = "vendor,device-id"; 40 reg = <0x10000 0x1 40 reg = <0x10000 0x1000>; 41 interrupts = <0 19 4>, <0 41 interrupts = <0 19 4>, <0 21 4>, <0 22 4>; 42 interrupt-names = "ack", "err" 42 interrupt-names = "ack", "err", "wakeup"; 43 wakeup-source; 43 wakeup-source; 44 }; 44 }; 45 45 46 2. Without "wakeup" interrupt name 46 2. Without "wakeup" interrupt name 47 47 48 embedded-controller { 48 embedded-controller { 49 compatible = "google,cros-ec-i 49 compatible = "google,cros-ec-i2c"; 50 reg = <0x1e>; 50 reg = <0x1e>; 51 interrupts = <6 0>; 51 interrupts = <6 0>; 52 interrupt-parent = <&gpx1>; 52 interrupt-parent = <&gpx1>; 53 pinctrl-names = "default"; 53 pinctrl-names = "default"; 54 pinctrl-0 = <&ec_irq>; 54 pinctrl-0 = <&ec_irq>; 55 wakeup-source; 55 wakeup-source; 56 }; 56 }; 57 57 58 3. Without interrupts 58 3. Without interrupts 59 59 60 gpio_keys { 60 gpio_keys { 61 compatible = "gpio-keys"; 61 compatible = "gpio-keys"; 62 #address-cells = <1>; 62 #address-cells = <1>; 63 #size-cells = <0>; 63 #size-cells = <0>; 64 64 65 button@1 { 65 button@1 { 66 debounce-interval = <5 66 debounce-interval = <50>; 67 wakeup-source; 67 wakeup-source; 68 linux,code = <116>; 68 linux,code = <116>; 69 label = "POWER"; 69 label = "POWER"; 70 gpios = <&iofpga_gpio0 70 gpios = <&iofpga_gpio0 0 0x4>; 71 }; 71 }; 72 [....] 72 [....] 73 }; 73 };
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.