eventsubchains.c 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  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 "eventsubchains.h"
  25. #include "eventtasks.h"
  26. #include "hardwaremanager.h"
  27. const pem_event_action reset_display_phy_access_tasks[] = {
  28. pem_task_reset_display_phys_access,
  29. NULL
  30. };
  31. const pem_event_action broadcast_power_policy_tasks[] = {
  32. /* PEM_Task_BroadcastPowerPolicyChange, */
  33. NULL
  34. };
  35. const pem_event_action unregister_interrupt_tasks[] = {
  36. pem_task_unregister_interrupts,
  37. NULL
  38. };
  39. /* Disable GFX Voltage Islands Power Gating */
  40. const pem_event_action disable_gfx_voltage_island_powergating_tasks[] = {
  41. pem_task_disable_voltage_island_power_gating,
  42. NULL
  43. };
  44. const pem_event_action disable_gfx_clockgating_tasks[] = {
  45. pem_task_disable_gfx_clock_gating,
  46. NULL
  47. };
  48. const pem_event_action block_adjust_power_state_tasks[] = {
  49. pem_task_block_adjust_power_state,
  50. NULL
  51. };
  52. const pem_event_action unblock_adjust_power_state_tasks[] = {
  53. pem_task_unblock_adjust_power_state,
  54. NULL
  55. };
  56. const pem_event_action set_performance_state_tasks[] = {
  57. pem_task_set_performance_state,
  58. NULL
  59. };
  60. const pem_event_action get_2d_performance_state_tasks[] = {
  61. pem_task_get_2D_performance_state_id,
  62. NULL
  63. };
  64. const pem_event_action conditionally_force3D_performance_state_tasks[] = {
  65. pem_task_conditionally_force_3d_performance_state,
  66. NULL
  67. };
  68. const pem_event_action process_vbios_eventinfo_tasks[] = {
  69. /* PEM_Task_ProcessVbiosEventInfo,*/
  70. NULL
  71. };
  72. const pem_event_action enable_dynamic_state_management_tasks[] = {
  73. /* PEM_Task_ResetBAPMPolicyChangedFlag,*/
  74. pem_task_get_boot_state_id,
  75. pem_task_enable_dynamic_state_management,
  76. pem_task_register_interrupts,
  77. NULL
  78. };
  79. const pem_event_action enable_clock_power_gatings_tasks[] = {
  80. pem_task_enable_clock_power_gatings_tasks,
  81. pem_task_powerdown_uvd_tasks,
  82. pem_task_powerdown_vce_tasks,
  83. NULL
  84. };
  85. const pem_event_action setup_asic_tasks[] = {
  86. pem_task_setup_asic,
  87. NULL
  88. };
  89. const pem_event_action power_budget_tasks[] = {
  90. /* TODO
  91. * PEM_Task_PowerBudgetWaiverAvailable,
  92. * PEM_Task_PowerBudgetWarningMessage,
  93. * PEM_Task_PruneStatesBasedOnPowerBudget,
  94. */
  95. NULL
  96. };
  97. const pem_event_action system_config_tasks[] = {
  98. /* PEM_Task_PruneStatesBasedOnSystemConfig,*/
  99. NULL
  100. };
  101. const pem_event_action conditionally_force_3d_performance_state_tasks[] = {
  102. pem_task_conditionally_force_3d_performance_state,
  103. NULL
  104. };
  105. const pem_event_action ungate_all_display_phys_tasks[] = {
  106. /* PEM_Task_GetDisplayPhyAccessInfo */
  107. NULL
  108. };
  109. const pem_event_action uninitialize_display_phy_access_tasks[] = {
  110. /* PEM_Task_UninitializeDisplayPhysAccess, */
  111. NULL
  112. };
  113. const pem_event_action disable_gfx_voltage_island_power_gating_tasks[] = {
  114. /* PEM_Task_DisableVoltageIslandPowerGating, */
  115. NULL
  116. };
  117. const pem_event_action disable_gfx_clock_gating_tasks[] = {
  118. pem_task_disable_gfx_clock_gating,
  119. NULL
  120. };
  121. const pem_event_action set_boot_state_tasks[] = {
  122. pem_task_get_boot_state_id,
  123. pem_task_set_boot_state,
  124. NULL
  125. };
  126. const pem_event_action adjust_power_state_tasks[] = {
  127. pem_task_notify_hw_mgr_display_configuration_change,
  128. pem_task_adjust_power_state,
  129. pem_task_notify_smc_display_config_after_power_state_adjustment,
  130. pem_task_update_allowed_performance_levels,
  131. /* to do pem_task_Enable_disable_bapm, */
  132. NULL
  133. };
  134. const pem_event_action disable_dynamic_state_management_tasks[] = {
  135. pem_task_unregister_interrupts,
  136. pem_task_get_boot_state_id,
  137. pem_task_disable_dynamic_state_management,
  138. NULL
  139. };
  140. const pem_event_action disable_clock_power_gatings_tasks[] = {
  141. pem_task_disable_clock_power_gatings_tasks,
  142. NULL
  143. };
  144. const pem_event_action cleanup_asic_tasks[] = {
  145. /* PEM_Task_DisableFPS,*/
  146. pem_task_cleanup_asic,
  147. NULL
  148. };
  149. const pem_event_action prepare_for_pnp_stop_tasks[] = {
  150. /* PEM_Task_PrepareForPnpStop,*/
  151. NULL
  152. };
  153. const pem_event_action set_power_source_tasks[] = {
  154. pem_task_set_power_source,
  155. pem_task_notify_hw_of_power_source,
  156. NULL
  157. };
  158. const pem_event_action set_power_saving_state_tasks[] = {
  159. pem_task_reset_power_saving_state,
  160. pem_task_get_power_saving_state,
  161. pem_task_set_power_saving_state,
  162. /* PEM_Task_ResetODDCState,
  163. * PEM_Task_GetODDCState,
  164. * PEM_Task_SetODDCState,*/
  165. NULL
  166. };
  167. const pem_event_action enable_disable_fps_tasks[] = {
  168. /* PEM_Task_EnableDisableFPS,*/
  169. NULL
  170. };
  171. const pem_event_action set_nbmcu_state_tasks[] = {
  172. /* PEM_Task_NBMCUStateChange,*/
  173. NULL
  174. };
  175. const pem_event_action reset_hardware_dc_notification_tasks[] = {
  176. /* PEM_Task_ResetHardwareDCNotification,*/
  177. NULL
  178. };
  179. const pem_event_action notify_smu_suspend_tasks[] = {
  180. /* PEM_Task_NotifySMUSuspend,*/
  181. NULL
  182. };
  183. const pem_event_action disable_smc_firmware_ctf_tasks[] = {
  184. /* PEM_Task_DisableSMCFirmwareCTF,*/
  185. NULL
  186. };
  187. const pem_event_action disable_fps_tasks[] = {
  188. /* PEM_Task_DisableFPS,*/
  189. NULL
  190. };
  191. const pem_event_action vari_bright_suspend_tasks[] = {
  192. /* PEM_Task_VariBright_Suspend,*/
  193. NULL
  194. };
  195. const pem_event_action reset_fan_speed_to_default_tasks[] = {
  196. /* PEM_Task_ResetFanSpeedToDefault,*/
  197. NULL
  198. };
  199. const pem_event_action power_down_asic_tasks[] = {
  200. /* PEM_Task_DisableFPS,*/
  201. pem_task_power_down_asic,
  202. NULL
  203. };
  204. const pem_event_action disable_stutter_mode_tasks[] = {
  205. /* PEM_Task_DisableStutterMode,*/
  206. NULL
  207. };
  208. const pem_event_action set_connected_standby_tasks[] = {
  209. /* PEM_Task_SetConnectedStandby,*/
  210. NULL
  211. };
  212. const pem_event_action block_hw_access_tasks[] = {
  213. pem_task_block_hw_access,
  214. NULL
  215. };
  216. const pem_event_action unblock_hw_access_tasks[] = {
  217. pem_task_un_block_hw_access,
  218. NULL
  219. };
  220. const pem_event_action resume_connected_standby_tasks[] = {
  221. /* PEM_Task_ResumeConnectedStandby,*/
  222. NULL
  223. };
  224. const pem_event_action notify_smu_resume_tasks[] = {
  225. /* PEM_Task_NotifySMUResume,*/
  226. NULL
  227. };
  228. const pem_event_action reset_display_configCounter_tasks[] = {
  229. pem_task_reset_display_phys_access,
  230. NULL
  231. };
  232. const pem_event_action update_dal_configuration_tasks[] = {
  233. /* PEM_Task_CheckVBlankTime,*/
  234. NULL
  235. };
  236. const pem_event_action vari_bright_resume_tasks[] = {
  237. /* PEM_Task_VariBright_Resume,*/
  238. NULL
  239. };
  240. const pem_event_action notify_hw_power_source_tasks[] = {
  241. pem_task_notify_hw_of_power_source,
  242. NULL
  243. };
  244. const pem_event_action process_vbios_event_info_tasks[] = {
  245. /* PEM_Task_ProcessVbiosEventInfo,*/
  246. NULL
  247. };
  248. const pem_event_action enable_gfx_clock_gating_tasks[] = {
  249. pem_task_enable_gfx_clock_gating,
  250. NULL
  251. };
  252. const pem_event_action enable_gfx_voltage_island_power_gating_tasks[] = {
  253. pem_task_enable_voltage_island_power_gating,
  254. NULL
  255. };
  256. const pem_event_action reset_clock_gating_tasks[] = {
  257. /* PEM_Task_ResetClockGating*/
  258. NULL
  259. };
  260. const pem_event_action notify_smu_vpu_recovery_end_tasks[] = {
  261. /* PEM_Task_NotifySmuVPURecoveryEnd,*/
  262. NULL
  263. };
  264. const pem_event_action disable_vpu_cap_tasks[] = {
  265. /* PEM_Task_DisableVPUCap,*/
  266. NULL
  267. };
  268. const pem_event_action execute_escape_sequence_tasks[] = {
  269. /* PEM_Task_ExecuteEscapesequence,*/
  270. NULL
  271. };
  272. const pem_event_action notify_power_state_change_tasks[] = {
  273. pem_task_notify_power_state_change,
  274. NULL
  275. };
  276. const pem_event_action enable_cgpg_tasks[] = {
  277. pem_task_enable_cgpg,
  278. NULL
  279. };
  280. const pem_event_action disable_cgpg_tasks[] = {
  281. pem_task_disable_cgpg,
  282. NULL
  283. };
  284. const pem_event_action enable_user_2d_performance_tasks[] = {
  285. /* PEM_Task_SetUser2DPerformanceFlag,*/
  286. /* PEM_Task_UpdateUser2DPerformanceEnableEvents,*/
  287. NULL
  288. };
  289. const pem_event_action add_user_2d_performance_state_tasks[] = {
  290. /* PEM_Task_Get2DPerformanceTemplate,*/
  291. /* PEM_Task_AllocateNewPowerStateMemory,*/
  292. /* PEM_Task_CopyNewPowerStateInfo,*/
  293. /* PEM_Task_UpdateNewPowerStateClocks,*/
  294. /* PEM_Task_UpdateNewPowerStateUser2DPerformanceFlag,*/
  295. /* PEM_Task_AddPowerState,*/
  296. /* PEM_Task_ReleaseNewPowerStateMemory,*/
  297. NULL
  298. };
  299. const pem_event_action delete_user_2d_performance_state_tasks[] = {
  300. /* PEM_Task_GetCurrentUser2DPerformanceStateID,*/
  301. /* PEM_Task_DeletePowerState,*/
  302. /* PEM_Task_SetCurrentUser2DPerformanceStateID,*/
  303. NULL
  304. };
  305. const pem_event_action disable_user_2d_performance_tasks[] = {
  306. /* PEM_Task_ResetUser2DPerformanceFlag,*/
  307. /* PEM_Task_UpdateUser2DPerformanceDisableEvents,*/
  308. NULL
  309. };
  310. const pem_event_action enable_stutter_mode_tasks[] = {
  311. pem_task_enable_stutter_mode,
  312. NULL
  313. };
  314. const pem_event_action enable_disable_bapm_tasks[] = {
  315. /*PEM_Task_EnableDisableBAPM,*/
  316. NULL
  317. };
  318. const pem_event_action reset_boot_state_tasks[] = {
  319. pem_task_reset_boot_state,
  320. NULL
  321. };
  322. const pem_event_action create_new_user_performance_state_tasks[] = {
  323. pem_task_create_user_performance_state,
  324. NULL
  325. };
  326. const pem_event_action initialize_thermal_controller_tasks[] = {
  327. pem_task_initialize_thermal_controller,
  328. NULL
  329. };
  330. const pem_event_action uninitialize_thermal_controller_tasks[] = {
  331. pem_task_uninitialize_thermal_controller,
  332. NULL
  333. };
  334. const pem_event_action set_cpu_power_state[] = {
  335. pem_task_set_cpu_power_state,
  336. NULL
  337. };