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_SHELL
105	bool "Device Power Management shell"
106	depends on SHELL
107	help
108	  Enable the device power management shell, for triggering device power
109	  management events through the shell interface.
110
111config PM_DEVICE_SYSTEM_MANAGED
112	bool "System-Managed Device Power Management"
113	default y if !PM_DEVICE_RUNTIME
114	help
115	  This option enables the system-managed device power
116	  management.  The power management subsystem will suspend
117	  devices before entering a low power state. Conversely, after
118	  the core wakes up from low power mode all suspended devices
119	  are resumed.
120
121
122endif # PM_DEVICE
123
124endmenu
125