292 lines
7.9 KiB
C
292 lines
7.9 KiB
C
/*
|
|
* Copyright 2015 Advanced Micro Devices, Inc.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
* OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
*/
|
|
#include "eventmgr.h"
|
|
#include "eventactionchains.h"
|
|
#include "eventsubchains.h"
|
|
|
|
static const pem_event_action * const initialize_event[] = {
|
|
block_adjust_power_state_tasks,
|
|
power_budget_tasks,
|
|
system_config_tasks,
|
|
setup_asic_tasks,
|
|
enable_dynamic_state_management_tasks,
|
|
get_2d_performance_state_tasks,
|
|
set_performance_state_tasks,
|
|
initialize_thermal_controller_tasks,
|
|
conditionally_force_3d_performance_state_tasks,
|
|
process_vbios_eventinfo_tasks,
|
|
broadcast_power_policy_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain initialize_action_chain = {
|
|
"Initialize",
|
|
initialize_event
|
|
};
|
|
|
|
static const pem_event_action * const uninitialize_event[] = {
|
|
ungate_all_display_phys_tasks,
|
|
uninitialize_display_phy_access_tasks,
|
|
disable_gfx_voltage_island_power_gating_tasks,
|
|
disable_gfx_clock_gating_tasks,
|
|
uninitialize_thermal_controller_tasks,
|
|
set_boot_state_tasks,
|
|
adjust_power_state_tasks,
|
|
disable_dynamic_state_management_tasks,
|
|
disable_clock_power_gatings_tasks,
|
|
cleanup_asic_tasks,
|
|
prepare_for_pnp_stop_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain uninitialize_action_chain = {
|
|
"Uninitialize",
|
|
uninitialize_event
|
|
};
|
|
|
|
static const pem_event_action * const power_source_change_event_pp_enabled[] = {
|
|
set_power_source_tasks,
|
|
set_power_saving_state_tasks,
|
|
adjust_power_state_tasks,
|
|
enable_disable_fps_tasks,
|
|
set_nbmcu_state_tasks,
|
|
broadcast_power_policy_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain power_source_change_action_chain_pp_enabled = {
|
|
"Power source change - PowerPlay enabled",
|
|
power_source_change_event_pp_enabled
|
|
};
|
|
|
|
static const pem_event_action * const power_source_change_event_pp_disabled[] = {
|
|
set_power_source_tasks,
|
|
set_nbmcu_state_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain power_source_changes_action_chain_pp_disabled = {
|
|
"Power source change - PowerPlay disabled",
|
|
power_source_change_event_pp_disabled
|
|
};
|
|
|
|
static const pem_event_action * const power_source_change_event_hardware_dc[] = {
|
|
set_power_source_tasks,
|
|
set_power_saving_state_tasks,
|
|
adjust_power_state_tasks,
|
|
enable_disable_fps_tasks,
|
|
reset_hardware_dc_notification_tasks,
|
|
set_nbmcu_state_tasks,
|
|
broadcast_power_policy_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain power_source_change_action_chain_hardware_dc = {
|
|
"Power source change - with Hardware DC switching",
|
|
power_source_change_event_hardware_dc
|
|
};
|
|
|
|
static const pem_event_action * const suspend_event[] = {
|
|
reset_display_phy_access_tasks,
|
|
unregister_interrupt_tasks,
|
|
disable_gfx_voltage_island_power_gating_tasks,
|
|
disable_gfx_clock_gating_tasks,
|
|
notify_smu_suspend_tasks,
|
|
disable_smc_firmware_ctf_tasks,
|
|
set_boot_state_tasks,
|
|
adjust_power_state_tasks,
|
|
disable_fps_tasks,
|
|
vari_bright_suspend_tasks,
|
|
reset_fan_speed_to_default_tasks,
|
|
power_down_asic_tasks,
|
|
disable_stutter_mode_tasks,
|
|
set_connected_standby_tasks,
|
|
block_hw_access_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain suspend_action_chain = {
|
|
"Suspend",
|
|
suspend_event
|
|
};
|
|
|
|
static const pem_event_action * const resume_event[] = {
|
|
unblock_hw_access_tasks,
|
|
resume_connected_standby_tasks,
|
|
notify_smu_resume_tasks,
|
|
reset_display_configCounter_tasks,
|
|
update_dal_configuration_tasks,
|
|
vari_bright_resume_tasks,
|
|
setup_asic_tasks,
|
|
enable_stutter_mode_tasks, /*must do this in boot state and before SMC is started */
|
|
enable_dynamic_state_management_tasks,
|
|
enable_disable_bapm_tasks,
|
|
initialize_thermal_controller_tasks,
|
|
get_2d_performance_state_tasks,
|
|
set_performance_state_tasks,
|
|
adjust_power_state_tasks,
|
|
enable_disable_fps_tasks,
|
|
notify_hw_power_source_tasks,
|
|
process_vbios_event_info_tasks,
|
|
enable_gfx_clock_gating_tasks,
|
|
enable_gfx_voltage_island_power_gating_tasks,
|
|
reset_clock_gating_tasks,
|
|
notify_smu_vpu_recovery_end_tasks,
|
|
disable_vpu_cap_tasks,
|
|
execute_escape_sequence_tasks,
|
|
NULL
|
|
};
|
|
|
|
|
|
const struct action_chain resume_action_chain = {
|
|
"resume",
|
|
resume_event
|
|
};
|
|
|
|
static const pem_event_action * const complete_init_event[] = {
|
|
unblock_adjust_power_state_tasks,
|
|
adjust_power_state_tasks,
|
|
enable_gfx_clock_gating_tasks,
|
|
enable_gfx_voltage_island_power_gating_tasks,
|
|
notify_power_state_change_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain complete_init_action_chain = {
|
|
"complete init",
|
|
complete_init_event
|
|
};
|
|
|
|
static const pem_event_action * const enable_gfx_clock_gating_event[] = {
|
|
enable_gfx_clock_gating_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain enable_gfx_clock_gating_action_chain = {
|
|
"enable gfx clock gate",
|
|
enable_gfx_clock_gating_event
|
|
};
|
|
|
|
static const pem_event_action * const disable_gfx_clock_gating_event[] = {
|
|
disable_gfx_clock_gating_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain disable_gfx_clock_gating_action_chain = {
|
|
"disable gfx clock gate",
|
|
disable_gfx_clock_gating_event
|
|
};
|
|
|
|
static const pem_event_action * const enable_cgpg_event[] = {
|
|
enable_cgpg_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain enable_cgpg_action_chain = {
|
|
"eable cg pg",
|
|
enable_cgpg_event
|
|
};
|
|
|
|
static const pem_event_action * const disable_cgpg_event[] = {
|
|
disable_cgpg_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain disable_cgpg_action_chain = {
|
|
"disable cg pg",
|
|
disable_cgpg_event
|
|
};
|
|
|
|
|
|
/* Enable user _2d performance and activate */
|
|
|
|
static const pem_event_action * const enable_user_state_event[] = {
|
|
create_new_user_performance_state_tasks,
|
|
adjust_power_state_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain enable_user_state_action_chain = {
|
|
"Enable user state",
|
|
enable_user_state_event
|
|
};
|
|
|
|
static const pem_event_action * const enable_user_2d_performance_event[] = {
|
|
enable_user_2d_performance_tasks,
|
|
add_user_2d_performance_state_tasks,
|
|
set_performance_state_tasks,
|
|
adjust_power_state_tasks,
|
|
delete_user_2d_performance_state_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain enable_user_2d_performance_action_chain = {
|
|
"enable_user_2d_performance_event_activate",
|
|
enable_user_2d_performance_event
|
|
};
|
|
|
|
|
|
static const pem_event_action * const disable_user_2d_performance_event[] = {
|
|
disable_user_2d_performance_tasks,
|
|
delete_user_2d_performance_state_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain disable_user_2d_performance_action_chain = {
|
|
"disable_user_2d_performance_event",
|
|
disable_user_2d_performance_event
|
|
};
|
|
|
|
|
|
static const pem_event_action * const display_config_change_event[] = {
|
|
/* countDisplayConfigurationChangeEventTasks, */
|
|
unblock_adjust_power_state_tasks,
|
|
set_cpu_power_state,
|
|
notify_hw_power_source_tasks,
|
|
get_2d_performance_state_tasks,
|
|
set_performance_state_tasks,
|
|
/* updateDALConfigurationTasks,
|
|
variBrightDisplayConfigurationChangeTasks, */
|
|
adjust_power_state_tasks,
|
|
/*enableDisableFPSTasks,
|
|
setNBMCUStateTasks,
|
|
notifyPCIEDeviceReadyTasks,*/
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain display_config_change_action_chain = {
|
|
"Display configuration change",
|
|
display_config_change_event
|
|
};
|
|
|
|
static const pem_event_action * const readjust_power_state_event[] = {
|
|
adjust_power_state_tasks,
|
|
NULL
|
|
};
|
|
|
|
const struct action_chain readjust_power_state_action_chain = {
|
|
"re-adjust power state",
|
|
readjust_power_state_event
|
|
};
|
|
|