aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_asic.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-04-22 14:03:55 -0400
committerDave Airlie <airlied@redhat.com>2010-05-18 04:20:58 -0400
commita48b9b4edb8bb87deb13b9f088a595cf71457b69 (patch)
tree2cfe4156f911042a6c3943ee98503d452941dd92 /drivers/gpu/drm/radeon/radeon_asic.c
parentbae6b5627387a950a8faf366d6027bd0a7a93078 (diff)
drm/radeon/kms/pm: add asic specific callbacks for getting power state (v2)
This also simplifies the code and enables reclocking with multiple heads active by tracking whether the power states are single or multi-head capable. Eventually, we will want to select a power state based on external factors (AC/DC state, user selection, etc.). (v2) Update for evergreen Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_asic.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
index 48893fbb6582..1053115ba652 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.c
+++ b/drivers/gpu/drm/radeon/radeon_asic.c
@@ -166,6 +166,7 @@ static struct radeon_asic r100_asic = {
166 .hpd_set_polarity = &r100_hpd_set_polarity, 166 .hpd_set_polarity = &r100_hpd_set_polarity,
167 .ioctl_wait_idle = NULL, 167 .ioctl_wait_idle = NULL,
168 .gui_idle = &r100_gui_idle, 168 .gui_idle = &r100_gui_idle,
169 .get_power_state = &r100_get_power_state,
169 .set_power_state = &r100_set_power_state, 170 .set_power_state = &r100_set_power_state,
170}; 171};
171 172
@@ -206,6 +207,7 @@ static struct radeon_asic r200_asic = {
206 .hpd_set_polarity = &r100_hpd_set_polarity, 207 .hpd_set_polarity = &r100_hpd_set_polarity,
207 .ioctl_wait_idle = NULL, 208 .ioctl_wait_idle = NULL,
208 .gui_idle = &r100_gui_idle, 209 .gui_idle = &r100_gui_idle,
210 .get_power_state = &r100_get_power_state,
209 .set_power_state = &r100_set_power_state, 211 .set_power_state = &r100_set_power_state,
210}; 212};
211 213
@@ -247,6 +249,7 @@ static struct radeon_asic r300_asic = {
247 .hpd_set_polarity = &r100_hpd_set_polarity, 249 .hpd_set_polarity = &r100_hpd_set_polarity,
248 .ioctl_wait_idle = NULL, 250 .ioctl_wait_idle = NULL,
249 .gui_idle = &r100_gui_idle, 251 .gui_idle = &r100_gui_idle,
252 .get_power_state = &r100_get_power_state,
250 .set_power_state = &r100_set_power_state, 253 .set_power_state = &r100_set_power_state,
251}; 254};
252 255
@@ -287,6 +290,7 @@ static struct radeon_asic r300_asic_pcie = {
287 .hpd_set_polarity = &r100_hpd_set_polarity, 290 .hpd_set_polarity = &r100_hpd_set_polarity,
288 .ioctl_wait_idle = NULL, 291 .ioctl_wait_idle = NULL,
289 .gui_idle = &r100_gui_idle, 292 .gui_idle = &r100_gui_idle,
293 .get_power_state = &r100_get_power_state,
290 .set_power_state = &r100_set_power_state, 294 .set_power_state = &r100_set_power_state,
291}; 295};
292 296
@@ -328,6 +332,7 @@ static struct radeon_asic r420_asic = {
328 .hpd_set_polarity = &r100_hpd_set_polarity, 332 .hpd_set_polarity = &r100_hpd_set_polarity,
329 .ioctl_wait_idle = NULL, 333 .ioctl_wait_idle = NULL,
330 .gui_idle = &r100_gui_idle, 334 .gui_idle = &r100_gui_idle,
335 .get_power_state = &r100_get_power_state,
331 .set_power_state = &r100_set_power_state, 336 .set_power_state = &r100_set_power_state,
332}; 337};
333 338
@@ -369,6 +374,7 @@ static struct radeon_asic rs400_asic = {
369 .hpd_set_polarity = &r100_hpd_set_polarity, 374 .hpd_set_polarity = &r100_hpd_set_polarity,
370 .ioctl_wait_idle = NULL, 375 .ioctl_wait_idle = NULL,
371 .gui_idle = &r100_gui_idle, 376 .gui_idle = &r100_gui_idle,
377 .get_power_state = &r100_get_power_state,
372 .set_power_state = &r100_set_power_state, 378 .set_power_state = &r100_set_power_state,
373}; 379};
374 380
@@ -410,6 +416,7 @@ static struct radeon_asic rs600_asic = {
410 .hpd_set_polarity = &rs600_hpd_set_polarity, 416 .hpd_set_polarity = &rs600_hpd_set_polarity,
411 .ioctl_wait_idle = NULL, 417 .ioctl_wait_idle = NULL,
412 .gui_idle = &r100_gui_idle, 418 .gui_idle = &r100_gui_idle,
419 .get_power_state = &r100_get_power_state,
413 .set_power_state = &r100_set_power_state, 420 .set_power_state = &r100_set_power_state,
414}; 421};
415 422
@@ -451,6 +458,7 @@ static struct radeon_asic rs690_asic = {
451 .hpd_set_polarity = &rs600_hpd_set_polarity, 458 .hpd_set_polarity = &rs600_hpd_set_polarity,
452 .ioctl_wait_idle = NULL, 459 .ioctl_wait_idle = NULL,
453 .gui_idle = &r100_gui_idle, 460 .gui_idle = &r100_gui_idle,
461 .get_power_state = &r100_get_power_state,
454 .set_power_state = &r100_set_power_state, 462 .set_power_state = &r100_set_power_state,
455}; 463};
456 464
@@ -492,6 +500,7 @@ static struct radeon_asic rv515_asic = {
492 .hpd_set_polarity = &rs600_hpd_set_polarity, 500 .hpd_set_polarity = &rs600_hpd_set_polarity,
493 .ioctl_wait_idle = NULL, 501 .ioctl_wait_idle = NULL,
494 .gui_idle = &r100_gui_idle, 502 .gui_idle = &r100_gui_idle,
503 .get_power_state = &r100_get_power_state,
495 .set_power_state = &r100_set_power_state, 504 .set_power_state = &r100_set_power_state,
496}; 505};
497 506
@@ -533,6 +542,7 @@ static struct radeon_asic r520_asic = {
533 .hpd_set_polarity = &rs600_hpd_set_polarity, 542 .hpd_set_polarity = &rs600_hpd_set_polarity,
534 .ioctl_wait_idle = NULL, 543 .ioctl_wait_idle = NULL,
535 .gui_idle = &r100_gui_idle, 544 .gui_idle = &r100_gui_idle,
545 .get_power_state = &r100_get_power_state,
536 .set_power_state = &r100_set_power_state, 546 .set_power_state = &r100_set_power_state,
537}; 547};
538 548
@@ -573,6 +583,7 @@ static struct radeon_asic r600_asic = {
573 .hpd_set_polarity = &r600_hpd_set_polarity, 583 .hpd_set_polarity = &r600_hpd_set_polarity,
574 .ioctl_wait_idle = r600_ioctl_wait_idle, 584 .ioctl_wait_idle = r600_ioctl_wait_idle,
575 .gui_idle = &r600_gui_idle, 585 .gui_idle = &r600_gui_idle,
586 .get_power_state = &r600_get_power_state,
576 .set_power_state = &r600_set_power_state, 587 .set_power_state = &r600_set_power_state,
577}; 588};
578 589
@@ -613,6 +624,7 @@ static struct radeon_asic rs780_asic = {
613 .hpd_set_polarity = &r600_hpd_set_polarity, 624 .hpd_set_polarity = &r600_hpd_set_polarity,
614 .ioctl_wait_idle = r600_ioctl_wait_idle, 625 .ioctl_wait_idle = r600_ioctl_wait_idle,
615 .gui_idle = &r600_gui_idle, 626 .gui_idle = &r600_gui_idle,
627 .get_power_state = &r600_get_power_state,
616 .set_power_state = &r600_set_power_state, 628 .set_power_state = &r600_set_power_state,
617}; 629};
618 630
@@ -653,6 +665,7 @@ static struct radeon_asic rv770_asic = {
653 .hpd_set_polarity = &r600_hpd_set_polarity, 665 .hpd_set_polarity = &r600_hpd_set_polarity,
654 .ioctl_wait_idle = r600_ioctl_wait_idle, 666 .ioctl_wait_idle = r600_ioctl_wait_idle,
655 .gui_idle = &r600_gui_idle, 667 .gui_idle = &r600_gui_idle,
668 .get_power_state = &r600_get_power_state,
656 .set_power_state = &r600_set_power_state, 669 .set_power_state = &r600_set_power_state,
657}; 670};
658 671
@@ -691,6 +704,7 @@ static struct radeon_asic evergreen_asic = {
691 .hpd_sense = &evergreen_hpd_sense, 704 .hpd_sense = &evergreen_hpd_sense,
692 .hpd_set_polarity = &evergreen_hpd_set_polarity, 705 .hpd_set_polarity = &evergreen_hpd_set_polarity,
693 .gui_idle = &r600_gui_idle, 706 .gui_idle = &r600_gui_idle,
707 .get_power_state = &r600_get_power_state,
694 .set_power_state = &r600_set_power_state, 708 .set_power_state = &r600_set_power_state,
695}; 709};
696 710