1# Copyright (c) 2014-2015 Wind River Systems, Inc.
2# Copyright (c) 2016 Intel Corporation
3# SPDX-License-Identifier: Apache-2.0
4
5menu "Power Management"
6
7config HAS_PM
8	bool
9	help
10	  This option must be selected by SoCs that provide PM hooks, that is,
11	  calls to configure low-power states.
12
13config PM
14	bool "System Power Management"
15	depends on SYS_CLOCK_EXISTS && HAS_PM
16	help
17	  This option enables the board to implement extra power management
18	  policies whenever the kernel becomes idle. The kernel informs the
19	  power management subsystem of the number of ticks until the next kernel
20	  timer is due to expire.
21
22rsource "policy/Kconfig"
23
24if PM
25
26module = PM
27module-str = System Power Management
28source "subsys/logging/Kconfig.template.log_config"
29
30config PM_STATS
31	bool "System Power Management Stats"
32	depends on STATS
33	help
34	  Enable System Power Management Stats.
35
36config PM_S2RAM
37	bool "Suspend-to-RAM (S2RAM)"
38	depends on ARCH_HAS_SUSPEND_TO_RAM
39	help
40	  This option enables suspend-to-RAM (S2RAM).
41
42config PM_S2RAM_CUSTOM_MARKING
43	bool "Use custom marking functions"
44	depends on PM_S2RAM
45	help
46	  By default a magic word in RAM is used to mark entering suspend-to-RAM. Enabling
47	  this option allows custom implementation of functions which handle the marking.
48
49config PM_NEED_ALL_DEVICES_IDLE
50	bool "System Low Power Mode Needs All Devices Idle"
51	depends on PM_DEVICE && !SMP
52	help
53	  When this option is enabled, check that no devices are busy before
54	  entering into system low power mode.
55
56endif # PM
57
58config PM_DEVICE
59	bool "Device Power Management"
60	help
61	  This option enables the device power management interface.  The
62	  interface implemented by device drivers are called by the power
63	  management subsystem. This allows device drivers to do any
64	  necessary power management operations like turning off
65	  device clocks and peripherals. Device drivers may also save
66	  and restore states in these hook functions.
67
68if PM_DEVICE
69
70module = PM_DEVICE
71module-str = Device Power Management
72source "subsys/logging/Kconfig.template.log_config"
73
74config PM_DEVICE_POWER_DOMAIN
75	bool "Power domain"
76	depends on PM_DEVICE
77	default y
78	help
79	  Enable support for Power Domain. With power domain enabled,
80	  devices that depend on a domain will be notified when this
81	  domain is suspended or resumed.
82
83config PM_DEVICE_POWER_DOMAIN_DYNAMIC
84	bool "Dynamically bind devices to a Power Domain"
85	depends on PM_DEVICE_POWER_DOMAIN && DEVICE_DEPS_DYNAMIC
86	help
87	  Enable support for dynamically bind devices to a Power Domain.
88
89config PM_DEVICE_POWER_DOMAIN_DYNAMIC_NUM
90	int "Number of devices that can dynamically be bind to a Power Domain"
91	depends on PM_DEVICE_POWER_DOMAIN_DYNAMIC
92	default 1
93	help
94	  The number of devices that can dynamically be bind to a Power Domain.
95
96config PM_DEVICE_RUNTIME
97	bool "Runtime Device Power Management"
98	select EVENTS
99	help
100	  Enable Runtime Power Management to save power. With device runtime PM
101	  enabled, devices can be suspended or resumed based on the device
102	  usage even while the CPU or system is running.
103
104config PM_DEVICE_RUNTIME_EXCLUSIVE
105	depends on PM_DEVICE_RUNTIME
106	bool "[DEPRECATED] Use only on Runtime Power Management on system suspend / resume"
107	select DEPRECATED
108	help
109	  On system suspend / resume do not trigger the Device PM hooks but
110	  only rely on Runtime PM to manage the devices power states.
111
112config PM_DEVICE_SHELL
113	bool "Device Power Management shell"
114	depends on SHELL
115	help
116	  Enable the device power management shell, for triggering device power
117	  management events through the shell interface.
118
119config PM_DEVICE_SYSTEM_MANAGED
120	bool "System-Managed Device Power Management"
121	default y if !PM_DEVICE_RUNTIME_EXCLUSIVE && !PM_DEVICE_RUNTIME
122	help
123	  This option enables the system-managed device power
124	  management.  The power management subsystem will suspend
125	  devices before entering a low power state. Conversely, after
126	  the core wakes up from low power mode all suspended devices
127	  are resumed.
128
129
130endif # PM_DEVICE
131
132endmenu
133