aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_asic.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-04-23 17:57:27 -0400
committerDave Airlie <airlied@redhat.com>2010-05-18 04:21:12 -0400
commit49e02b7306cb7e01965fe5f41ba0f80085142f6e (patch)
tree6faaa8069fae9b4768d727274df94c2a5298b1b2 /drivers/gpu/drm/radeon/radeon_asic.c
parent58e21dff53b9063563e7bb5f5a795ab2d8f61dda (diff)
drm/radeon/kms/pm: add additional asic callbacks
- pm_misc() - handles voltage, pcie lanes, and other non clock related power mode settings. Currently disabled. Needs further debugging - pm_prepare() - disables crtc mem requests right now. All memory clients need to be disabled when changing memory clocks. This function can be expanded to include disabling fb access as well. - pm_finish() - enable active memory clients. 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.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
index 1053115ba652..1e6f17bf54fd 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.c
+++ b/drivers/gpu/drm/radeon/radeon_asic.c
@@ -168,6 +168,9 @@ static struct radeon_asic r100_asic = {
168 .gui_idle = &r100_gui_idle, 168 .gui_idle = &r100_gui_idle,
169 .get_power_state = &r100_get_power_state, 169 .get_power_state = &r100_get_power_state,
170 .set_power_state = &r100_set_power_state, 170 .set_power_state = &r100_set_power_state,
171 .pm_misc = &r100_pm_misc,
172 .pm_prepare = &r100_pm_prepare,
173 .pm_finish = &r100_pm_finish,
171}; 174};
172 175
173static struct radeon_asic r200_asic = { 176static struct radeon_asic r200_asic = {
@@ -209,6 +212,9 @@ static struct radeon_asic r200_asic = {
209 .gui_idle = &r100_gui_idle, 212 .gui_idle = &r100_gui_idle,
210 .get_power_state = &r100_get_power_state, 213 .get_power_state = &r100_get_power_state,
211 .set_power_state = &r100_set_power_state, 214 .set_power_state = &r100_set_power_state,
215 .pm_misc = &r100_pm_misc,
216 .pm_prepare = &r100_pm_prepare,
217 .pm_finish = &r100_pm_finish,
212}; 218};
213 219
214static struct radeon_asic r300_asic = { 220static struct radeon_asic r300_asic = {
@@ -251,6 +257,9 @@ static struct radeon_asic r300_asic = {
251 .gui_idle = &r100_gui_idle, 257 .gui_idle = &r100_gui_idle,
252 .get_power_state = &r100_get_power_state, 258 .get_power_state = &r100_get_power_state,
253 .set_power_state = &r100_set_power_state, 259 .set_power_state = &r100_set_power_state,
260 .pm_misc = &r100_pm_misc,
261 .pm_prepare = &r100_pm_prepare,
262 .pm_finish = &r100_pm_finish,
254}; 263};
255 264
256static struct radeon_asic r300_asic_pcie = { 265static struct radeon_asic r300_asic_pcie = {
@@ -292,6 +301,9 @@ static struct radeon_asic r300_asic_pcie = {
292 .gui_idle = &r100_gui_idle, 301 .gui_idle = &r100_gui_idle,
293 .get_power_state = &r100_get_power_state, 302 .get_power_state = &r100_get_power_state,
294 .set_power_state = &r100_set_power_state, 303 .set_power_state = &r100_set_power_state,
304 .pm_misc = &r100_pm_misc,
305 .pm_prepare = &r100_pm_prepare,
306 .pm_finish = &r100_pm_finish,
295}; 307};
296 308
297static struct radeon_asic r420_asic = { 309static struct radeon_asic r420_asic = {
@@ -334,6 +346,9 @@ static struct radeon_asic r420_asic = {
334 .gui_idle = &r100_gui_idle, 346 .gui_idle = &r100_gui_idle,
335 .get_power_state = &r100_get_power_state, 347 .get_power_state = &r100_get_power_state,
336 .set_power_state = &r100_set_power_state, 348 .set_power_state = &r100_set_power_state,
349 .pm_misc = &r100_pm_misc,
350 .pm_prepare = &r100_pm_prepare,
351 .pm_finish = &r100_pm_finish,
337}; 352};
338 353
339static struct radeon_asic rs400_asic = { 354static struct radeon_asic rs400_asic = {
@@ -376,6 +391,9 @@ static struct radeon_asic rs400_asic = {
376 .gui_idle = &r100_gui_idle, 391 .gui_idle = &r100_gui_idle,
377 .get_power_state = &r100_get_power_state, 392 .get_power_state = &r100_get_power_state,
378 .set_power_state = &r100_set_power_state, 393 .set_power_state = &r100_set_power_state,
394 .pm_misc = &r100_pm_misc,
395 .pm_prepare = &r100_pm_prepare,
396 .pm_finish = &r100_pm_finish,
379}; 397};
380 398
381static struct radeon_asic rs600_asic = { 399static struct radeon_asic rs600_asic = {
@@ -418,6 +436,9 @@ static struct radeon_asic rs600_asic = {
418 .gui_idle = &r100_gui_idle, 436 .gui_idle = &r100_gui_idle,
419 .get_power_state = &r100_get_power_state, 437 .get_power_state = &r100_get_power_state,
420 .set_power_state = &r100_set_power_state, 438 .set_power_state = &r100_set_power_state,
439 .pm_misc = &rs600_pm_misc,
440 .pm_prepare = &rs600_pm_prepare,
441 .pm_finish = &rs600_pm_finish,
421}; 442};
422 443
423static struct radeon_asic rs690_asic = { 444static struct radeon_asic rs690_asic = {
@@ -460,6 +481,9 @@ static struct radeon_asic rs690_asic = {
460 .gui_idle = &r100_gui_idle, 481 .gui_idle = &r100_gui_idle,
461 .get_power_state = &r100_get_power_state, 482 .get_power_state = &r100_get_power_state,
462 .set_power_state = &r100_set_power_state, 483 .set_power_state = &r100_set_power_state,
484 .pm_misc = &rs600_pm_misc,
485 .pm_prepare = &rs600_pm_prepare,
486 .pm_finish = &rs600_pm_finish,
463}; 487};
464 488
465static struct radeon_asic rv515_asic = { 489static struct radeon_asic rv515_asic = {
@@ -502,6 +526,9 @@ static struct radeon_asic rv515_asic = {
502 .gui_idle = &r100_gui_idle, 526 .gui_idle = &r100_gui_idle,
503 .get_power_state = &r100_get_power_state, 527 .get_power_state = &r100_get_power_state,
504 .set_power_state = &r100_set_power_state, 528 .set_power_state = &r100_set_power_state,
529 .pm_misc = &rs600_pm_misc,
530 .pm_prepare = &rs600_pm_prepare,
531 .pm_finish = &rs600_pm_finish,
505}; 532};
506 533
507static struct radeon_asic r520_asic = { 534static struct radeon_asic r520_asic = {
@@ -544,6 +571,9 @@ static struct radeon_asic r520_asic = {
544 .gui_idle = &r100_gui_idle, 571 .gui_idle = &r100_gui_idle,
545 .get_power_state = &r100_get_power_state, 572 .get_power_state = &r100_get_power_state,
546 .set_power_state = &r100_set_power_state, 573 .set_power_state = &r100_set_power_state,
574 .pm_misc = &rs600_pm_misc,
575 .pm_prepare = &rs600_pm_prepare,
576 .pm_finish = &rs600_pm_finish,
547}; 577};
548 578
549static struct radeon_asic r600_asic = { 579static struct radeon_asic r600_asic = {
@@ -585,6 +615,9 @@ static struct radeon_asic r600_asic = {
585 .gui_idle = &r600_gui_idle, 615 .gui_idle = &r600_gui_idle,
586 .get_power_state = &r600_get_power_state, 616 .get_power_state = &r600_get_power_state,
587 .set_power_state = &r600_set_power_state, 617 .set_power_state = &r600_set_power_state,
618 .pm_misc = &r600_pm_misc,
619 .pm_prepare = &rs600_pm_prepare,
620 .pm_finish = &rs600_pm_finish,
588}; 621};
589 622
590static struct radeon_asic rs780_asic = { 623static struct radeon_asic rs780_asic = {
@@ -626,6 +659,9 @@ static struct radeon_asic rs780_asic = {
626 .gui_idle = &r600_gui_idle, 659 .gui_idle = &r600_gui_idle,
627 .get_power_state = &r600_get_power_state, 660 .get_power_state = &r600_get_power_state,
628 .set_power_state = &r600_set_power_state, 661 .set_power_state = &r600_set_power_state,
662 .pm_misc = &r600_pm_misc,
663 .pm_prepare = &rs600_pm_prepare,
664 .pm_finish = &rs600_pm_finish,
629}; 665};
630 666
631static struct radeon_asic rv770_asic = { 667static struct radeon_asic rv770_asic = {
@@ -667,6 +703,9 @@ static struct radeon_asic rv770_asic = {
667 .gui_idle = &r600_gui_idle, 703 .gui_idle = &r600_gui_idle,
668 .get_power_state = &r600_get_power_state, 704 .get_power_state = &r600_get_power_state,
669 .set_power_state = &r600_set_power_state, 705 .set_power_state = &r600_set_power_state,
706 .pm_misc = &rv770_pm_misc,
707 .pm_prepare = &rs600_pm_prepare,
708 .pm_finish = &rs600_pm_finish,
670}; 709};
671 710
672static struct radeon_asic evergreen_asic = { 711static struct radeon_asic evergreen_asic = {
@@ -706,6 +745,9 @@ static struct radeon_asic evergreen_asic = {
706 .gui_idle = &r600_gui_idle, 745 .gui_idle = &r600_gui_idle,
707 .get_power_state = &r600_get_power_state, 746 .get_power_state = &r600_get_power_state,
708 .set_power_state = &r600_set_power_state, 747 .set_power_state = &r600_set_power_state,
748 .pm_misc = &evergreen_pm_misc,
749 .pm_prepare = &evergreen_pm_prepare,
750 .pm_finish = &evergreen_pm_finish,
709}; 751};
710 752
711int radeon_asic_init(struct radeon_device *rdev) 753int radeon_asic_init(struct radeon_device *rdev)