Lines Matching refs:adev
36 static int amdgpu_debugfs_pm_init(struct amdgpu_device *adev);
66 void amdgpu_pm_acpi_event_handler(struct amdgpu_device *adev) in amdgpu_pm_acpi_event_handler() argument
68 if (adev->pm.dpm_enabled) { in amdgpu_pm_acpi_event_handler()
69 mutex_lock(&adev->pm.mutex); in amdgpu_pm_acpi_event_handler()
71 adev->pm.ac_power = true; in amdgpu_pm_acpi_event_handler()
73 adev->pm.ac_power = false; in amdgpu_pm_acpi_event_handler()
74 if (adev->powerplay.pp_funcs->enable_bapm) in amdgpu_pm_acpi_event_handler()
75 amdgpu_dpm_enable_bapm(adev, adev->pm.ac_power); in amdgpu_pm_acpi_event_handler()
76 mutex_unlock(&adev->pm.mutex); in amdgpu_pm_acpi_event_handler()
119 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_dpm_state() local
122 if (adev->powerplay.pp_funcs->get_current_power_state) in amdgpu_get_dpm_state()
123 pm = amdgpu_dpm_get_current_power_state(adev); in amdgpu_get_dpm_state()
125 pm = adev->pm.dpm.user_state; in amdgpu_get_dpm_state()
138 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_dpm_state() local
152 if (adev->powerplay.pp_funcs->dispatch_tasks) { in amdgpu_set_dpm_state()
153 amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_ENABLE_USER_STATE, &state); in amdgpu_set_dpm_state()
155 mutex_lock(&adev->pm.mutex); in amdgpu_set_dpm_state()
156 adev->pm.dpm.user_state = state; in amdgpu_set_dpm_state()
157 mutex_unlock(&adev->pm.mutex); in amdgpu_set_dpm_state()
160 if (!(adev->flags & AMD_IS_PX) || in amdgpu_set_dpm_state()
162 amdgpu_pm_compute_clocks(adev); in amdgpu_set_dpm_state()
233 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_dpm_forced_performance_level() local
236 if ((adev->flags & AMD_IS_PX) && in amdgpu_get_dpm_forced_performance_level()
240 if (adev->powerplay.pp_funcs->get_performance_level) in amdgpu_get_dpm_forced_performance_level()
241 level = amdgpu_dpm_get_performance_level(adev); in amdgpu_get_dpm_forced_performance_level()
243 level = adev->pm.dpm.forced_level; in amdgpu_get_dpm_forced_performance_level()
263 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_dpm_forced_performance_level() local
269 if ((adev->flags & AMD_IS_PX) && in amdgpu_set_dpm_forced_performance_level()
273 if (adev->powerplay.pp_funcs->get_performance_level) in amdgpu_set_dpm_forced_performance_level()
274 current_level = amdgpu_dpm_get_performance_level(adev); in amdgpu_set_dpm_forced_performance_level()
302 if (adev->powerplay.pp_funcs->force_performance_level) { in amdgpu_set_dpm_forced_performance_level()
303 mutex_lock(&adev->pm.mutex); in amdgpu_set_dpm_forced_performance_level()
304 if (adev->pm.dpm.thermal_active) { in amdgpu_set_dpm_forced_performance_level()
306 mutex_unlock(&adev->pm.mutex); in amdgpu_set_dpm_forced_performance_level()
309 ret = amdgpu_dpm_force_performance_level(adev, level); in amdgpu_set_dpm_forced_performance_level()
313 adev->pm.dpm.forced_level = level; in amdgpu_set_dpm_forced_performance_level()
314 mutex_unlock(&adev->pm.mutex); in amdgpu_set_dpm_forced_performance_level()
326 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_num_states() local
330 if (adev->powerplay.pp_funcs->get_pp_num_states) in amdgpu_get_pp_num_states()
331 amdgpu_dpm_get_pp_num_states(adev, &data); in amdgpu_get_pp_num_states()
349 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_cur_state() local
354 if (adev->powerplay.pp_funcs->get_current_power_state in amdgpu_get_pp_cur_state()
355 && adev->powerplay.pp_funcs->get_pp_num_states) { in amdgpu_get_pp_cur_state()
356 pm = amdgpu_dpm_get_current_power_state(adev); in amdgpu_get_pp_cur_state()
357 amdgpu_dpm_get_pp_num_states(adev, &data); in amdgpu_get_pp_cur_state()
376 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_force_state() local
378 if (adev->pp_force_state_enabled) in amdgpu_get_pp_force_state()
390 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_force_state() local
396 adev->pp_force_state_enabled = false; in amdgpu_set_pp_force_state()
397 else if (adev->powerplay.pp_funcs->dispatch_tasks && in amdgpu_set_pp_force_state()
398 adev->powerplay.pp_funcs->get_pp_num_states) { in amdgpu_set_pp_force_state()
408 amdgpu_dpm_get_pp_num_states(adev, &data); in amdgpu_set_pp_force_state()
413 amdgpu_dpm_dispatch_task(adev, in amdgpu_set_pp_force_state()
415 adev->pp_force_state_enabled = true; in amdgpu_set_pp_force_state()
438 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_table() local
442 if (adev->powerplay.pp_funcs->get_pp_table) in amdgpu_get_pp_table()
443 size = amdgpu_dpm_get_pp_table(adev, &table); in amdgpu_get_pp_table()
461 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_table() local
463 if (adev->powerplay.pp_funcs->set_pp_table) in amdgpu_set_pp_table()
464 amdgpu_dpm_set_pp_table(adev, buf, count); in amdgpu_set_pp_table()
501 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_od_clk_voltage() local
542 if (adev->powerplay.pp_funcs->odn_edit_dpm_table) in amdgpu_set_pp_od_clk_voltage()
543 ret = amdgpu_dpm_odn_edit_dpm_table(adev, type, in amdgpu_set_pp_od_clk_voltage()
550 if (adev->powerplay.pp_funcs->dispatch_tasks) { in amdgpu_set_pp_od_clk_voltage()
551 amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_READJUST_POWER_STATE, NULL); in amdgpu_set_pp_od_clk_voltage()
566 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_od_clk_voltage() local
569 if (adev->powerplay.pp_funcs->print_clock_levels) { in amdgpu_get_pp_od_clk_voltage()
570 size = amdgpu_dpm_print_clock_levels(adev, OD_SCLK, buf); in amdgpu_get_pp_od_clk_voltage()
571 size += amdgpu_dpm_print_clock_levels(adev, OD_MCLK, buf+size); in amdgpu_get_pp_od_clk_voltage()
572 size += amdgpu_dpm_print_clock_levels(adev, OD_RANGE, buf+size); in amdgpu_get_pp_od_clk_voltage()
602 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_dpm_sclk() local
604 if (adev->powerplay.pp_funcs->print_clock_levels) in amdgpu_get_pp_dpm_sclk()
605 return amdgpu_dpm_print_clock_levels(adev, PP_SCLK, buf); in amdgpu_get_pp_dpm_sclk()
652 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_dpm_sclk() local
660 if (adev->powerplay.pp_funcs->force_clock_level) in amdgpu_set_pp_dpm_sclk()
661 amdgpu_dpm_force_clock_level(adev, PP_SCLK, mask); in amdgpu_set_pp_dpm_sclk()
671 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_dpm_mclk() local
673 if (adev->powerplay.pp_funcs->print_clock_levels) in amdgpu_get_pp_dpm_mclk()
674 return amdgpu_dpm_print_clock_levels(adev, PP_MCLK, buf); in amdgpu_get_pp_dpm_mclk()
685 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_dpm_mclk() local
693 if (adev->powerplay.pp_funcs->force_clock_level) in amdgpu_set_pp_dpm_mclk()
694 amdgpu_dpm_force_clock_level(adev, PP_MCLK, mask); in amdgpu_set_pp_dpm_mclk()
704 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_dpm_pcie() local
706 if (adev->powerplay.pp_funcs->print_clock_levels) in amdgpu_get_pp_dpm_pcie()
707 return amdgpu_dpm_print_clock_levels(adev, PP_PCIE, buf); in amdgpu_get_pp_dpm_pcie()
718 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_dpm_pcie() local
726 if (adev->powerplay.pp_funcs->force_clock_level) in amdgpu_set_pp_dpm_pcie()
727 amdgpu_dpm_force_clock_level(adev, PP_PCIE, mask); in amdgpu_set_pp_dpm_pcie()
737 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_sclk_od() local
740 if (adev->powerplay.pp_funcs->get_sclk_od) in amdgpu_get_pp_sclk_od()
741 value = amdgpu_dpm_get_sclk_od(adev); in amdgpu_get_pp_sclk_od()
752 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_sclk_od() local
762 if (adev->powerplay.pp_funcs->set_sclk_od) in amdgpu_set_pp_sclk_od()
763 amdgpu_dpm_set_sclk_od(adev, (uint32_t)value); in amdgpu_set_pp_sclk_od()
765 if (adev->powerplay.pp_funcs->dispatch_tasks) { in amdgpu_set_pp_sclk_od()
766 amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_READJUST_POWER_STATE, NULL); in amdgpu_set_pp_sclk_od()
768 adev->pm.dpm.current_ps = adev->pm.dpm.boot_ps; in amdgpu_set_pp_sclk_od()
769 amdgpu_pm_compute_clocks(adev); in amdgpu_set_pp_sclk_od()
781 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_mclk_od() local
784 if (adev->powerplay.pp_funcs->get_mclk_od) in amdgpu_get_pp_mclk_od()
785 value = amdgpu_dpm_get_mclk_od(adev); in amdgpu_get_pp_mclk_od()
796 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_mclk_od() local
806 if (adev->powerplay.pp_funcs->set_mclk_od) in amdgpu_set_pp_mclk_od()
807 amdgpu_dpm_set_mclk_od(adev, (uint32_t)value); in amdgpu_set_pp_mclk_od()
809 if (adev->powerplay.pp_funcs->dispatch_tasks) { in amdgpu_set_pp_mclk_od()
810 amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_READJUST_POWER_STATE, NULL); in amdgpu_set_pp_mclk_od()
812 adev->pm.dpm.current_ps = adev->pm.dpm.boot_ps; in amdgpu_set_pp_mclk_od()
813 amdgpu_pm_compute_clocks(adev); in amdgpu_set_pp_mclk_od()
845 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_pp_power_profile_mode() local
847 if (adev->powerplay.pp_funcs->get_power_profile_mode) in amdgpu_get_pp_power_profile_mode()
848 return amdgpu_dpm_get_power_profile_mode(adev, buf); in amdgpu_get_pp_power_profile_mode()
861 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_set_pp_power_profile_mode() local
897 if (adev->powerplay.pp_funcs->set_power_profile_mode) in amdgpu_set_pp_power_profile_mode()
898 ret = amdgpu_dpm_set_power_profile_mode(adev, parameter, parameter_size); in amdgpu_set_pp_power_profile_mode()
919 struct amdgpu_device *adev = ddev->dev_private; in amdgpu_get_busy_percent() local
923 if (!(adev->powerplay.pp_funcs && in amdgpu_get_busy_percent()
924 adev->powerplay.pp_funcs->read_sensor)) in amdgpu_get_busy_percent()
928 r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_LOAD, in amdgpu_get_busy_percent()
976 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_show_temp() local
977 struct drm_device *ddev = adev->ddev; in amdgpu_hwmon_show_temp()
981 if ((adev->flags & AMD_IS_PX) && in amdgpu_hwmon_show_temp()
986 if (!(adev->powerplay.pp_funcs && in amdgpu_hwmon_show_temp()
987 adev->powerplay.pp_funcs->read_sensor)) in amdgpu_hwmon_show_temp()
991 r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_TEMP, in amdgpu_hwmon_show_temp()
1003 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_show_temp_thresh() local
1008 temp = adev->pm.dpm.thermal.min_temp; in amdgpu_hwmon_show_temp_thresh()
1010 temp = adev->pm.dpm.thermal.max_temp; in amdgpu_hwmon_show_temp_thresh()
1019 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_get_pwm1_enable() local
1022 if (!adev->powerplay.pp_funcs->get_fan_control_mode) in amdgpu_hwmon_get_pwm1_enable()
1025 pwm_mode = amdgpu_dpm_get_fan_control_mode(adev); in amdgpu_hwmon_get_pwm1_enable()
1035 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_set_pwm1_enable() local
1040 if ((adev->flags & AMD_IS_PX) && in amdgpu_hwmon_set_pwm1_enable()
1041 (adev->ddev->switch_power_state != DRM_SWITCH_POWER_ON)) in amdgpu_hwmon_set_pwm1_enable()
1044 if (!adev->powerplay.pp_funcs->set_fan_control_mode) in amdgpu_hwmon_set_pwm1_enable()
1051 amdgpu_dpm_set_fan_control_mode(adev, value); in amdgpu_hwmon_set_pwm1_enable()
1074 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_set_pwm1() local
1079 if ((adev->flags & AMD_IS_PX) && in amdgpu_hwmon_set_pwm1()
1080 (adev->ddev->switch_power_state != DRM_SWITCH_POWER_ON)) in amdgpu_hwmon_set_pwm1()
1089 if (adev->powerplay.pp_funcs->set_fan_speed_percent) { in amdgpu_hwmon_set_pwm1()
1090 err = amdgpu_dpm_set_fan_speed_percent(adev, value); in amdgpu_hwmon_set_pwm1()
1102 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_get_pwm1() local
1107 if ((adev->flags & AMD_IS_PX) && in amdgpu_hwmon_get_pwm1()
1108 (adev->ddev->switch_power_state != DRM_SWITCH_POWER_ON)) in amdgpu_hwmon_get_pwm1()
1111 if (adev->powerplay.pp_funcs->get_fan_speed_percent) { in amdgpu_hwmon_get_pwm1()
1112 err = amdgpu_dpm_get_fan_speed_percent(adev, &speed); in amdgpu_hwmon_get_pwm1()
1126 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_get_fan1_input() local
1131 if ((adev->flags & AMD_IS_PX) && in amdgpu_hwmon_get_fan1_input()
1132 (adev->ddev->switch_power_state != DRM_SWITCH_POWER_ON)) in amdgpu_hwmon_get_fan1_input()
1135 if (adev->powerplay.pp_funcs->get_fan_speed_rpm) { in amdgpu_hwmon_get_fan1_input()
1136 err = amdgpu_dpm_get_fan_speed_rpm(adev, &speed); in amdgpu_hwmon_get_fan1_input()
1148 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_show_vddgfx() local
1149 struct drm_device *ddev = adev->ddev; in amdgpu_hwmon_show_vddgfx()
1154 if ((adev->flags & AMD_IS_PX) && in amdgpu_hwmon_show_vddgfx()
1159 if (!(adev->powerplay.pp_funcs && in amdgpu_hwmon_show_vddgfx()
1160 adev->powerplay.pp_funcs->read_sensor)) in amdgpu_hwmon_show_vddgfx()
1164 r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDGFX, in amdgpu_hwmon_show_vddgfx()
1183 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_show_vddnb() local
1184 struct drm_device *ddev = adev->ddev; in amdgpu_hwmon_show_vddnb()
1189 if (!(adev->flags & AMD_IS_APU)) in amdgpu_hwmon_show_vddnb()
1193 if ((adev->flags & AMD_IS_PX) && in amdgpu_hwmon_show_vddnb()
1198 if (!(adev->powerplay.pp_funcs && in amdgpu_hwmon_show_vddnb()
1199 adev->powerplay.pp_funcs->read_sensor)) in amdgpu_hwmon_show_vddnb()
1203 r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDNB, in amdgpu_hwmon_show_vddnb()
1222 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_show_power_avg() local
1223 struct drm_device *ddev = adev->ddev; in amdgpu_hwmon_show_power_avg()
1229 if ((adev->flags & AMD_IS_PX) && in amdgpu_hwmon_show_power_avg()
1234 if (!(adev->powerplay.pp_funcs && in amdgpu_hwmon_show_power_avg()
1235 adev->powerplay.pp_funcs->read_sensor)) in amdgpu_hwmon_show_power_avg()
1239 r = amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_POWER, in amdgpu_hwmon_show_power_avg()
1261 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_show_power_cap_max() local
1264 if (adev->powerplay.pp_funcs && adev->powerplay.pp_funcs->get_power_limit) { in amdgpu_hwmon_show_power_cap_max()
1265 adev->powerplay.pp_funcs->get_power_limit(adev->powerplay.pp_handle, &limit, true); in amdgpu_hwmon_show_power_cap_max()
1276 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_show_power_cap() local
1279 if (adev->powerplay.pp_funcs && adev->powerplay.pp_funcs->get_power_limit) { in amdgpu_hwmon_show_power_cap()
1280 adev->powerplay.pp_funcs->get_power_limit(adev->powerplay.pp_handle, &limit, false); in amdgpu_hwmon_show_power_cap()
1293 struct amdgpu_device *adev = dev_get_drvdata(dev); in amdgpu_hwmon_set_power_cap() local
1302 if (adev->powerplay.pp_funcs && adev->powerplay.pp_funcs->set_power_limit) { in amdgpu_hwmon_set_power_cap()
1303 err = adev->powerplay.pp_funcs->set_power_limit(adev->powerplay.pp_handle, value); in amdgpu_hwmon_set_power_cap()
1410 struct amdgpu_device *adev = dev_get_drvdata(dev); in hwmon_attributes_visible() local
1415 if (adev->pm.no_fan && (attr == &sensor_dev_attr_pwm1.dev_attr.attr || in hwmon_attributes_visible()
1423 if (!adev->pm.dpm_enabled && in hwmon_attributes_visible()
1433 if ((!adev->powerplay.pp_funcs->get_fan_speed_percent && in hwmon_attributes_visible()
1435 (!adev->powerplay.pp_funcs->get_fan_control_mode && in hwmon_attributes_visible()
1439 if ((!adev->powerplay.pp_funcs->set_fan_speed_percent && in hwmon_attributes_visible()
1441 (!adev->powerplay.pp_funcs->set_fan_control_mode && in hwmon_attributes_visible()
1445 if ((adev->flags & AMD_IS_APU) && in hwmon_attributes_visible()
1452 if ((!adev->powerplay.pp_funcs->set_fan_speed_percent && in hwmon_attributes_visible()
1453 !adev->powerplay.pp_funcs->get_fan_speed_percent) && in hwmon_attributes_visible()
1459 if (!(adev->flags & AMD_IS_APU) && in hwmon_attributes_visible()
1479 struct amdgpu_device *adev = in amdgpu_dpm_thermal_work_handler() local
1486 if (!adev->pm.dpm_enabled) in amdgpu_dpm_thermal_work_handler()
1489 if (adev->powerplay.pp_funcs && in amdgpu_dpm_thermal_work_handler()
1490 adev->powerplay.pp_funcs->read_sensor && in amdgpu_dpm_thermal_work_handler()
1491 !amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_TEMP, in amdgpu_dpm_thermal_work_handler()
1493 if (temp < adev->pm.dpm.thermal.min_temp) in amdgpu_dpm_thermal_work_handler()
1495 dpm_state = adev->pm.dpm.user_state; in amdgpu_dpm_thermal_work_handler()
1497 if (adev->pm.dpm.thermal.high_to_low) in amdgpu_dpm_thermal_work_handler()
1499 dpm_state = adev->pm.dpm.user_state; in amdgpu_dpm_thermal_work_handler()
1501 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_thermal_work_handler()
1503 adev->pm.dpm.thermal_active = true; in amdgpu_dpm_thermal_work_handler()
1505 adev->pm.dpm.thermal_active = false; in amdgpu_dpm_thermal_work_handler()
1506 adev->pm.dpm.state = dpm_state; in amdgpu_dpm_thermal_work_handler()
1507 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_thermal_work_handler()
1509 amdgpu_pm_compute_clocks(adev); in amdgpu_dpm_thermal_work_handler()
1512 static struct amdgpu_ps *amdgpu_dpm_pick_power_state(struct amdgpu_device *adev, in amdgpu_dpm_pick_power_state() argument
1518 bool single_display = (adev->pm.dpm.new_active_crtc_count < 2) ? in amdgpu_dpm_pick_power_state()
1522 if (single_display && adev->powerplay.pp_funcs->vblank_too_short) { in amdgpu_dpm_pick_power_state()
1523 if (amdgpu_dpm_vblank_too_short(adev)) in amdgpu_dpm_pick_power_state()
1538 for (i = 0; i < adev->pm.dpm.num_ps; i++) { in amdgpu_dpm_pick_power_state()
1539 ps = &adev->pm.dpm.ps[i]; in amdgpu_dpm_pick_power_state()
1572 if (adev->pm.dpm.uvd_ps) in amdgpu_dpm_pick_power_state()
1573 return adev->pm.dpm.uvd_ps; in amdgpu_dpm_pick_power_state()
1593 return adev->pm.dpm.boot_ps; in amdgpu_dpm_pick_power_state()
1622 if (adev->pm.dpm.uvd_ps) { in amdgpu_dpm_pick_power_state()
1623 return adev->pm.dpm.uvd_ps; in amdgpu_dpm_pick_power_state()
1646 static void amdgpu_dpm_change_power_state_locked(struct amdgpu_device *adev) in amdgpu_dpm_change_power_state_locked() argument
1654 if (!adev->pm.dpm_enabled) in amdgpu_dpm_change_power_state_locked()
1657 if (adev->pm.dpm.user_state != adev->pm.dpm.state) { in amdgpu_dpm_change_power_state_locked()
1659 if ((!adev->pm.dpm.thermal_active) && in amdgpu_dpm_change_power_state_locked()
1660 (!adev->pm.dpm.uvd_active)) in amdgpu_dpm_change_power_state_locked()
1661 adev->pm.dpm.state = adev->pm.dpm.user_state; in amdgpu_dpm_change_power_state_locked()
1663 dpm_state = adev->pm.dpm.state; in amdgpu_dpm_change_power_state_locked()
1665 ps = amdgpu_dpm_pick_power_state(adev, dpm_state); in amdgpu_dpm_change_power_state_locked()
1667 adev->pm.dpm.requested_ps = ps; in amdgpu_dpm_change_power_state_locked()
1671 if (amdgpu_dpm == 1 && adev->powerplay.pp_funcs->print_power_state) { in amdgpu_dpm_change_power_state_locked()
1673 amdgpu_dpm_print_power_state(adev, adev->pm.dpm.current_ps); in amdgpu_dpm_change_power_state_locked()
1675 amdgpu_dpm_print_power_state(adev, adev->pm.dpm.requested_ps); in amdgpu_dpm_change_power_state_locked()
1679 ps->vce_active = adev->pm.dpm.vce_active; in amdgpu_dpm_change_power_state_locked()
1680 if (adev->powerplay.pp_funcs->display_configuration_changed) in amdgpu_dpm_change_power_state_locked()
1681 amdgpu_dpm_display_configuration_changed(adev); in amdgpu_dpm_change_power_state_locked()
1683 ret = amdgpu_dpm_pre_set_power_state(adev); in amdgpu_dpm_change_power_state_locked()
1687 if (adev->powerplay.pp_funcs->check_state_equal) { in amdgpu_dpm_change_power_state_locked()
1688 …if (0 != amdgpu_dpm_check_state_equal(adev, adev->pm.dpm.current_ps, adev->pm.dpm.requested_ps, &e… in amdgpu_dpm_change_power_state_locked()
1695 amdgpu_dpm_set_power_state(adev); in amdgpu_dpm_change_power_state_locked()
1696 amdgpu_dpm_post_set_power_state(adev); in amdgpu_dpm_change_power_state_locked()
1698 adev->pm.dpm.current_active_crtcs = adev->pm.dpm.new_active_crtcs; in amdgpu_dpm_change_power_state_locked()
1699 adev->pm.dpm.current_active_crtc_count = adev->pm.dpm.new_active_crtc_count; in amdgpu_dpm_change_power_state_locked()
1701 if (adev->powerplay.pp_funcs->force_performance_level) { in amdgpu_dpm_change_power_state_locked()
1702 if (adev->pm.dpm.thermal_active) { in amdgpu_dpm_change_power_state_locked()
1703 enum amd_dpm_forced_level level = adev->pm.dpm.forced_level; in amdgpu_dpm_change_power_state_locked()
1705 amdgpu_dpm_force_performance_level(adev, AMD_DPM_FORCED_LEVEL_LOW); in amdgpu_dpm_change_power_state_locked()
1707 adev->pm.dpm.forced_level = level; in amdgpu_dpm_change_power_state_locked()
1710 amdgpu_dpm_force_performance_level(adev, adev->pm.dpm.forced_level); in amdgpu_dpm_change_power_state_locked()
1715 void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable) in amdgpu_dpm_enable_uvd() argument
1717 if (adev->powerplay.pp_funcs->set_powergating_by_smu) { in amdgpu_dpm_enable_uvd()
1719 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_enable_uvd()
1720 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_UVD, !enable); in amdgpu_dpm_enable_uvd()
1721 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_enable_uvd()
1724 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_enable_uvd()
1725 adev->pm.dpm.uvd_active = true; in amdgpu_dpm_enable_uvd()
1726 adev->pm.dpm.state = POWER_STATE_TYPE_INTERNAL_UVD; in amdgpu_dpm_enable_uvd()
1727 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_enable_uvd()
1729 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_enable_uvd()
1730 adev->pm.dpm.uvd_active = false; in amdgpu_dpm_enable_uvd()
1731 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_enable_uvd()
1733 amdgpu_pm_compute_clocks(adev); in amdgpu_dpm_enable_uvd()
1737 void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable) in amdgpu_dpm_enable_vce() argument
1739 if (adev->powerplay.pp_funcs->set_powergating_by_smu) { in amdgpu_dpm_enable_vce()
1741 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_enable_vce()
1742 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_VCE, !enable); in amdgpu_dpm_enable_vce()
1743 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_enable_vce()
1746 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_enable_vce()
1747 adev->pm.dpm.vce_active = true; in amdgpu_dpm_enable_vce()
1749 adev->pm.dpm.vce_level = AMD_VCE_LEVEL_AC_ALL; in amdgpu_dpm_enable_vce()
1750 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_enable_vce()
1751 amdgpu_device_ip_set_clockgating_state(adev, AMD_IP_BLOCK_TYPE_VCE, in amdgpu_dpm_enable_vce()
1753 amdgpu_device_ip_set_powergating_state(adev, AMD_IP_BLOCK_TYPE_VCE, in amdgpu_dpm_enable_vce()
1755 amdgpu_pm_compute_clocks(adev); in amdgpu_dpm_enable_vce()
1757 amdgpu_device_ip_set_powergating_state(adev, AMD_IP_BLOCK_TYPE_VCE, in amdgpu_dpm_enable_vce()
1759 amdgpu_device_ip_set_clockgating_state(adev, AMD_IP_BLOCK_TYPE_VCE, in amdgpu_dpm_enable_vce()
1761 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_enable_vce()
1762 adev->pm.dpm.vce_active = false; in amdgpu_dpm_enable_vce()
1763 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_enable_vce()
1764 amdgpu_pm_compute_clocks(adev); in amdgpu_dpm_enable_vce()
1770 void amdgpu_pm_print_power_states(struct amdgpu_device *adev) in amdgpu_pm_print_power_states() argument
1774 if (adev->powerplay.pp_funcs->print_power_state == NULL) in amdgpu_pm_print_power_states()
1777 for (i = 0; i < adev->pm.dpm.num_ps; i++) in amdgpu_pm_print_power_states()
1778 amdgpu_dpm_print_power_state(adev, &adev->pm.dpm.ps[i]); in amdgpu_pm_print_power_states()
1782 int amdgpu_pm_sysfs_init(struct amdgpu_device *adev) in amdgpu_pm_sysfs_init() argument
1786 if (adev->pm.sysfs_initialized) in amdgpu_pm_sysfs_init()
1789 if (adev->pm.dpm_enabled == 0) in amdgpu_pm_sysfs_init()
1792 adev->pm.int_hwmon_dev = hwmon_device_register_with_groups(adev->dev, in amdgpu_pm_sysfs_init()
1793 DRIVER_NAME, adev, in amdgpu_pm_sysfs_init()
1795 if (IS_ERR(adev->pm.int_hwmon_dev)) { in amdgpu_pm_sysfs_init()
1796 ret = PTR_ERR(adev->pm.int_hwmon_dev); in amdgpu_pm_sysfs_init()
1797 dev_err(adev->dev, in amdgpu_pm_sysfs_init()
1802 ret = device_create_file(adev->dev, &dev_attr_power_dpm_state); in amdgpu_pm_sysfs_init()
1807 ret = device_create_file(adev->dev, &dev_attr_power_dpm_force_performance_level); in amdgpu_pm_sysfs_init()
1814 ret = device_create_file(adev->dev, &dev_attr_pp_num_states); in amdgpu_pm_sysfs_init()
1819 ret = device_create_file(adev->dev, &dev_attr_pp_cur_state); in amdgpu_pm_sysfs_init()
1824 ret = device_create_file(adev->dev, &dev_attr_pp_force_state); in amdgpu_pm_sysfs_init()
1829 ret = device_create_file(adev->dev, &dev_attr_pp_table); in amdgpu_pm_sysfs_init()
1835 ret = device_create_file(adev->dev, &dev_attr_pp_dpm_sclk); in amdgpu_pm_sysfs_init()
1840 ret = device_create_file(adev->dev, &dev_attr_pp_dpm_mclk); in amdgpu_pm_sysfs_init()
1845 ret = device_create_file(adev->dev, &dev_attr_pp_dpm_pcie); in amdgpu_pm_sysfs_init()
1850 ret = device_create_file(adev->dev, &dev_attr_pp_sclk_od); in amdgpu_pm_sysfs_init()
1855 ret = device_create_file(adev->dev, &dev_attr_pp_mclk_od); in amdgpu_pm_sysfs_init()
1860 ret = device_create_file(adev->dev, in amdgpu_pm_sysfs_init()
1867 ret = device_create_file(adev->dev, in amdgpu_pm_sysfs_init()
1874 ret = device_create_file(adev->dev, in amdgpu_pm_sysfs_init()
1881 ret = amdgpu_debugfs_pm_init(adev); in amdgpu_pm_sysfs_init()
1887 adev->pm.sysfs_initialized = true; in amdgpu_pm_sysfs_init()
1892 void amdgpu_pm_sysfs_fini(struct amdgpu_device *adev) in amdgpu_pm_sysfs_fini() argument
1894 if (adev->pm.dpm_enabled == 0) in amdgpu_pm_sysfs_fini()
1897 if (adev->pm.int_hwmon_dev) in amdgpu_pm_sysfs_fini()
1898 hwmon_device_unregister(adev->pm.int_hwmon_dev); in amdgpu_pm_sysfs_fini()
1899 device_remove_file(adev->dev, &dev_attr_power_dpm_state); in amdgpu_pm_sysfs_fini()
1900 device_remove_file(adev->dev, &dev_attr_power_dpm_force_performance_level); in amdgpu_pm_sysfs_fini()
1902 device_remove_file(adev->dev, &dev_attr_pp_num_states); in amdgpu_pm_sysfs_fini()
1903 device_remove_file(adev->dev, &dev_attr_pp_cur_state); in amdgpu_pm_sysfs_fini()
1904 device_remove_file(adev->dev, &dev_attr_pp_force_state); in amdgpu_pm_sysfs_fini()
1905 device_remove_file(adev->dev, &dev_attr_pp_table); in amdgpu_pm_sysfs_fini()
1907 device_remove_file(adev->dev, &dev_attr_pp_dpm_sclk); in amdgpu_pm_sysfs_fini()
1908 device_remove_file(adev->dev, &dev_attr_pp_dpm_mclk); in amdgpu_pm_sysfs_fini()
1909 device_remove_file(adev->dev, &dev_attr_pp_dpm_pcie); in amdgpu_pm_sysfs_fini()
1910 device_remove_file(adev->dev, &dev_attr_pp_sclk_od); in amdgpu_pm_sysfs_fini()
1911 device_remove_file(adev->dev, &dev_attr_pp_mclk_od); in amdgpu_pm_sysfs_fini()
1912 device_remove_file(adev->dev, in amdgpu_pm_sysfs_fini()
1914 device_remove_file(adev->dev, in amdgpu_pm_sysfs_fini()
1916 device_remove_file(adev->dev, &dev_attr_gpu_busy_percent); in amdgpu_pm_sysfs_fini()
1919 void amdgpu_pm_compute_clocks(struct amdgpu_device *adev) in amdgpu_pm_compute_clocks() argument
1923 if (!adev->pm.dpm_enabled) in amdgpu_pm_compute_clocks()
1926 if (adev->mode_info.num_crtc) in amdgpu_pm_compute_clocks()
1927 amdgpu_display_bandwidth_update(adev); in amdgpu_pm_compute_clocks()
1930 struct amdgpu_ring *ring = adev->rings[i]; in amdgpu_pm_compute_clocks()
1935 if (adev->powerplay.pp_funcs->dispatch_tasks) { in amdgpu_pm_compute_clocks()
1936 if (!amdgpu_device_has_dc_support(adev)) { in amdgpu_pm_compute_clocks()
1937 mutex_lock(&adev->pm.mutex); in amdgpu_pm_compute_clocks()
1938 amdgpu_dpm_get_active_displays(adev); in amdgpu_pm_compute_clocks()
1939 adev->pm.pm_display_cfg.num_display = adev->pm.dpm.new_active_crtc_count; in amdgpu_pm_compute_clocks()
1940 adev->pm.pm_display_cfg.vrefresh = amdgpu_dpm_get_vrefresh(adev); in amdgpu_pm_compute_clocks()
1941 adev->pm.pm_display_cfg.min_vblank_time = amdgpu_dpm_get_vblank_time(adev); in amdgpu_pm_compute_clocks()
1943 if (adev->pm.pm_display_cfg.vrefresh > 120) in amdgpu_pm_compute_clocks()
1944 adev->pm.pm_display_cfg.min_vblank_time = 0; in amdgpu_pm_compute_clocks()
1945 if (adev->powerplay.pp_funcs->display_configuration_change) in amdgpu_pm_compute_clocks()
1946 adev->powerplay.pp_funcs->display_configuration_change( in amdgpu_pm_compute_clocks()
1947 adev->powerplay.pp_handle, in amdgpu_pm_compute_clocks()
1948 &adev->pm.pm_display_cfg); in amdgpu_pm_compute_clocks()
1949 mutex_unlock(&adev->pm.mutex); in amdgpu_pm_compute_clocks()
1951 amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_DISPLAY_CONFIG_CHANGE, NULL); in amdgpu_pm_compute_clocks()
1953 mutex_lock(&adev->pm.mutex); in amdgpu_pm_compute_clocks()
1954 amdgpu_dpm_get_active_displays(adev); in amdgpu_pm_compute_clocks()
1955 amdgpu_dpm_change_power_state_locked(adev); in amdgpu_pm_compute_clocks()
1956 mutex_unlock(&adev->pm.mutex); in amdgpu_pm_compute_clocks()
1965 static int amdgpu_debugfs_pm_info_pp(struct seq_file *m, struct amdgpu_device *adev) in amdgpu_debugfs_pm_info_pp() argument
1972 if (!(adev->powerplay.pp_funcs && in amdgpu_debugfs_pm_info_pp()
1973 adev->powerplay.pp_funcs->read_sensor)) in amdgpu_debugfs_pm_info_pp()
1979 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_MCLK, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
1981 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GFX_SCLK, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
1983 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
1985 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
1987 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDGFX, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
1989 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDNB, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
1992 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_POWER, (void *)&query, &size)) in amdgpu_debugfs_pm_info_pp()
1998 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_TEMP, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
2002 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_LOAD, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
2007 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_POWER, (void *)&value, &size)) { in amdgpu_debugfs_pm_info_pp()
2012 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_DCLK, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
2014 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_UVD_VCLK, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
2021 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VCE_POWER, (void *)&value, &size)) { in amdgpu_debugfs_pm_info_pp()
2026 if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VCE_ECCLK, (void *)&value, &size)) in amdgpu_debugfs_pm_info_pp()
2047 struct amdgpu_device *adev = dev->dev_private; in amdgpu_debugfs_pm_info() local
2048 struct drm_device *ddev = adev->ddev; in amdgpu_debugfs_pm_info()
2051 amdgpu_device_ip_get_clockgating_state(adev, &flags); in amdgpu_debugfs_pm_info()
2056 if (!adev->pm.dpm_enabled) { in amdgpu_debugfs_pm_info()
2060 if ((adev->flags & AMD_IS_PX) && in amdgpu_debugfs_pm_info()
2063 } else if (adev->powerplay.pp_funcs->debugfs_print_current_performance_level) { in amdgpu_debugfs_pm_info()
2064 mutex_lock(&adev->pm.mutex); in amdgpu_debugfs_pm_info()
2065 if (adev->powerplay.pp_funcs->debugfs_print_current_performance_level) in amdgpu_debugfs_pm_info()
2066 adev->powerplay.pp_funcs->debugfs_print_current_performance_level(adev, m); in amdgpu_debugfs_pm_info()
2069 mutex_unlock(&adev->pm.mutex); in amdgpu_debugfs_pm_info()
2071 return amdgpu_debugfs_pm_info_pp(m, adev); in amdgpu_debugfs_pm_info()
2082 static int amdgpu_debugfs_pm_init(struct amdgpu_device *adev) in amdgpu_debugfs_pm_init() argument
2085 return amdgpu_debugfs_add_files(adev, amdgpu_pm_info_list, ARRAY_SIZE(amdgpu_pm_info_list)); in amdgpu_debugfs_pm_init()