• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/gpu/drm/radeon/

Lines Matching refs:pm

65 			DRM_DEBUG_DRIVER("pm: AC\n");
67 DRM_DEBUG_DRIVER("pm: DC\n");
69 if (rdev->pm.pm_method == PM_METHOD_PROFILE) {
70 if (rdev->pm.profile == PM_PROFILE_AUTO) {
71 mutex_lock(&rdev->pm.mutex);
74 mutex_unlock(&rdev->pm.mutex);
85 switch (rdev->pm.profile) {
87 rdev->pm.profile_index = PM_PROFILE_DEFAULT_IDX;
91 if (rdev->pm.active_crtc_count > 1)
92 rdev->pm.profile_index = PM_PROFILE_HIGH_MH_IDX;
94 rdev->pm.profile_index = PM_PROFILE_HIGH_SH_IDX;
96 if (rdev->pm.active_crtc_count > 1)
97 rdev->pm.profile_index = PM_PROFILE_MID_MH_IDX;
99 rdev->pm.profile_index = PM_PROFILE_MID_SH_IDX;
103 if (rdev->pm.active_crtc_count > 1)
104 rdev->pm.profile_index = PM_PROFILE_LOW_MH_IDX;
106 rdev->pm.profile_index = PM_PROFILE_LOW_SH_IDX;
109 if (rdev->pm.active_crtc_count > 1)
110 rdev->pm.profile_index = PM_PROFILE_MID_MH_IDX;
112 rdev->pm.profile_index = PM_PROFILE_MID_SH_IDX;
115 if (rdev->pm.active_crtc_count > 1)
116 rdev->pm.profile_index = PM_PROFILE_HIGH_MH_IDX;
118 rdev->pm.profile_index = PM_PROFILE_HIGH_SH_IDX;
122 if (rdev->pm.active_crtc_count == 0) {
123 rdev->pm.requested_power_state_index =
124 rdev->pm.profiles[rdev->pm.profile_index].dpms_off_ps_idx;
125 rdev->pm.requested_clock_mode_index =
126 rdev->pm.profiles[rdev->pm.profile_index].dpms_off_cm_idx;
128 rdev->pm.requested_power_state_index =
129 rdev->pm.profiles[rdev->pm.profile_index].dpms_on_ps_idx;
130 rdev->pm.requested_clock_mode_index =
131 rdev->pm.profiles[rdev->pm.profile_index].dpms_on_cm_idx;
150 if (rdev->pm.active_crtcs) {
151 rdev->pm.vblank_sync = false;
153 rdev->irq.vblank_queue, rdev->pm.vblank_sync,
163 if ((rdev->pm.requested_clock_mode_index == rdev->pm.current_clock_mode_index) &&
164 (rdev->pm.requested_power_state_index == rdev->pm.current_power_state_index))
168 sclk = rdev->pm.power_state[rdev->pm.requested_power_state_index].
169 clock_info[rdev->pm.requested_clock_mode_index].sclk;
173 mclk = rdev->pm.power_state[rdev->pm.requested_power_state_index].
174 clock_info[rdev->pm.requested_clock_mode_index].mclk;
179 if (sclk < rdev->pm.current_sclk)
184 if (rdev->pm.pm_method == PM_METHOD_DYNPM) {
196 if (sclk != rdev->pm.current_sclk) {
200 rdev->pm.current_sclk = sclk;
205 if (rdev->asic->set_memory_clock && (mclk != rdev->pm.current_mclk)) {
209 rdev->pm.current_mclk = mclk;
219 rdev->pm.current_power_state_index = rdev->pm.requested_power_state_index;
220 rdev->pm.current_clock_mode_index = rdev->pm.requested_clock_mode_index;
222 DRM_DEBUG_DRIVER("pm: GUI not idle!!!\n");
230 if ((rdev->pm.requested_clock_mode_index == rdev->pm.current_clock_mode_index) &&
231 (rdev->pm.requested_power_state_index == rdev->pm.current_power_state_index))
242 rdev->pm.gui_idle = false;
246 rdev->irq.idle_queue, rdev->pm.gui_idle,
266 if (rdev->pm.active_crtcs & (1 << i)) {
267 rdev->pm.req_vblank |= (1 << i);
277 if (rdev->pm.req_vblank & (1 << i)) {
278 rdev->pm.req_vblank &= ~(1 << i);
286 if (rdev->pm.active_crtc_count)
289 rdev->pm.dynpm_planned_action = DYNPM_ACTION_NONE;
302 DRM_DEBUG_DRIVER("%d Power State(s)\n", rdev->pm.num_power_states);
303 for (i = 0; i < rdev->pm.num_power_states; i++) {
304 power_state = &rdev->pm.power_state[i];
307 if (i == rdev->pm.default_power_state_index)
338 int cp = rdev->pm.profile;
355 mutex_lock(&rdev->pm.mutex);
356 if (rdev->pm.pm_method == PM_METHOD_PROFILE) {
358 rdev->pm.profile = PM_PROFILE_DEFAULT;
360 rdev->pm.profile = PM_PROFILE_AUTO;
362 rdev->pm.profile = PM_PROFILE_LOW;
364 rdev->pm.profile = PM_PROFILE_MID;
366 rdev->pm.profile = PM_PROFILE_HIGH;
375 mutex_unlock(&rdev->pm.mutex);
386 int pm = rdev->pm.pm_method;
389 (pm == PM_METHOD_DYNPM) ? "dynpm" : "profile");
402 mutex_lock(&rdev->pm.mutex);
403 rdev->pm.pm_method = PM_METHOD_DYNPM;
404 rdev->pm.dynpm_state = DYNPM_STATE_PAUSED;
405 rdev->pm.dynpm_planned_action = DYNPM_ACTION_DEFAULT;
406 mutex_unlock(&rdev->pm.mutex);
410 mutex_lock(&rdev->pm.mutex);
411 if (rdev->pm.pm_method == PM_METHOD_DYNPM) {
412 cancel_delayed_work(&rdev->pm.dynpm_idle_work);
416 rdev->pm.dynpm_state = DYNPM_STATE_DISABLED;
417 rdev->pm.dynpm_planned_action = DYNPM_ACTION_NONE;
418 rdev->pm.pm_method = PM_METHOD_PROFILE;
419 mutex_unlock(&rdev->pm.mutex);
442 switch (rdev->pm.int_thermal_type) {
484 rdev->pm.int_hwmon_dev = NULL;
486 switch (rdev->pm.int_thermal_type) {
490 rdev->pm.int_hwmon_dev = hwmon_device_register(rdev->dev);
491 if (IS_ERR(rdev->pm.int_hwmon_dev)) {
492 err = PTR_ERR(rdev->pm.int_hwmon_dev);
497 dev_set_drvdata(rdev->pm.int_hwmon_dev, rdev->ddev);
498 err = sysfs_create_group(&rdev->pm.int_hwmon_dev->kobj,
515 if (rdev->pm.int_hwmon_dev) {
516 sysfs_remove_group(&rdev->pm.int_hwmon_dev->kobj, &hwmon_attrgroup);
517 hwmon_device_unregister(rdev->pm.int_hwmon_dev);
525 mutex_lock(&rdev->pm.mutex);
526 if (rdev->pm.pm_method == PM_METHOD_DYNPM) {
527 cancel_delayed_work(&rdev->pm.dynpm_idle_work);
528 if (rdev->pm.dynpm_state == DYNPM_STATE_ACTIVE)
529 rdev->pm.dynpm_state = DYNPM_STATE_SUSPENDED;
532 mutex_unlock(&rdev->pm.mutex);
540 mutex_lock(&rdev->pm.mutex);
541 rdev->pm.current_power_state_index = rdev->pm.default_power_state_index;
542 rdev->pm.current_clock_mode_index = 0;
543 rdev->pm.current_sclk = rdev->clock.default_sclk;
544 rdev->pm.current_mclk = rdev->clock.default_mclk;
545 rdev->pm.current_vddc = rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage;
546 if (rdev->pm.pm_method == PM_METHOD_DYNPM
547 && rdev->pm.dynpm_state == DYNPM_STATE_SUSPENDED) {
548 rdev->pm.dynpm_state = DYNPM_STATE_ACTIVE;
549 queue_delayed_work(rdev->wq, &rdev->pm.dynpm_idle_work,
552 mutex_unlock(&rdev->pm.mutex);
561 rdev->pm.pm_method = PM_METHOD_PROFILE;
562 rdev->pm.profile = PM_PROFILE_DEFAULT;
563 rdev->pm.dynpm_state = DYNPM_STATE_DISABLED;
564 rdev->pm.dynpm_planned_action = DYNPM_ACTION_NONE;
565 rdev->pm.dynpm_can_upclock = true;
566 rdev->pm.dynpm_can_downclock = true;
567 rdev->pm.current_sclk = rdev->clock.default_sclk;
568 rdev->pm.current_mclk = rdev->clock.default_mclk;
569 rdev->pm.int_thermal_type = THERMAL_TYPE_NONE;
584 if (rdev->pm.num_power_states > 1) {
597 INIT_DELAYED_WORK(&rdev->pm.dynpm_idle_work, radeon_dynpm_idle_work_handler);
611 if (rdev->pm.num_power_states > 1) {
614 mutex_lock(&rdev->pm.mutex);
615 if (rdev->pm.pm_method == PM_METHOD_PROFILE) {
616 rdev->pm.profile = PM_PROFILE_DEFAULT;
619 } else if (rdev->pm.pm_method == PM_METHOD_DYNPM) {
621 cancel_delayed_work(&rdev->pm.dynpm_idle_work);
624 rdev->pm.dynpm_state = DYNPM_STATE_DISABLED;
625 rdev->pm.dynpm_planned_action = DYNPM_ACTION_DEFAULT;
628 mutex_unlock(&rdev->pm.mutex);
648 if (rdev->pm.num_power_states < 2)
651 mutex_lock(&rdev->pm.mutex);
653 rdev->pm.active_crtcs = 0;
654 rdev->pm.active_crtc_count = 0;
659 rdev->pm.active_crtcs |= (1 << radeon_crtc->crtc_id);
660 rdev->pm.active_crtc_count++;
664 if (rdev->pm.pm_method == PM_METHOD_PROFILE) {
667 } else if (rdev->pm.pm_method == PM_METHOD_DYNPM) {
668 if (rdev->pm.dynpm_state != DYNPM_STATE_DISABLED) {
669 if (rdev->pm.active_crtc_count > 1) {
670 if (rdev->pm.dynpm_state == DYNPM_STATE_ACTIVE) {
671 cancel_delayed_work(&rdev->pm.dynpm_idle_work);
673 rdev->pm.dynpm_state = DYNPM_STATE_PAUSED;
674 rdev->pm.dynpm_planned_action = DYNPM_ACTION_DEFAULT;
680 } else if (rdev->pm.active_crtc_count == 1) {
683 if (rdev->pm.dynpm_state == DYNPM_STATE_MINIMUM) {
684 rdev->pm.dynpm_state = DYNPM_STATE_ACTIVE;
685 rdev->pm.dynpm_planned_action = DYNPM_ACTION_UPCLOCK;
689 queue_delayed_work(rdev->wq, &rdev->pm.dynpm_idle_work,
691 } else if (rdev->pm.dynpm_state == DYNPM_STATE_PAUSED) {
692 rdev->pm.dynpm_state = DYNPM_STATE_ACTIVE;
693 queue_delayed_work(rdev->wq, &rdev->pm.dynpm_idle_work,
698 if (rdev->pm.dynpm_state != DYNPM_STATE_MINIMUM) {
699 cancel_delayed_work(&rdev->pm.dynpm_idle_work);
701 rdev->pm.dynpm_state = DYNPM_STATE_MINIMUM;
702 rdev->pm.dynpm_planned_action = DYNPM_ACTION_MINIMUM;
710 mutex_unlock(&rdev->pm.mutex);
719 if (rdev->pm.active_crtcs & (1 << 0)) {
725 if (rdev->pm.active_crtcs & (1 << 1)) {
731 if (rdev->pm.active_crtcs & (1 << 2)) {
737 if (rdev->pm.active_crtcs & (1 << 3)) {
743 if (rdev->pm.active_crtcs & (1 << 4)) {
749 if (rdev->pm.active_crtcs & (1 << 5)) {
756 if (rdev->pm.active_crtcs & (1 << 0)) {
760 if (rdev->pm.active_crtcs & (1 << 1)) {
767 if (rdev->pm.active_crtcs & (1 << 0)) {
772 if (rdev->pm.active_crtcs & (1 << 1)) {
791 DRM_DEBUG_DRIVER("not in vbl for pm change %08x at %s\n", stat_crtc,
801 pm.dynpm_idle_work.work);
804 mutex_lock(&rdev->pm.mutex);
805 if (rdev->pm.dynpm_state == DYNPM_STATE_ACTIVE) {
821 if (rdev->pm.dynpm_planned_action == DYNPM_ACTION_DOWNCLOCK) {
822 rdev->pm.dynpm_planned_action = DYNPM_ACTION_NONE;
823 } else if (rdev->pm.dynpm_planned_action == DYNPM_ACTION_NONE &&
824 rdev->pm.dynpm_can_upclock) {
825 rdev->pm.dynpm_planned_action =
827 rdev->pm.dynpm_action_timeout = jiffies +
831 if (rdev->pm.dynpm_planned_action == DYNPM_ACTION_UPCLOCK) {
832 rdev->pm.dynpm_planned_action = DYNPM_ACTION_NONE;
833 } else if (rdev->pm.dynpm_planned_action == DYNPM_ACTION_NONE &&
834 rdev->pm.dynpm_can_downclock) {
835 rdev->pm.dynpm_planned_action =
837 rdev->pm.dynpm_action_timeout = jiffies +
845 if (rdev->pm.dynpm_planned_action != DYNPM_ACTION_NONE &&
846 jiffies > rdev->pm.dynpm_action_timeout) {
851 queue_delayed_work(rdev->wq, &rdev->pm.dynpm_idle_work,
854 mutex_unlock(&rdev->pm.mutex);
874 if (rdev->pm.current_vddc)
875 seq_printf(m, "voltage: %u mV\n", rdev->pm.current_vddc);