drm/amd/powerplay: add event manager sub-component
[linux-2.6-block.git] / drivers / gpu / drm / amd / powerplay / eventmgr / eventactionchains.c
CommitLineData
e92a0370
RZ
1/*
2 * Copyright 2015 Advanced Micro Devices, Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 *
22 */
23#include "eventmgr.h"
24#include "eventactionchains.h"
25#include "eventsubchains.h"
26
27static const pem_event_action *initialize_event[] = {
28 block_adjust_power_state_tasks,
29 power_budget_tasks,
30 system_config_tasks,
31 setup_asic_tasks,
32 enable_dynamic_state_management_tasks,
33 enable_clock_power_gatings_tasks,
34 get_2d_performance_state_tasks,
35 set_performance_state_tasks,
36 conditionally_force_3d_performance_state_tasks,
37 process_vbios_eventinfo_tasks,
38 broadcast_power_policy_tasks,
39 NULL
40};
41
42const struct action_chain initialize_action_chain = {
43 "Initialize",
44 initialize_event
45};
46
47static const pem_event_action *uninitialize_event[] = {
48 ungate_all_display_phys_tasks,
49 uninitialize_display_phy_access_tasks,
50 disable_gfx_voltage_island_power_gating_tasks,
51 disable_gfx_clock_gating_tasks,
52 set_boot_state_tasks,
53 adjust_power_state_tasks,
54 disable_dynamic_state_management_tasks,
55 disable_clock_power_gatings_tasks,
56 cleanup_asic_tasks,
57 prepare_for_pnp_stop_tasks,
58 NULL
59};
60
61const struct action_chain uninitialize_action_chain = {
62 "Uninitialize",
63 uninitialize_event
64};
65
66static const pem_event_action *power_source_change_event_pp_enabled[] = {
67 set_power_source_tasks,
68 set_power_saving_state_tasks,
69 adjust_power_state_tasks,
70 enable_disable_fps_tasks,
71 set_nbmcu_state_tasks,
72 broadcast_power_policy_tasks,
73 NULL
74};
75
76const struct action_chain power_source_change_action_chain_pp_enabled = {
77 "Power source change - PowerPlay enabled",
78 power_source_change_event_pp_enabled
79};
80
81static const pem_event_action *power_source_change_event_pp_disabled[] = {
82 set_power_source_tasks,
83 set_nbmcu_state_tasks,
84 NULL
85};
86
87const struct action_chain power_source_changes_action_chain_pp_disabled = {
88 "Power source change - PowerPlay disabled",
89 power_source_change_event_pp_disabled
90};
91
92static const pem_event_action *power_source_change_event_hardware_dc[] = {
93 set_power_source_tasks,
94 set_power_saving_state_tasks,
95 adjust_power_state_tasks,
96 enable_disable_fps_tasks,
97 reset_hardware_dc_notification_tasks,
98 set_nbmcu_state_tasks,
99 broadcast_power_policy_tasks,
100 NULL
101};
102
103const struct action_chain power_source_change_action_chain_hardware_dc = {
104 "Power source change - with Hardware DC switching",
105 power_source_change_event_hardware_dc
106};
107
108static const pem_event_action *suspend_event[] = {
109 reset_display_phy_access_tasks,
110 unregister_interrupt_tasks,
111 disable_gfx_voltage_island_power_gating_tasks,
112 disable_gfx_clock_gating_tasks,
113 notify_smu_suspend_tasks,
114 disable_smc_firmware_ctf_tasks,
115 set_boot_state_tasks,
116 adjust_power_state_tasks,
117 disable_fps_tasks,
118 vari_bright_suspend_tasks,
119 reset_fan_speed_to_default_tasks,
120 power_down_asic_tasks,
121 disable_stutter_mode_tasks,
122 set_connected_standby_tasks,
123 block_hw_access_tasks,
124 NULL
125};
126
127const struct action_chain suspend_action_chain = {
128 "Suspend",
129 suspend_event
130};
131
132static const pem_event_action *resume_event[] = {
133 unblock_hw_access_tasks,
134 resume_connected_standby_tasks,
135 notify_smu_resume_tasks,
136 reset_display_configCounter_tasks,
137 update_dal_configuration_tasks,
138 vari_bright_resume_tasks,
139 block_adjust_power_state_tasks,
140 setup_asic_tasks,
141 enable_stutter_mode_tasks, /*must do this in boot state and before SMC is started */
142 enable_dynamic_state_management_tasks,
143 enable_clock_power_gatings_tasks,
144 enable_disable_bapm_tasks,
145 reset_boot_state_tasks,
146 adjust_power_state_tasks,
147 enable_disable_fps_tasks,
148 notify_hw_power_source_tasks,
149 process_vbios_event_info_tasks,
150 enable_gfx_clock_gating_tasks,
151 enable_gfx_voltage_island_power_gating_tasks,
152 reset_clock_gating_tasks,
153 notify_smu_vpu_recovery_end_tasks,
154 disable_vpu_cap_tasks,
155 execute_escape_sequence_tasks,
156 NULL
157};
158
159
160const struct action_chain resume_action_chain = {
161 "resume",
162 resume_event
163};
164
165static const pem_event_action *complete_init_event[] = {
166 adjust_power_state_tasks,
167 enable_gfx_clock_gating_tasks,
168 enable_gfx_voltage_island_power_gating_tasks,
169 notify_power_state_change_tasks,
170 NULL
171};
172
173const struct action_chain complete_init_action_chain = {
174 "complete init",
175 complete_init_event
176};
177
178static const pem_event_action *enable_gfx_clock_gating_event[] = {
179 enable_gfx_clock_gating_tasks,
180 NULL
181};
182
183const struct action_chain enable_gfx_clock_gating_action_chain = {
184 "enable gfx clock gate",
185 enable_gfx_clock_gating_event
186};
187
188static const pem_event_action *disable_gfx_clock_gating_event[] = {
189 disable_gfx_clock_gating_tasks,
190 NULL
191};
192
193const struct action_chain disable_gfx_clock_gating_action_chain = {
194 "disable gfx clock gate",
195 disable_gfx_clock_gating_event
196};
197
198static const pem_event_action *enable_cgpg_event[] = {
199 enable_cgpg_tasks,
200 NULL
201};
202
203const struct action_chain enable_cgpg_action_chain = {
204 "eable cg pg",
205 enable_cgpg_event
206};
207
208static const pem_event_action *disable_cgpg_event[] = {
209 disable_cgpg_tasks,
210 NULL
211};
212
213const struct action_chain disable_cgpg_action_chain = {
214 "disable cg pg",
215 disable_cgpg_event
216};
217
218
219/* Enable user _2d performance and activate */
220
221static const pem_event_action *enable_user_state_event[] = {
222 create_new_user_performance_state_tasks,
223 adjust_power_state_tasks,
224 NULL
225};
226
227const struct action_chain enable_user_state_action_chain = {
228 "Enable user state",
229 enable_user_state_event
230};
231
232static const pem_event_action *enable_user_2d_performance_event[] = {
233 enable_user_2d_performance_tasks,
234 add_user_2d_performance_state_tasks,
235 set_performance_state_tasks,
236 adjust_power_state_tasks,
237 delete_user_2d_performance_state_tasks,
238 NULL
239};
240
241const struct action_chain enable_user_2d_performance_action_chain = {
242 "enable_user_2d_performance_event_activate",
243 enable_user_2d_performance_event
244};
245
246
247static const pem_event_action *disable_user_2d_performance_event[] = {
248 disable_user_2d_performance_tasks,
249 delete_user_2d_performance_state_tasks,
250 NULL
251};
252
253const struct action_chain disable_user_2d_performance_action_chain = {
254 "disable_user_2d_performance_event",
255 disable_user_2d_performance_event
256};
257
258
259static const pem_event_action *display_config_change_event[] = {
260 /* countDisplayConfigurationChangeEventTasks, */
261 unblock_adjust_power_state_tasks,
262 /* setCPUPowerState,*/
263 notify_hw_power_source_tasks,
264 /* updateDALConfigurationTasks,
265 variBrightDisplayConfigurationChangeTasks, */
266 adjust_power_state_tasks,
267 /*enableDisableFPSTasks,
268 setNBMCUStateTasks,
269 notifyPCIEDeviceReadyTasks,*/
270 NULL
271};
272
273const struct action_chain display_config_change_action_chain = {
274 "Display configuration change",
275 display_config_change_event
276};
277
278static const pem_event_action *readjust_power_state_event[] = {
279 adjust_power_state_tasks,
280 NULL
281};
282
283const struct action_chain readjust_power_state_action_chain = {
284 "re-adjust power state",
285 readjust_power_state_event
286};
287