eventactionchains.c 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  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. static const pem_event_action * const initialize_event[] = {
  27. block_adjust_power_state_tasks,
  28. power_budget_tasks,
  29. system_config_tasks,
  30. setup_asic_tasks,
  31. enable_dynamic_state_management_tasks,
  32. get_2d_performance_state_tasks,
  33. set_performance_state_tasks,
  34. initialize_thermal_controller_tasks,
  35. conditionally_force_3d_performance_state_tasks,
  36. process_vbios_eventinfo_tasks,
  37. broadcast_power_policy_tasks,
  38. NULL
  39. };
  40. const struct action_chain initialize_action_chain = {
  41. "Initialize",
  42. initialize_event
  43. };
  44. static const pem_event_action * const uninitialize_event[] = {
  45. ungate_all_display_phys_tasks,
  46. uninitialize_display_phy_access_tasks,
  47. disable_gfx_voltage_island_power_gating_tasks,
  48. disable_gfx_clock_gating_tasks,
  49. uninitialize_thermal_controller_tasks,
  50. set_boot_state_tasks,
  51. adjust_power_state_tasks,
  52. disable_dynamic_state_management_tasks,
  53. disable_clock_power_gatings_tasks,
  54. cleanup_asic_tasks,
  55. prepare_for_pnp_stop_tasks,
  56. NULL
  57. };
  58. const struct action_chain uninitialize_action_chain = {
  59. "Uninitialize",
  60. uninitialize_event
  61. };
  62. static const pem_event_action * const power_source_change_event_pp_enabled[] = {
  63. set_power_source_tasks,
  64. set_power_saving_state_tasks,
  65. adjust_power_state_tasks,
  66. enable_disable_fps_tasks,
  67. set_nbmcu_state_tasks,
  68. broadcast_power_policy_tasks,
  69. NULL
  70. };
  71. const struct action_chain power_source_change_action_chain_pp_enabled = {
  72. "Power source change - PowerPlay enabled",
  73. power_source_change_event_pp_enabled
  74. };
  75. static const pem_event_action * const power_source_change_event_pp_disabled[] = {
  76. set_power_source_tasks,
  77. set_nbmcu_state_tasks,
  78. NULL
  79. };
  80. const struct action_chain power_source_changes_action_chain_pp_disabled = {
  81. "Power source change - PowerPlay disabled",
  82. power_source_change_event_pp_disabled
  83. };
  84. static const pem_event_action * const power_source_change_event_hardware_dc[] = {
  85. set_power_source_tasks,
  86. set_power_saving_state_tasks,
  87. adjust_power_state_tasks,
  88. enable_disable_fps_tasks,
  89. reset_hardware_dc_notification_tasks,
  90. set_nbmcu_state_tasks,
  91. broadcast_power_policy_tasks,
  92. NULL
  93. };
  94. const struct action_chain power_source_change_action_chain_hardware_dc = {
  95. "Power source change - with Hardware DC switching",
  96. power_source_change_event_hardware_dc
  97. };
  98. static const pem_event_action * const suspend_event[] = {
  99. reset_display_phy_access_tasks,
  100. unregister_interrupt_tasks,
  101. disable_gfx_voltage_island_power_gating_tasks,
  102. disable_gfx_clock_gating_tasks,
  103. notify_smu_suspend_tasks,
  104. disable_smc_firmware_ctf_tasks,
  105. set_boot_state_tasks,
  106. adjust_power_state_tasks,
  107. disable_fps_tasks,
  108. vari_bright_suspend_tasks,
  109. reset_fan_speed_to_default_tasks,
  110. power_down_asic_tasks,
  111. disable_stutter_mode_tasks,
  112. set_connected_standby_tasks,
  113. block_hw_access_tasks,
  114. NULL
  115. };
  116. const struct action_chain suspend_action_chain = {
  117. "Suspend",
  118. suspend_event
  119. };
  120. static const pem_event_action * const resume_event[] = {
  121. unblock_hw_access_tasks,
  122. resume_connected_standby_tasks,
  123. notify_smu_resume_tasks,
  124. reset_display_configCounter_tasks,
  125. update_dal_configuration_tasks,
  126. vari_bright_resume_tasks,
  127. setup_asic_tasks,
  128. enable_stutter_mode_tasks, /*must do this in boot state and before SMC is started */
  129. enable_dynamic_state_management_tasks,
  130. enable_disable_bapm_tasks,
  131. initialize_thermal_controller_tasks,
  132. get_2d_performance_state_tasks,
  133. set_performance_state_tasks,
  134. adjust_power_state_tasks,
  135. enable_disable_fps_tasks,
  136. notify_hw_power_source_tasks,
  137. process_vbios_event_info_tasks,
  138. enable_gfx_clock_gating_tasks,
  139. enable_gfx_voltage_island_power_gating_tasks,
  140. reset_clock_gating_tasks,
  141. notify_smu_vpu_recovery_end_tasks,
  142. disable_vpu_cap_tasks,
  143. execute_escape_sequence_tasks,
  144. NULL
  145. };
  146. const struct action_chain resume_action_chain = {
  147. "resume",
  148. resume_event
  149. };
  150. static const pem_event_action * const complete_init_event[] = {
  151. unblock_adjust_power_state_tasks,
  152. adjust_power_state_tasks,
  153. enable_gfx_clock_gating_tasks,
  154. enable_gfx_voltage_island_power_gating_tasks,
  155. notify_power_state_change_tasks,
  156. NULL
  157. };
  158. const struct action_chain complete_init_action_chain = {
  159. "complete init",
  160. complete_init_event
  161. };
  162. static const pem_event_action * const enable_gfx_clock_gating_event[] = {
  163. enable_gfx_clock_gating_tasks,
  164. NULL
  165. };
  166. const struct action_chain enable_gfx_clock_gating_action_chain = {
  167. "enable gfx clock gate",
  168. enable_gfx_clock_gating_event
  169. };
  170. static const pem_event_action * const disable_gfx_clock_gating_event[] = {
  171. disable_gfx_clock_gating_tasks,
  172. NULL
  173. };
  174. const struct action_chain disable_gfx_clock_gating_action_chain = {
  175. "disable gfx clock gate",
  176. disable_gfx_clock_gating_event
  177. };
  178. static const pem_event_action * const enable_cgpg_event[] = {
  179. enable_cgpg_tasks,
  180. NULL
  181. };
  182. const struct action_chain enable_cgpg_action_chain = {
  183. "eable cg pg",
  184. enable_cgpg_event
  185. };
  186. static const pem_event_action * const disable_cgpg_event[] = {
  187. disable_cgpg_tasks,
  188. NULL
  189. };
  190. const struct action_chain disable_cgpg_action_chain = {
  191. "disable cg pg",
  192. disable_cgpg_event
  193. };
  194. /* Enable user _2d performance and activate */
  195. static const pem_event_action * const enable_user_state_event[] = {
  196. create_new_user_performance_state_tasks,
  197. adjust_power_state_tasks,
  198. NULL
  199. };
  200. const struct action_chain enable_user_state_action_chain = {
  201. "Enable user state",
  202. enable_user_state_event
  203. };
  204. static const pem_event_action * const enable_user_2d_performance_event[] = {
  205. enable_user_2d_performance_tasks,
  206. add_user_2d_performance_state_tasks,
  207. set_performance_state_tasks,
  208. adjust_power_state_tasks,
  209. delete_user_2d_performance_state_tasks,
  210. NULL
  211. };
  212. const struct action_chain enable_user_2d_performance_action_chain = {
  213. "enable_user_2d_performance_event_activate",
  214. enable_user_2d_performance_event
  215. };
  216. static const pem_event_action * const disable_user_2d_performance_event[] = {
  217. disable_user_2d_performance_tasks,
  218. delete_user_2d_performance_state_tasks,
  219. NULL
  220. };
  221. const struct action_chain disable_user_2d_performance_action_chain = {
  222. "disable_user_2d_performance_event",
  223. disable_user_2d_performance_event
  224. };
  225. static const pem_event_action * const display_config_change_event[] = {
  226. /* countDisplayConfigurationChangeEventTasks, */
  227. unblock_adjust_power_state_tasks,
  228. set_cpu_power_state,
  229. notify_hw_power_source_tasks,
  230. get_2d_performance_state_tasks,
  231. set_performance_state_tasks,
  232. /* updateDALConfigurationTasks,
  233. variBrightDisplayConfigurationChangeTasks, */
  234. adjust_power_state_tasks,
  235. /*enableDisableFPSTasks,
  236. setNBMCUStateTasks,
  237. notifyPCIEDeviceReadyTasks,*/
  238. NULL
  239. };
  240. const struct action_chain display_config_change_action_chain = {
  241. "Display configuration change",
  242. display_config_change_event
  243. };
  244. static const pem_event_action * const readjust_power_state_event[] = {
  245. adjust_power_state_tasks,
  246. NULL
  247. };
  248. const struct action_chain readjust_power_state_action_chain = {
  249. "re-adjust power state",
  250. readjust_power_state_event
  251. };