diff options
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 935 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 249 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/si.c | 442 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 211 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/include/amd_shared.h | 4 |
7 files changed, 1218 insertions, 631 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c index e564442b6393..b4e4ec630e8c 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | |||
@@ -1944,9 +1944,7 @@ static int dce_v6_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
1944 | 1944 | ||
1945 | dce_v6_0_lock_cursor(crtc, true); | 1945 | dce_v6_0_lock_cursor(crtc, true); |
1946 | 1946 | ||
1947 | if (width != amdgpu_crtc->cursor_width || | 1947 | if (hot_x != amdgpu_crtc->cursor_hot_x || |
1948 | height != amdgpu_crtc->cursor_height || | ||
1949 | hot_x != amdgpu_crtc->cursor_hot_x || | ||
1950 | hot_y != amdgpu_crtc->cursor_hot_y) { | 1948 | hot_y != amdgpu_crtc->cursor_hot_y) { |
1951 | int x, y; | 1949 | int x, y; |
1952 | 1950 | ||
@@ -1955,8 +1953,6 @@ static int dce_v6_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
1955 | 1953 | ||
1956 | dce_v6_0_cursor_move_locked(crtc, x, y); | 1954 | dce_v6_0_cursor_move_locked(crtc, x, y); |
1957 | 1955 | ||
1958 | amdgpu_crtc->cursor_width = width; | ||
1959 | amdgpu_crtc->cursor_height = height; | ||
1960 | amdgpu_crtc->cursor_hot_x = hot_x; | 1956 | amdgpu_crtc->cursor_hot_x = hot_x; |
1961 | amdgpu_crtc->cursor_hot_y = hot_y; | 1957 | amdgpu_crtc->cursor_hot_y = hot_y; |
1962 | } | 1958 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c index 6ce7fb42dbef..584abe834a3c 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | |||
@@ -2438,8 +2438,6 @@ static int dce_v8_0_crtc_cursor_set2(struct drm_crtc *crtc, | |||
2438 | 2438 | ||
2439 | dce_v8_0_cursor_move_locked(crtc, x, y); | 2439 | dce_v8_0_cursor_move_locked(crtc, x, y); |
2440 | 2440 | ||
2441 | amdgpu_crtc->cursor_width = width; | ||
2442 | amdgpu_crtc->cursor_height = height; | ||
2443 | amdgpu_crtc->cursor_hot_x = hot_x; | 2441 | amdgpu_crtc->cursor_hot_x = hot_x; |
2444 | amdgpu_crtc->cursor_hot_y = hot_y; | 2442 | amdgpu_crtc->cursor_hot_y = hot_y; |
2445 | } | 2443 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c index 558640aee15a..b323f5ef64d2 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | |||
@@ -411,244 +411,587 @@ static void gfx_v6_0_tiling_mode_table_init(struct amdgpu_device *adev) | |||
411 | break; | 411 | break; |
412 | } | 412 | } |
413 | 413 | ||
414 | if (adev->asic_type == CHIP_VERDE || | 414 | if (adev->asic_type == CHIP_VERDE) { |
415 | adev->asic_type == CHIP_OLAND || | ||
416 | adev->asic_type == CHIP_HAINAN) { | ||
417 | for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) { | 415 | for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) { |
418 | switch (reg_offset) { | 416 | switch (reg_offset) { |
419 | case 0: | 417 | case 0: |
420 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 418 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
421 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 419 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
422 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 420 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
423 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | 421 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | |
424 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
425 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 422 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
426 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 423 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
427 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4)); | 424 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) | |
425 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
428 | break; | 426 | break; |
429 | case 1: | 427 | case 1: |
430 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 428 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
431 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 429 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
432 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 430 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
433 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) | | 431 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) | |
434 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
435 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 432 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
436 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 433 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
437 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4)); | 434 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) | |
435 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
438 | break; | 436 | break; |
439 | case 2: | 437 | case 2: |
440 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 438 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
441 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 439 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
442 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 440 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
443 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 441 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
444 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
445 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 442 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
446 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 443 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
447 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4)); | 444 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) | |
445 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
448 | break; | 446 | break; |
449 | case 3: | 447 | case 3: |
450 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 448 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
451 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 449 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
452 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 450 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
453 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) | | ||
454 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
455 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 451 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
456 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 452 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | |
457 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4)); | 453 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
454 | NUM_BANKS(ADDR_SURF_8_BANK) | | ||
455 | TILE_SPLIT(split_equal_to_row_size)); | ||
458 | break; | 456 | break; |
459 | case 4: | 457 | case 4: |
460 | gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | 458 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
461 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 459 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | |
462 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 460 | PIPE_CONFIG(ADDR_SURF_P4_8x16)); |
463 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
464 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
465 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
466 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
467 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
468 | break; | 461 | break; |
469 | case 5: | 462 | case 5: |
470 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 463 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
471 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 464 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
472 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 465 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
473 | TILE_SPLIT(split_equal_to_row_size) | | 466 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | |
474 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
475 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 467 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
476 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | 468 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | |
477 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 469 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
470 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
478 | break; | 471 | break; |
479 | case 6: | 472 | case 6: |
480 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 473 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
481 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 474 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
482 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 475 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
483 | TILE_SPLIT(split_equal_to_row_size) | | 476 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
484 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
485 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 477 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
486 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 478 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
487 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 479 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
480 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
488 | break; | 481 | break; |
489 | case 7: | 482 | case 7: |
490 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 483 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
491 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 484 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
492 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 485 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
493 | TILE_SPLIT(split_equal_to_row_size) | | 486 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | |
494 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
495 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 487 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
496 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 488 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
497 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4)); | 489 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
490 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
498 | break; | 491 | break; |
499 | case 8: | 492 | case 8: |
500 | gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) | | 493 | gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED)); |
501 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | ||
502 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
503 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
504 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
505 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
506 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
507 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
508 | break; | 494 | break; |
509 | case 9: | 495 | case 9: |
510 | gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | 496 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | |
511 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | 497 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | |
512 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 498 | PIPE_CONFIG(ADDR_SURF_P4_8x16)); |
513 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
514 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
515 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
516 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
517 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
518 | break; | 499 | break; |
519 | case 10: | 500 | case 10: |
520 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 501 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | |
521 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | 502 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
522 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 503 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
523 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 504 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
524 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
525 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 505 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
526 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 506 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
527 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4)); | 507 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) | |
508 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
528 | break; | 509 | break; |
529 | case 11: | 510 | case 11: |
530 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 511 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | |
531 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | 512 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
532 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 513 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
533 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 514 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
534 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
535 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 515 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
536 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | 516 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | |
537 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 517 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
518 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
538 | break; | 519 | break; |
539 | case 12: | 520 | case 12: |
540 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 521 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | |
541 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | 522 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
542 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 523 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
543 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | 524 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | |
544 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
545 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 525 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
546 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 526 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | |
547 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 527 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
528 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
548 | break; | 529 | break; |
549 | case 13: | 530 | case 13: |
550 | gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | 531 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
551 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 532 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | |
552 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 533 | PIPE_CONFIG(ADDR_SURF_P4_8x16)); |
553 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
554 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
555 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
556 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
557 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
558 | break; | 534 | break; |
559 | case 14: | 535 | case 14: |
560 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 536 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
561 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 537 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
562 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 538 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
563 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 539 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
564 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
565 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 540 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
566 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 541 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
567 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 542 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
543 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
568 | break; | 544 | break; |
569 | case 15: | 545 | case 15: |
570 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 546 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
571 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 547 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
572 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 548 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
573 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 549 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
574 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
575 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 550 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
576 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | 551 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | |
577 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 552 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
553 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
578 | break; | 554 | break; |
579 | case 16: | 555 | case 16: |
580 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 556 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
581 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 557 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
582 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 558 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
583 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | 559 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | |
584 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
585 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 560 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
586 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 561 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | |
587 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 562 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
563 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
588 | break; | 564 | break; |
589 | case 17: | 565 | case 17: |
590 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 566 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
591 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 567 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
568 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
569 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
570 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
571 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
572 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
573 | TILE_SPLIT(split_equal_to_row_size)); | ||
574 | break; | ||
575 | case 18: | ||
576 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
577 | ARRAY_MODE(ARRAY_1D_TILED_THICK) | | ||
578 | PIPE_CONFIG(ADDR_SURF_P4_8x16)); | ||
579 | break; | ||
580 | case 19: | ||
581 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
582 | ARRAY_MODE(ARRAY_2D_TILED_XTHICK) | | ||
592 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | 583 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
593 | TILE_SPLIT(split_equal_to_row_size) | | 584 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
585 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
586 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
594 | NUM_BANKS(ADDR_SURF_16_BANK) | | 587 | NUM_BANKS(ADDR_SURF_16_BANK) | |
588 | TILE_SPLIT(split_equal_to_row_size)); | ||
589 | break; | ||
590 | case 20: | ||
591 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
592 | ARRAY_MODE(ARRAY_2D_TILED_THICK) | | ||
593 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
595 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 594 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
596 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 595 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | |
597 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 596 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
597 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
598 | TILE_SPLIT(split_equal_to_row_size)); | ||
598 | break; | 599 | break; |
599 | case 21: | 600 | case 21: |
600 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 601 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
601 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 602 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
602 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 603 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
603 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 604 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
604 | NUM_BANKS(ADDR_SURF_16_BANK) | | 605 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
605 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) | | ||
606 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 606 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
607 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 607 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
608 | NUM_BANKS(ADDR_SURF_8_BANK)); | ||
608 | break; | 609 | break; |
609 | case 22: | 610 | case 22: |
610 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 611 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
611 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 612 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
612 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 613 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
614 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
615 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
616 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
617 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
618 | NUM_BANKS(ADDR_SURF_8_BANK)); | ||
619 | break; | ||
620 | case 23: | ||
621 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
622 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
623 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
613 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 624 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
625 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
626 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
627 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
628 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
629 | break; | ||
630 | case 24: | ||
631 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
632 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
633 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
634 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | ||
635 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
636 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
637 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
638 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
639 | break; | ||
640 | case 25: | ||
641 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
642 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
643 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
644 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
645 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
646 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
647 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
648 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
649 | break; | ||
650 | case 26: | ||
651 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
652 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
653 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
654 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
655 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
656 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
657 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
658 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
659 | break; | ||
660 | case 27: | ||
661 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
662 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
663 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
664 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
665 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
666 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
667 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
668 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
669 | break; | ||
670 | case 28: | ||
671 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
672 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
673 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
674 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
675 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
676 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
677 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
678 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
679 | break; | ||
680 | case 29: | ||
681 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
682 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
683 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
684 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
685 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
686 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
687 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
688 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
689 | break; | ||
690 | case 30: | ||
691 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
692 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
693 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
694 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_2KB) | | ||
695 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
696 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
697 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
698 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
699 | break; | ||
700 | default: | ||
701 | continue; | ||
702 | } | ||
703 | adev->gfx.config.tile_mode_array[reg_offset] = gb_tile_moden; | ||
704 | WREG32(mmGB_TILE_MODE0 + reg_offset, gb_tile_moden); | ||
705 | } | ||
706 | } else if (adev->asic_type == CHIP_OLAND || | ||
707 | adev->asic_type == CHIP_HAINAN) { | ||
708 | for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) { | ||
709 | switch (reg_offset) { | ||
710 | case 0: | ||
711 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | ||
712 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
713 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
714 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
715 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
716 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
717 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) | | ||
718 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
719 | break; | ||
720 | case 1: | ||
721 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | ||
722 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
723 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
724 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) | | ||
725 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
726 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
727 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) | | ||
728 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
729 | break; | ||
730 | case 2: | ||
731 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | ||
732 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
733 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
734 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
735 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
736 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
737 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) | | ||
738 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
739 | break; | ||
740 | case 3: | ||
741 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | ||
742 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
743 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
744 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
745 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
746 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
747 | NUM_BANKS(ADDR_SURF_8_BANK) | | ||
748 | TILE_SPLIT(split_equal_to_row_size)); | ||
749 | break; | ||
750 | case 4: | ||
751 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | ||
752 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | ||
753 | PIPE_CONFIG(ADDR_SURF_P2)); | ||
754 | break; | ||
755 | case 5: | ||
756 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | ||
757 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
758 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
759 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | ||
760 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
761 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
762 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
763 | NUM_BANKS(ADDR_SURF_8_BANK)); | ||
764 | break; | ||
765 | case 6: | ||
766 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | ||
767 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
768 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
769 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
770 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
771 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
772 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
773 | NUM_BANKS(ADDR_SURF_8_BANK)); | ||
774 | break; | ||
775 | case 7: | ||
776 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | ||
777 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
778 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
779 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
780 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
781 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
782 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
783 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
784 | break; | ||
785 | case 8: | ||
786 | gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED)); | ||
787 | break; | ||
788 | case 9: | ||
789 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | ||
790 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | ||
791 | PIPE_CONFIG(ADDR_SURF_P2)); | ||
792 | break; | ||
793 | case 10: | ||
794 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | ||
795 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
796 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
797 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
798 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
799 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
800 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4) | | ||
801 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
802 | break; | ||
803 | case 11: | ||
804 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | ||
805 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
806 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
807 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
808 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
809 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
810 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
811 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
812 | break; | ||
813 | case 12: | ||
814 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | ||
815 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
816 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
817 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | ||
818 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
819 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
820 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
821 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
822 | break; | ||
823 | case 13: | ||
824 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
825 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | ||
826 | PIPE_CONFIG(ADDR_SURF_P2)); | ||
827 | break; | ||
828 | case 14: | ||
829 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
830 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
831 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
832 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
833 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
834 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
835 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
836 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
837 | break; | ||
838 | case 15: | ||
839 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
840 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
841 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
842 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
843 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
844 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
845 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
846 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
847 | break; | ||
848 | case 16: | ||
849 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
850 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
851 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
852 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | ||
853 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
854 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
855 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
856 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
857 | break; | ||
858 | case 17: | ||
859 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
860 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
861 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
862 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
863 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
864 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
614 | NUM_BANKS(ADDR_SURF_16_BANK) | | 865 | NUM_BANKS(ADDR_SURF_16_BANK) | |
866 | TILE_SPLIT(split_equal_to_row_size)); | ||
867 | break; | ||
868 | case 18: | ||
869 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
870 | ARRAY_MODE(ARRAY_1D_TILED_THICK) | | ||
871 | PIPE_CONFIG(ADDR_SURF_P2)); | ||
872 | break; | ||
873 | case 19: | ||
874 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
875 | ARRAY_MODE(ARRAY_2D_TILED_XTHICK) | | ||
876 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
615 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 877 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
878 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
879 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
880 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
881 | TILE_SPLIT(split_equal_to_row_size)); | ||
882 | break; | ||
883 | case 20: | ||
884 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
885 | ARRAY_MODE(ARRAY_2D_TILED_THICK) | | ||
886 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
887 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
888 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
889 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | | ||
890 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
891 | TILE_SPLIT(split_equal_to_row_size)); | ||
892 | break; | ||
893 | case 21: | ||
894 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
895 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
896 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
897 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
898 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) | | ||
616 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 899 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
617 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4)); | 900 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
901 | NUM_BANKS(ADDR_SURF_8_BANK)); | ||
902 | break; | ||
903 | case 22: | ||
904 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
905 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
906 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
907 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
908 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) | | ||
909 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
910 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
911 | NUM_BANKS(ADDR_SURF_8_BANK)); | ||
618 | break; | 912 | break; |
619 | case 23: | 913 | case 23: |
620 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 914 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
621 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 915 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
622 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 916 | PIPE_CONFIG(ADDR_SURF_P2) | |
623 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 917 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
624 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
625 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 918 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
626 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | 919 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | |
627 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 920 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
921 | NUM_BANKS(ADDR_SURF_8_BANK)); | ||
628 | break; | 922 | break; |
629 | case 24: | 923 | case 24: |
630 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 924 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
631 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 925 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
632 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 926 | PIPE_CONFIG(ADDR_SURF_P2) | |
633 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | 927 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | |
634 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
635 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 928 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
636 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 929 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | |
637 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 930 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
931 | NUM_BANKS(ADDR_SURF_8_BANK)); | ||
638 | break; | 932 | break; |
639 | case 25: | 933 | case 25: |
640 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 934 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
641 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 935 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
642 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 936 | PIPE_CONFIG(ADDR_SURF_P2) | |
643 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | 937 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | |
644 | NUM_BANKS(ADDR_SURF_8_BANK) | | 938 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
939 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
940 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
941 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
942 | break; | ||
943 | case 26: | ||
944 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
945 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
946 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
947 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
948 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
949 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
950 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
951 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
952 | break; | ||
953 | case 27: | ||
954 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
955 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
956 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
957 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
958 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
959 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
960 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
961 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
962 | break; | ||
963 | case 28: | ||
964 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
965 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
966 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
967 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
968 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
969 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
970 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
971 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
972 | break; | ||
973 | case 29: | ||
974 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
975 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
976 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
977 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
978 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
979 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
980 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
981 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
982 | break; | ||
983 | case 30: | ||
984 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
985 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
986 | PIPE_CONFIG(ADDR_SURF_P2) | | ||
987 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_2KB) | | ||
645 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 988 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
646 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 989 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | |
647 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1)); | 990 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
991 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
648 | break; | 992 | break; |
649 | default: | 993 | default: |
650 | gb_tile_moden = 0; | 994 | continue; |
651 | break; | ||
652 | } | 995 | } |
653 | adev->gfx.config.tile_mode_array[reg_offset] = gb_tile_moden; | 996 | adev->gfx.config.tile_mode_array[reg_offset] = gb_tile_moden; |
654 | WREG32(mmGB_TILE_MODE0 + reg_offset, gb_tile_moden); | 997 | WREG32(mmGB_TILE_MODE0 + reg_offset, gb_tile_moden); |
@@ -656,239 +999,291 @@ static void gfx_v6_0_tiling_mode_table_init(struct amdgpu_device *adev) | |||
656 | } else if ((adev->asic_type == CHIP_TAHITI) || (adev->asic_type == CHIP_PITCAIRN)) { | 999 | } else if ((adev->asic_type == CHIP_TAHITI) || (adev->asic_type == CHIP_PITCAIRN)) { |
657 | for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) { | 1000 | for (reg_offset = 0; reg_offset < num_tile_mode_states; reg_offset++) { |
658 | switch (reg_offset) { | 1001 | switch (reg_offset) { |
659 | case 0: /* non-AA compressed depth or any compressed stencil */ | 1002 | case 0: |
660 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1003 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
661 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 1004 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
662 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1005 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
663 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | 1006 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | |
664 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
665 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1007 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
666 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 1008 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
667 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1009 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
1010 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
668 | break; | 1011 | break; |
669 | case 1: /* 2xAA/4xAA compressed depth only */ | 1012 | case 1: |
670 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1013 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
671 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 1014 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
672 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1015 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
673 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) | | 1016 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) | |
674 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
675 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1017 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
676 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 1018 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
677 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1019 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
1020 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
678 | break; | 1021 | break; |
679 | case 2: /* 8xAA compressed depth only */ | 1022 | case 2: |
680 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1023 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
681 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 1024 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
682 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1025 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
683 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 1026 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
684 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
685 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1027 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
686 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 1028 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
687 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1029 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
1030 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
688 | break; | 1031 | break; |
689 | case 3: /* 2xAA/4xAA compressed depth with stencil (for depth buffer) */ | 1032 | case 3: |
690 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1033 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
691 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 1034 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
692 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1035 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
693 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_128B) | | ||
694 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
695 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1036 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
696 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 1037 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
697 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1038 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1039 | NUM_BANKS(ADDR_SURF_4_BANK) | | ||
1040 | TILE_SPLIT(split_equal_to_row_size)); | ||
698 | break; | 1041 | break; |
699 | case 4: /* Maps w/ a dimension less than the 2D macro-tile dimensions (for mipmapped depth textures) */ | 1042 | case 4: |
700 | gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | 1043 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
701 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 1044 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | |
702 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1045 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16)); |
703 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
704 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
705 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
706 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
707 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
708 | break; | 1046 | break; |
709 | case 5: /* Uncompressed 16bpp depth - and stencil buffer allocated with it */ | 1047 | case 5: |
710 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1048 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
711 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 1049 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
712 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1050 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
713 | TILE_SPLIT(split_equal_to_row_size) | | 1051 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | |
714 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
715 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1052 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
716 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | 1053 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
717 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1054 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1055 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
718 | break; | 1056 | break; |
719 | case 6: /* Uncompressed 32bpp depth - and stencil buffer allocated with it */ | 1057 | case 6: |
720 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1058 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
721 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 1059 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
722 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1060 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
723 | TILE_SPLIT(split_equal_to_row_size) | | 1061 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
724 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
725 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1062 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
726 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 1063 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) | |
727 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1)); | 1064 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1065 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
728 | break; | 1066 | break; |
729 | case 7: /* Uncompressed 8bpp stencil without depth (drivers typically do not use) */ | 1067 | case 7: |
730 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1068 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | |
731 | MICRO_TILE_MODE(ADDR_SURF_DEPTH_MICRO_TILING) | | 1069 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
732 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1070 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
733 | TILE_SPLIT(split_equal_to_row_size) | | 1071 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | |
734 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
735 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1072 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
736 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 1073 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
737 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1074 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1075 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
738 | break; | 1076 | break; |
739 | case 8: /* 1D and 1D Array Surfaces */ | 1077 | case 8: |
740 | gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED) | | 1078 | gb_tile_moden = (ARRAY_MODE(ARRAY_LINEAR_ALIGNED)); |
741 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | ||
742 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | ||
743 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
744 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
745 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
746 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
747 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
748 | break; | 1079 | break; |
749 | case 9: /* Displayable maps. */ | 1080 | case 9: |
750 | gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | 1081 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | |
751 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | 1082 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | |
752 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1083 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16)); |
753 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
754 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
755 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
756 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
757 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
758 | break; | 1084 | break; |
759 | case 10: /* Display 8bpp. */ | 1085 | case 10: |
760 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1086 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | |
761 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | 1087 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
762 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1088 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
763 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 1089 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
764 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
765 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1090 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
766 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 1091 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
767 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1092 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
1093 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
768 | break; | 1094 | break; |
769 | case 11: /* Display 16bpp. */ | 1095 | case 11: |
770 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1096 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | |
771 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | 1097 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
772 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1098 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
773 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 1099 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
774 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
775 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1100 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
776 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | 1101 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | |
777 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1102 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2) | |
1103 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
778 | break; | 1104 | break; |
779 | case 12: /* Display 32bpp. */ | 1105 | case 12: |
780 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1106 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | |
781 | MICRO_TILE_MODE(ADDR_SURF_DISPLAY_MICRO_TILING) | | 1107 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
782 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1108 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
783 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | 1109 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | |
784 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
785 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1110 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
786 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 1111 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | |
787 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1)); | 1112 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1113 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
788 | break; | 1114 | break; |
789 | case 13: /* Thin. */ | 1115 | case 13: |
790 | gb_tile_moden = (ARRAY_MODE(ARRAY_1D_TILED_THIN1) | | 1116 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
791 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1117 | ARRAY_MODE(ARRAY_1D_TILED_THIN1) | |
792 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1118 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16)); |
793 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_64B) | | ||
794 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
795 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
796 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
797 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
798 | break; | 1119 | break; |
799 | case 14: /* Thin 8 bpp. */ | 1120 | case 14: |
800 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1121 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
801 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1122 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
802 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1123 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
803 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 1124 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
804 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
805 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1125 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
806 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 1126 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
807 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1)); | 1127 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1128 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
808 | break; | 1129 | break; |
809 | case 15: /* Thin 16 bpp. */ | 1130 | case 15: |
810 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1131 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
811 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1132 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
812 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1133 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
813 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 1134 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
814 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
815 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1135 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
816 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | 1136 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | |
817 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1)); | 1137 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1138 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
818 | break; | 1139 | break; |
819 | case 16: /* Thin 32 bpp. */ | 1140 | case 16: |
820 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1141 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
821 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1142 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
822 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1143 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
823 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | 1144 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | |
824 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
825 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1145 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
826 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 1146 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | |
827 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1)); | 1147 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1148 | NUM_BANKS(ADDR_SURF_16_BANK)); | ||
828 | break; | 1149 | break; |
829 | case 17: /* Thin 64 bpp. */ | 1150 | case 17: |
830 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1151 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
831 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1152 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
832 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1153 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
833 | TILE_SPLIT(split_equal_to_row_size) | | 1154 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
1155 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
1156 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
834 | NUM_BANKS(ADDR_SURF_16_BANK) | | 1157 | NUM_BANKS(ADDR_SURF_16_BANK) | |
1158 | TILE_SPLIT(split_equal_to_row_size)); | ||
1159 | break; | ||
1160 | case 18: | ||
1161 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
1162 | ARRAY_MODE(ARRAY_1D_TILED_THICK) | | ||
1163 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16)); | ||
1164 | break; | ||
1165 | case 19: | ||
1166 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
1167 | ARRAY_MODE(ARRAY_2D_TILED_XTHICK) | | ||
1168 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | ||
835 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1169 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
836 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 1170 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | |
837 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1)); | 1171 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1172 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
1173 | TILE_SPLIT(split_equal_to_row_size)); | ||
838 | break; | 1174 | break; |
839 | case 21: /* 8 bpp PRT. */ | 1175 | case 20: |
840 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1176 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
841 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1177 | ARRAY_MODE(ARRAY_2D_TILED_THICK) | |
842 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1178 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
843 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 1179 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
1180 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | ||
1181 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
844 | NUM_BANKS(ADDR_SURF_16_BANK) | | 1182 | NUM_BANKS(ADDR_SURF_16_BANK) | |
845 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_2) | | 1183 | TILE_SPLIT(split_equal_to_row_size)); |
846 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
847 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | ||
848 | break; | 1184 | break; |
849 | case 22: /* 16 bpp PRT */ | 1185 | case 21: |
850 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1186 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
851 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1187 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
1188 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | ||
1189 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | ||
1190 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
1191 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) | | ||
1192 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
1193 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
1194 | break; | ||
1195 | case 22: | ||
1196 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
1197 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
852 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1198 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
853 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 1199 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
854 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
855 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1200 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
856 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | 1201 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
857 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_4)); | 1202 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1203 | NUM_BANKS(ADDR_SURF_4_BANK)); | ||
858 | break; | 1204 | break; |
859 | case 23: /* 32 bpp PRT */ | 1205 | case 23: |
860 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1206 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
861 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1207 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
862 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1208 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
863 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | | 1209 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_256B) | |
864 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
865 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1210 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
866 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | 1211 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_8) | |
867 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1212 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1213 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
868 | break; | 1214 | break; |
869 | case 24: /* 64 bpp PRT */ | 1215 | case 24: |
870 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1216 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
871 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1217 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
872 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1218 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | |
873 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | | 1219 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_512B) | |
874 | NUM_BANKS(ADDR_SURF_16_BANK) | | ||
875 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1220 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
876 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 1221 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
877 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_2)); | 1222 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1223 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
878 | break; | 1224 | break; |
879 | case 25: /* 128 bpp PRT */ | 1225 | case 25: |
880 | gb_tile_moden = (ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | 1226 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
881 | MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | 1227 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | |
882 | PIPE_CONFIG(ADDR_SURF_P8_32x32_8x16) | | 1228 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | |
883 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | 1229 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | |
884 | NUM_BANKS(ADDR_SURF_8_BANK) | | ||
885 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | 1230 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | |
886 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_1) | | 1231 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | |
887 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1)); | 1232 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | |
1233 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
888 | break; | 1234 | break; |
889 | default: | 1235 | case 26: |
890 | gb_tile_moden = 0; | 1236 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | |
1237 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
1238 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
1239 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
1240 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
1241 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
1242 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
1243 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
1244 | break; | ||
1245 | case 27: | ||
1246 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
1247 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
1248 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
1249 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
1250 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
1251 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
1252 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
1253 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
1254 | break; | ||
1255 | case 28: | ||
1256 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
1257 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
1258 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
1259 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
1260 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
1261 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
1262 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
1263 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
891 | break; | 1264 | break; |
1265 | case 29: | ||
1266 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
1267 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
1268 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
1269 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_1KB) | | ||
1270 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
1271 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_4) | | ||
1272 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
1273 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
1274 | break; | ||
1275 | case 30: | ||
1276 | gb_tile_moden = (MICRO_TILE_MODE(ADDR_SURF_THIN_MICRO_TILING) | | ||
1277 | ARRAY_MODE(ARRAY_2D_TILED_THIN1) | | ||
1278 | PIPE_CONFIG(ADDR_SURF_P4_8x16) | | ||
1279 | TILE_SPLIT(ADDR_SURF_TILE_SPLIT_2KB) | | ||
1280 | BANK_WIDTH(ADDR_SURF_BANK_WIDTH_1) | | ||
1281 | BANK_HEIGHT(ADDR_SURF_BANK_HEIGHT_2) | | ||
1282 | MACRO_TILE_ASPECT(ADDR_SURF_MACRO_ASPECT_1) | | ||
1283 | NUM_BANKS(ADDR_SURF_2_BANK)); | ||
1284 | break; | ||
1285 | default: | ||
1286 | continue; | ||
892 | } | 1287 | } |
893 | adev->gfx.config.tile_mode_array[reg_offset] = gb_tile_moden; | 1288 | adev->gfx.config.tile_mode_array[reg_offset] = gb_tile_moden; |
894 | WREG32(mmGB_TILE_MODE0 + reg_offset, gb_tile_moden); | 1289 | WREG32(mmGB_TILE_MODE0 + reg_offset, gb_tile_moden); |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 6324f67bdb1f..d0ec00986f38 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | |||
@@ -3949,8 +3949,12 @@ static int gfx_v8_0_init_save_restore_list(struct amdgpu_device *adev) | |||
3949 | temp = mmRLC_SRM_INDEX_CNTL_ADDR_0; | 3949 | temp = mmRLC_SRM_INDEX_CNTL_ADDR_0; |
3950 | data = mmRLC_SRM_INDEX_CNTL_DATA_0; | 3950 | data = mmRLC_SRM_INDEX_CNTL_DATA_0; |
3951 | for (i = 0; i < sizeof(unique_indices) / sizeof(int); i++) { | 3951 | for (i = 0; i < sizeof(unique_indices) / sizeof(int); i++) { |
3952 | amdgpu_mm_wreg(adev, temp + i, unique_indices[i] & 0x3FFFF, false); | 3952 | if (unique_indices[i] != 0) { |
3953 | amdgpu_mm_wreg(adev, data + i, unique_indices[i] >> 20, false); | 3953 | amdgpu_mm_wreg(adev, temp + i, |
3954 | unique_indices[i] & 0x3FFFF, false); | ||
3955 | amdgpu_mm_wreg(adev, data + i, | ||
3956 | unique_indices[i] >> 20, false); | ||
3957 | } | ||
3954 | } | 3958 | } |
3955 | kfree(register_list_format); | 3959 | kfree(register_list_format); |
3956 | 3960 | ||
@@ -3966,20 +3970,17 @@ static void gfx_v8_0_init_power_gating(struct amdgpu_device *adev) | |||
3966 | { | 3970 | { |
3967 | uint32_t data; | 3971 | uint32_t data; |
3968 | 3972 | ||
3969 | if (adev->pg_flags & (AMD_PG_SUPPORT_GFX_PG | | 3973 | WREG32_FIELD(CP_RB_WPTR_POLL_CNTL, IDLE_POLL_COUNT, 0x60); |
3970 | AMD_PG_SUPPORT_GFX_SMG | | ||
3971 | AMD_PG_SUPPORT_GFX_DMG)) { | ||
3972 | WREG32_FIELD(CP_RB_WPTR_POLL_CNTL, IDLE_POLL_COUNT, 0x60); | ||
3973 | 3974 | ||
3974 | data = REG_SET_FIELD(0, RLC_PG_DELAY, POWER_UP_DELAY, 0x10); | 3975 | data = REG_SET_FIELD(0, RLC_PG_DELAY, POWER_UP_DELAY, 0x10); |
3975 | data = REG_SET_FIELD(data, RLC_PG_DELAY, POWER_DOWN_DELAY, 0x10); | 3976 | data = REG_SET_FIELD(data, RLC_PG_DELAY, POWER_DOWN_DELAY, 0x10); |
3976 | data = REG_SET_FIELD(data, RLC_PG_DELAY, CMD_PROPAGATE_DELAY, 0x10); | 3977 | data = REG_SET_FIELD(data, RLC_PG_DELAY, CMD_PROPAGATE_DELAY, 0x10); |
3977 | data = REG_SET_FIELD(data, RLC_PG_DELAY, MEM_SLEEP_DELAY, 0x10); | 3978 | data = REG_SET_FIELD(data, RLC_PG_DELAY, MEM_SLEEP_DELAY, 0x10); |
3978 | WREG32(mmRLC_PG_DELAY, data); | 3979 | WREG32(mmRLC_PG_DELAY, data); |
3980 | |||
3981 | WREG32_FIELD(RLC_PG_DELAY_2, SERDES_CMD_DELAY, 0x3); | ||
3982 | WREG32_FIELD(RLC_AUTO_PG_CTRL, GRBM_REG_SAVE_GFX_IDLE_THRESHOLD, 0x55f0); | ||
3979 | 3983 | ||
3980 | WREG32_FIELD(RLC_PG_DELAY_2, SERDES_CMD_DELAY, 0x3); | ||
3981 | WREG32_FIELD(RLC_AUTO_PG_CTRL, GRBM_REG_SAVE_GFX_IDLE_THRESHOLD, 0x55f0); | ||
3982 | } | ||
3983 | } | 3984 | } |
3984 | 3985 | ||
3985 | static void cz_enable_sck_slow_down_on_power_up(struct amdgpu_device *adev, | 3986 | static void cz_enable_sck_slow_down_on_power_up(struct amdgpu_device *adev, |
@@ -3996,41 +3997,37 @@ static void cz_enable_sck_slow_down_on_power_down(struct amdgpu_device *adev, | |||
3996 | 3997 | ||
3997 | static void cz_enable_cp_power_gating(struct amdgpu_device *adev, bool enable) | 3998 | static void cz_enable_cp_power_gating(struct amdgpu_device *adev, bool enable) |
3998 | { | 3999 | { |
3999 | WREG32_FIELD(RLC_PG_CNTL, CP_PG_DISABLE, enable ? 1 : 0); | 4000 | WREG32_FIELD(RLC_PG_CNTL, CP_PG_DISABLE, enable ? 0 : 1); |
4000 | } | 4001 | } |
4001 | 4002 | ||
4002 | static void gfx_v8_0_init_pg(struct amdgpu_device *adev) | 4003 | static void gfx_v8_0_init_pg(struct amdgpu_device *adev) |
4003 | { | 4004 | { |
4004 | if (adev->pg_flags & (AMD_PG_SUPPORT_GFX_PG | | 4005 | if ((adev->asic_type == CHIP_CARRIZO) || |
4005 | AMD_PG_SUPPORT_GFX_SMG | | 4006 | (adev->asic_type == CHIP_STONEY)) { |
4006 | AMD_PG_SUPPORT_GFX_DMG | | ||
4007 | AMD_PG_SUPPORT_CP | | ||
4008 | AMD_PG_SUPPORT_GDS | | ||
4009 | AMD_PG_SUPPORT_RLC_SMU_HS)) { | ||
4010 | gfx_v8_0_init_csb(adev); | 4007 | gfx_v8_0_init_csb(adev); |
4011 | gfx_v8_0_init_save_restore_list(adev); | 4008 | gfx_v8_0_init_save_restore_list(adev); |
4012 | gfx_v8_0_enable_save_restore_machine(adev); | 4009 | gfx_v8_0_enable_save_restore_machine(adev); |
4013 | 4010 | WREG32(mmRLC_JUMP_TABLE_RESTORE, adev->gfx.rlc.cp_table_gpu_addr >> 8); | |
4014 | if ((adev->asic_type == CHIP_CARRIZO) || | 4011 | gfx_v8_0_init_power_gating(adev); |
4015 | (adev->asic_type == CHIP_STONEY)) { | 4012 | WREG32(mmRLC_PG_ALWAYS_ON_CU_MASK, adev->gfx.cu_info.ao_cu_mask); |
4016 | WREG32(mmRLC_JUMP_TABLE_RESTORE, adev->gfx.rlc.cp_table_gpu_addr >> 8); | 4013 | if (adev->pg_flags & AMD_PG_SUPPORT_RLC_SMU_HS) { |
4017 | gfx_v8_0_init_power_gating(adev); | 4014 | cz_enable_sck_slow_down_on_power_up(adev, true); |
4018 | WREG32(mmRLC_PG_ALWAYS_ON_CU_MASK, adev->gfx.cu_info.ao_cu_mask); | 4015 | cz_enable_sck_slow_down_on_power_down(adev, true); |
4019 | if (adev->pg_flags & AMD_PG_SUPPORT_RLC_SMU_HS) { | 4016 | } else { |
4020 | cz_enable_sck_slow_down_on_power_up(adev, true); | 4017 | cz_enable_sck_slow_down_on_power_up(adev, false); |
4021 | cz_enable_sck_slow_down_on_power_down(adev, true); | 4018 | cz_enable_sck_slow_down_on_power_down(adev, false); |
4022 | } else { | ||
4023 | cz_enable_sck_slow_down_on_power_up(adev, false); | ||
4024 | cz_enable_sck_slow_down_on_power_down(adev, false); | ||
4025 | } | ||
4026 | if (adev->pg_flags & AMD_PG_SUPPORT_CP) | ||
4027 | cz_enable_cp_power_gating(adev, true); | ||
4028 | else | ||
4029 | cz_enable_cp_power_gating(adev, false); | ||
4030 | } else if (adev->asic_type == CHIP_POLARIS11) { | ||
4031 | gfx_v8_0_init_power_gating(adev); | ||
4032 | } | 4019 | } |
4020 | if (adev->pg_flags & AMD_PG_SUPPORT_CP) | ||
4021 | cz_enable_cp_power_gating(adev, true); | ||
4022 | else | ||
4023 | cz_enable_cp_power_gating(adev, false); | ||
4024 | } else if (adev->asic_type == CHIP_POLARIS11) { | ||
4025 | gfx_v8_0_init_csb(adev); | ||
4026 | gfx_v8_0_init_save_restore_list(adev); | ||
4027 | gfx_v8_0_enable_save_restore_machine(adev); | ||
4028 | gfx_v8_0_init_power_gating(adev); | ||
4033 | } | 4029 | } |
4030 | |||
4034 | } | 4031 | } |
4035 | 4032 | ||
4036 | static void gfx_v8_0_rlc_stop(struct amdgpu_device *adev) | 4033 | static void gfx_v8_0_rlc_stop(struct amdgpu_device *adev) |
@@ -5339,14 +5336,11 @@ static int gfx_v8_0_set_powergating_state(void *handle, | |||
5339 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 5336 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
5340 | bool enable = (state == AMD_PG_STATE_GATE) ? true : false; | 5337 | bool enable = (state == AMD_PG_STATE_GATE) ? true : false; |
5341 | 5338 | ||
5342 | if (!(adev->pg_flags & AMD_PG_SUPPORT_GFX_PG)) | ||
5343 | return 0; | ||
5344 | |||
5345 | switch (adev->asic_type) { | 5339 | switch (adev->asic_type) { |
5346 | case CHIP_CARRIZO: | 5340 | case CHIP_CARRIZO: |
5347 | case CHIP_STONEY: | 5341 | case CHIP_STONEY: |
5348 | if (adev->pg_flags & AMD_PG_SUPPORT_GFX_PG) | 5342 | |
5349 | cz_update_gfx_cg_power_gating(adev, enable); | 5343 | cz_update_gfx_cg_power_gating(adev, enable); |
5350 | 5344 | ||
5351 | if ((adev->pg_flags & AMD_PG_SUPPORT_GFX_SMG) && enable) | 5345 | if ((adev->pg_flags & AMD_PG_SUPPORT_GFX_SMG) && enable) |
5352 | gfx_v8_0_enable_gfx_static_mg_power_gating(adev, true); | 5346 | gfx_v8_0_enable_gfx_static_mg_power_gating(adev, true); |
@@ -5791,25 +5785,49 @@ static int gfx_v8_0_update_gfx_clock_gating(struct amdgpu_device *adev, | |||
5791 | static int gfx_v8_0_tonga_update_gfx_clock_gating(struct amdgpu_device *adev, | 5785 | static int gfx_v8_0_tonga_update_gfx_clock_gating(struct amdgpu_device *adev, |
5792 | enum amd_clockgating_state state) | 5786 | enum amd_clockgating_state state) |
5793 | { | 5787 | { |
5794 | uint32_t msg_id, pp_state; | 5788 | uint32_t msg_id, pp_state = 0; |
5789 | uint32_t pp_support_state = 0; | ||
5795 | void *pp_handle = adev->powerplay.pp_handle; | 5790 | void *pp_handle = adev->powerplay.pp_handle; |
5796 | 5791 | ||
5797 | if (state == AMD_CG_STATE_UNGATE) | 5792 | if (adev->cg_flags & (AMD_CG_SUPPORT_GFX_CGCG | AMD_CG_SUPPORT_GFX_CGLS)) { |
5798 | pp_state = 0; | 5793 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGLS) { |
5799 | else | 5794 | pp_support_state = PP_STATE_SUPPORT_LS; |
5800 | pp_state = PP_STATE_CG | PP_STATE_LS; | 5795 | pp_state = PP_STATE_LS; |
5796 | } | ||
5797 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGCG) { | ||
5798 | pp_support_state |= PP_STATE_SUPPORT_CG; | ||
5799 | pp_state |= PP_STATE_CG; | ||
5800 | } | ||
5801 | if (state == AMD_CG_STATE_UNGATE) | ||
5802 | pp_state = 0; | ||
5803 | |||
5804 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | ||
5805 | PP_BLOCK_GFX_CG, | ||
5806 | pp_support_state, | ||
5807 | pp_state); | ||
5808 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
5809 | } | ||
5801 | 5810 | ||
5802 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | 5811 | if (adev->cg_flags & (AMD_CG_SUPPORT_GFX_MGCG | AMD_CG_SUPPORT_GFX_MGLS)) { |
5803 | PP_BLOCK_GFX_CG, | 5812 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_MGLS) { |
5804 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 5813 | pp_support_state = PP_STATE_SUPPORT_LS; |
5805 | pp_state); | 5814 | pp_state = PP_STATE_LS; |
5806 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 5815 | } |
5807 | 5816 | ||
5808 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | 5817 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_MGCG) { |
5809 | PP_BLOCK_GFX_MG, | 5818 | pp_support_state |= PP_STATE_SUPPORT_CG; |
5810 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 5819 | pp_state |= PP_STATE_CG; |
5811 | pp_state); | 5820 | } |
5812 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 5821 | |
5822 | if (state == AMD_CG_STATE_UNGATE) | ||
5823 | pp_state = 0; | ||
5824 | |||
5825 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | ||
5826 | PP_BLOCK_GFX_MG, | ||
5827 | pp_support_state, | ||
5828 | pp_state); | ||
5829 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
5830 | } | ||
5813 | 5831 | ||
5814 | return 0; | 5832 | return 0; |
5815 | } | 5833 | } |
@@ -5817,43 +5835,98 @@ static int gfx_v8_0_tonga_update_gfx_clock_gating(struct amdgpu_device *adev, | |||
5817 | static int gfx_v8_0_polaris_update_gfx_clock_gating(struct amdgpu_device *adev, | 5835 | static int gfx_v8_0_polaris_update_gfx_clock_gating(struct amdgpu_device *adev, |
5818 | enum amd_clockgating_state state) | 5836 | enum amd_clockgating_state state) |
5819 | { | 5837 | { |
5820 | uint32_t msg_id, pp_state; | 5838 | |
5839 | uint32_t msg_id, pp_state = 0; | ||
5840 | uint32_t pp_support_state = 0; | ||
5821 | void *pp_handle = adev->powerplay.pp_handle; | 5841 | void *pp_handle = adev->powerplay.pp_handle; |
5822 | 5842 | ||
5823 | if (state == AMD_CG_STATE_UNGATE) | 5843 | if (adev->cg_flags & (AMD_CG_SUPPORT_GFX_CGCG | AMD_CG_SUPPORT_GFX_CGLS)) { |
5824 | pp_state = 0; | 5844 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGLS) { |
5825 | else | 5845 | pp_support_state = PP_STATE_SUPPORT_LS; |
5826 | pp_state = PP_STATE_CG | PP_STATE_LS; | 5846 | pp_state = PP_STATE_LS; |
5847 | } | ||
5848 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CGCG) { | ||
5849 | pp_support_state |= PP_STATE_SUPPORT_CG; | ||
5850 | pp_state |= PP_STATE_CG; | ||
5851 | } | ||
5852 | if (state == AMD_CG_STATE_UNGATE) | ||
5853 | pp_state = 0; | ||
5854 | |||
5855 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | ||
5856 | PP_BLOCK_GFX_CG, | ||
5857 | pp_support_state, | ||
5858 | pp_state); | ||
5859 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
5860 | } | ||
5827 | 5861 | ||
5828 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | 5862 | if (adev->cg_flags & (AMD_CG_SUPPORT_GFX_3D_CGCG | AMD_CG_SUPPORT_GFX_3D_CGLS)) { |
5829 | PP_BLOCK_GFX_CG, | 5863 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGLS) { |
5830 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 5864 | pp_support_state = PP_STATE_SUPPORT_LS; |
5831 | pp_state); | 5865 | pp_state = PP_STATE_LS; |
5832 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 5866 | } |
5867 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_3D_CGCG) { | ||
5868 | pp_support_state |= PP_STATE_SUPPORT_CG; | ||
5869 | pp_state |= PP_STATE_CG; | ||
5870 | } | ||
5871 | if (state == AMD_CG_STATE_UNGATE) | ||
5872 | pp_state = 0; | ||
5873 | |||
5874 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | ||
5875 | PP_BLOCK_GFX_3D, | ||
5876 | pp_support_state, | ||
5877 | pp_state); | ||
5878 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
5879 | } | ||
5833 | 5880 | ||
5834 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | 5881 | if (adev->cg_flags & (AMD_CG_SUPPORT_GFX_MGCG | AMD_CG_SUPPORT_GFX_MGLS)) { |
5835 | PP_BLOCK_GFX_3D, | 5882 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_MGLS) { |
5836 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 5883 | pp_support_state = PP_STATE_SUPPORT_LS; |
5837 | pp_state); | 5884 | pp_state = PP_STATE_LS; |
5838 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 5885 | } |
5839 | 5886 | ||
5840 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | 5887 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_MGCG) { |
5841 | PP_BLOCK_GFX_MG, | 5888 | pp_support_state |= PP_STATE_SUPPORT_CG; |
5842 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 5889 | pp_state |= PP_STATE_CG; |
5843 | pp_state); | 5890 | } |
5844 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
5845 | 5891 | ||
5846 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | 5892 | if (state == AMD_CG_STATE_UNGATE) |
5847 | PP_BLOCK_GFX_RLC, | 5893 | pp_state = 0; |
5848 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 5894 | |
5849 | pp_state); | 5895 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, |
5850 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 5896 | PP_BLOCK_GFX_MG, |
5897 | pp_support_state, | ||
5898 | pp_state); | ||
5899 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
5900 | } | ||
5901 | |||
5902 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_RLC_LS) { | ||
5903 | pp_support_state = PP_STATE_SUPPORT_LS; | ||
5851 | 5904 | ||
5852 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | 5905 | if (state == AMD_CG_STATE_UNGATE) |
5906 | pp_state = 0; | ||
5907 | else | ||
5908 | pp_state = PP_STATE_LS; | ||
5909 | |||
5910 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | ||
5911 | PP_BLOCK_GFX_RLC, | ||
5912 | pp_support_state, | ||
5913 | pp_state); | ||
5914 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
5915 | } | ||
5916 | |||
5917 | if (adev->cg_flags & AMD_CG_SUPPORT_GFX_CP_LS) { | ||
5918 | pp_support_state = PP_STATE_SUPPORT_LS; | ||
5919 | |||
5920 | if (state == AMD_CG_STATE_UNGATE) | ||
5921 | pp_state = 0; | ||
5922 | else | ||
5923 | pp_state = PP_STATE_LS; | ||
5924 | msg_id = PP_CG_MSG_ID(PP_GROUP_GFX, | ||
5853 | PP_BLOCK_GFX_CP, | 5925 | PP_BLOCK_GFX_CP, |
5854 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 5926 | pp_support_state, |
5855 | pp_state); | 5927 | pp_state); |
5856 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 5928 | amd_set_clockgating_by_smu(pp_handle, msg_id); |
5929 | } | ||
5857 | 5930 | ||
5858 | return 0; | 5931 | return 0; |
5859 | } | 5932 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/si.c b/drivers/gpu/drm/amd/amdgpu/si.c index 3ed8ad8725b9..c46b0159007d 100644 --- a/drivers/gpu/drm/amd/amdgpu/si.c +++ b/drivers/gpu/drm/amd/amdgpu/si.c | |||
@@ -43,13 +43,14 @@ | |||
43 | 43 | ||
44 | static const u32 tahiti_golden_registers[] = | 44 | static const u32 tahiti_golden_registers[] = |
45 | { | 45 | { |
46 | 0x17bc, 0x00000030, 0x00000011, | ||
46 | 0x2684, 0x00010000, 0x00018208, | 47 | 0x2684, 0x00010000, 0x00018208, |
47 | 0x260c, 0xffffffff, 0x00000000, | 48 | 0x260c, 0xffffffff, 0x00000000, |
48 | 0x260d, 0xf00fffff, 0x00000400, | 49 | 0x260d, 0xf00fffff, 0x00000400, |
49 | 0x260e, 0x0002021c, 0x00020200, | 50 | 0x260e, 0x0002021c, 0x00020200, |
50 | 0x031e, 0x00000080, 0x00000000, | 51 | 0x031e, 0x00000080, 0x00000000, |
51 | 0x340c, 0x000300c0, 0x00800040, | 52 | 0x340c, 0x000000c0, 0x00800040, |
52 | 0x360c, 0x000300c0, 0x00800040, | 53 | 0x360c, 0x000000c0, 0x00800040, |
53 | 0x16ec, 0x000000f0, 0x00000070, | 54 | 0x16ec, 0x000000f0, 0x00000070, |
54 | 0x16f0, 0x00200000, 0x50100000, | 55 | 0x16f0, 0x00200000, 0x50100000, |
55 | 0x1c0c, 0x31000311, 0x00000011, | 56 | 0x1c0c, 0x31000311, 0x00000011, |
@@ -60,7 +61,7 @@ static const u32 tahiti_golden_registers[] = | |||
60 | 0x22c4, 0x0000ff0f, 0x00000000, | 61 | 0x22c4, 0x0000ff0f, 0x00000000, |
61 | 0xa293, 0x07ffffff, 0x4e000000, | 62 | 0xa293, 0x07ffffff, 0x4e000000, |
62 | 0xa0d4, 0x3f3f3fff, 0x2a00126a, | 63 | 0xa0d4, 0x3f3f3fff, 0x2a00126a, |
63 | 0x000c, 0x000000ff, 0x0040, | 64 | 0x000c, 0xffffffff, 0x0040, |
64 | 0x000d, 0x00000040, 0x00004040, | 65 | 0x000d, 0x00000040, 0x00004040, |
65 | 0x2440, 0x07ffffff, 0x03000000, | 66 | 0x2440, 0x07ffffff, 0x03000000, |
66 | 0x23a2, 0x01ff1f3f, 0x00000000, | 67 | 0x23a2, 0x01ff1f3f, 0x00000000, |
@@ -73,7 +74,11 @@ static const u32 tahiti_golden_registers[] = | |||
73 | 0x2234, 0xffffffff, 0x000fff40, | 74 | 0x2234, 0xffffffff, 0x000fff40, |
74 | 0x2235, 0x0000001f, 0x00000010, | 75 | 0x2235, 0x0000001f, 0x00000010, |
75 | 0x0504, 0x20000000, 0x20fffed8, | 76 | 0x0504, 0x20000000, 0x20fffed8, |
76 | 0x0570, 0x000c0fc0, 0x000c0400 | 77 | 0x0570, 0x000c0fc0, 0x000c0400, |
78 | 0x052c, 0x0fffffff, 0xffffffff, | ||
79 | 0x052d, 0x0fffffff, 0x0fffffff, | ||
80 | 0x052e, 0x0fffffff, 0x0fffffff, | ||
81 | 0x052f, 0x0fffffff, 0x0fffffff | ||
77 | }; | 82 | }; |
78 | 83 | ||
79 | static const u32 tahiti_golden_registers2[] = | 84 | static const u32 tahiti_golden_registers2[] = |
@@ -83,16 +88,18 @@ static const u32 tahiti_golden_registers2[] = | |||
83 | 88 | ||
84 | static const u32 tahiti_golden_rlc_registers[] = | 89 | static const u32 tahiti_golden_rlc_registers[] = |
85 | { | 90 | { |
91 | 0x263e, 0xffffffff, 0x12011003, | ||
86 | 0x3109, 0xffffffff, 0x00601005, | 92 | 0x3109, 0xffffffff, 0x00601005, |
87 | 0x311f, 0xffffffff, 0x10104040, | 93 | 0x311f, 0xffffffff, 0x10104040, |
88 | 0x3122, 0xffffffff, 0x0100000a, | 94 | 0x3122, 0xffffffff, 0x0100000a, |
89 | 0x30c5, 0xffffffff, 0x00000800, | 95 | 0x30c5, 0xffffffff, 0x00000800, |
90 | 0x30c3, 0xffffffff, 0x800000f4, | 96 | 0x30c3, 0xffffffff, 0x800000f4, |
91 | 0x3d2a, 0xffffffff, 0x00000000 | 97 | 0x3d2a, 0x00000008, 0x00000000 |
92 | }; | 98 | }; |
93 | 99 | ||
94 | static const u32 pitcairn_golden_registers[] = | 100 | static const u32 pitcairn_golden_registers[] = |
95 | { | 101 | { |
102 | 0x17bc, 0x00000030, 0x00000011, | ||
96 | 0x2684, 0x00010000, 0x00018208, | 103 | 0x2684, 0x00010000, 0x00018208, |
97 | 0x260c, 0xffffffff, 0x00000000, | 104 | 0x260c, 0xffffffff, 0x00000000, |
98 | 0x260d, 0xf00fffff, 0x00000400, | 105 | 0x260d, 0xf00fffff, 0x00000400, |
@@ -110,7 +117,7 @@ static const u32 pitcairn_golden_registers[] = | |||
110 | 0x22c4, 0x0000ff0f, 0x00000000, | 117 | 0x22c4, 0x0000ff0f, 0x00000000, |
111 | 0xa293, 0x07ffffff, 0x4e000000, | 118 | 0xa293, 0x07ffffff, 0x4e000000, |
112 | 0xa0d4, 0x3f3f3fff, 0x2a00126a, | 119 | 0xa0d4, 0x3f3f3fff, 0x2a00126a, |
113 | 0x000c, 0x000000ff, 0x0040, | 120 | 0x000c, 0xffffffff, 0x0040, |
114 | 0x000d, 0x00000040, 0x00004040, | 121 | 0x000d, 0x00000040, 0x00004040, |
115 | 0x2440, 0x07ffffff, 0x03000000, | 122 | 0x2440, 0x07ffffff, 0x03000000, |
116 | 0x2418, 0x0000007f, 0x00000020, | 123 | 0x2418, 0x0000007f, 0x00000020, |
@@ -119,11 +126,16 @@ static const u32 pitcairn_golden_registers[] = | |||
119 | 0x2b04, 0xffffffff, 0x00000000, | 126 | 0x2b04, 0xffffffff, 0x00000000, |
120 | 0x2b03, 0xffffffff, 0x32761054, | 127 | 0x2b03, 0xffffffff, 0x32761054, |
121 | 0x2235, 0x0000001f, 0x00000010, | 128 | 0x2235, 0x0000001f, 0x00000010, |
122 | 0x0570, 0x000c0fc0, 0x000c0400 | 129 | 0x0570, 0x000c0fc0, 0x000c0400, |
130 | 0x052c, 0x0fffffff, 0xffffffff, | ||
131 | 0x052d, 0x0fffffff, 0x0fffffff, | ||
132 | 0x052e, 0x0fffffff, 0x0fffffff, | ||
133 | 0x052f, 0x0fffffff, 0x0fffffff | ||
123 | }; | 134 | }; |
124 | 135 | ||
125 | static const u32 pitcairn_golden_rlc_registers[] = | 136 | static const u32 pitcairn_golden_rlc_registers[] = |
126 | { | 137 | { |
138 | 0x263e, 0xffffffff, 0x12011003, | ||
127 | 0x3109, 0xffffffff, 0x00601004, | 139 | 0x3109, 0xffffffff, 0x00601004, |
128 | 0x311f, 0xffffffff, 0x10102020, | 140 | 0x311f, 0xffffffff, 0x10102020, |
129 | 0x3122, 0xffffffff, 0x01000020, | 141 | 0x3122, 0xffffffff, 0x01000020, |
@@ -133,133 +145,134 @@ static const u32 pitcairn_golden_rlc_registers[] = | |||
133 | 145 | ||
134 | static const u32 verde_pg_init[] = | 146 | static const u32 verde_pg_init[] = |
135 | { | 147 | { |
136 | 0xd4f, 0xffffffff, 0x40000, | 148 | 0x0d4f, 0xffffffff, 0x40000, |
137 | 0xd4e, 0xffffffff, 0x200010ff, | 149 | 0x0d4e, 0xffffffff, 0x200010ff, |
138 | 0xd4f, 0xffffffff, 0x0, | 150 | 0x0d4f, 0xffffffff, 0x0, |
139 | 0xd4f, 0xffffffff, 0x0, | 151 | 0x0d4f, 0xffffffff, 0x0, |
140 | 0xd4f, 0xffffffff, 0x0, | 152 | 0x0d4f, 0xffffffff, 0x0, |
141 | 0xd4f, 0xffffffff, 0x0, | 153 | 0x0d4f, 0xffffffff, 0x0, |
142 | 0xd4f, 0xffffffff, 0x0, | 154 | 0x0d4f, 0xffffffff, 0x0, |
143 | 0xd4f, 0xffffffff, 0x7007, | 155 | 0x0d4f, 0xffffffff, 0x7007, |
144 | 0xd4e, 0xffffffff, 0x300010ff, | 156 | 0x0d4e, 0xffffffff, 0x300010ff, |
145 | 0xd4f, 0xffffffff, 0x0, | 157 | 0x0d4f, 0xffffffff, 0x0, |
146 | 0xd4f, 0xffffffff, 0x0, | 158 | 0x0d4f, 0xffffffff, 0x0, |
147 | 0xd4f, 0xffffffff, 0x0, | 159 | 0x0d4f, 0xffffffff, 0x0, |
148 | 0xd4f, 0xffffffff, 0x0, | 160 | 0x0d4f, 0xffffffff, 0x0, |
149 | 0xd4f, 0xffffffff, 0x0, | 161 | 0x0d4f, 0xffffffff, 0x0, |
150 | 0xd4f, 0xffffffff, 0x400000, | 162 | 0x0d4f, 0xffffffff, 0x400000, |
151 | 0xd4e, 0xffffffff, 0x100010ff, | 163 | 0x0d4e, 0xffffffff, 0x100010ff, |
152 | 0xd4f, 0xffffffff, 0x0, | 164 | 0x0d4f, 0xffffffff, 0x0, |
153 | 0xd4f, 0xffffffff, 0x0, | 165 | 0x0d4f, 0xffffffff, 0x0, |
154 | 0xd4f, 0xffffffff, 0x0, | 166 | 0x0d4f, 0xffffffff, 0x0, |
155 | 0xd4f, 0xffffffff, 0x0, | 167 | 0x0d4f, 0xffffffff, 0x0, |
156 | 0xd4f, 0xffffffff, 0x0, | 168 | 0x0d4f, 0xffffffff, 0x0, |
157 | 0xd4f, 0xffffffff, 0x120200, | 169 | 0x0d4f, 0xffffffff, 0x120200, |
158 | 0xd4e, 0xffffffff, 0x500010ff, | 170 | 0x0d4e, 0xffffffff, 0x500010ff, |
159 | 0xd4f, 0xffffffff, 0x0, | 171 | 0x0d4f, 0xffffffff, 0x0, |
160 | 0xd4f, 0xffffffff, 0x0, | 172 | 0x0d4f, 0xffffffff, 0x0, |
161 | 0xd4f, 0xffffffff, 0x0, | 173 | 0x0d4f, 0xffffffff, 0x0, |
162 | 0xd4f, 0xffffffff, 0x0, | 174 | 0x0d4f, 0xffffffff, 0x0, |
163 | 0xd4f, 0xffffffff, 0x0, | 175 | 0x0d4f, 0xffffffff, 0x0, |
164 | 0xd4f, 0xffffffff, 0x1e1e16, | 176 | 0x0d4f, 0xffffffff, 0x1e1e16, |
165 | 0xd4e, 0xffffffff, 0x600010ff, | 177 | 0x0d4e, 0xffffffff, 0x600010ff, |
166 | 0xd4f, 0xffffffff, 0x0, | 178 | 0x0d4f, 0xffffffff, 0x0, |
167 | 0xd4f, 0xffffffff, 0x0, | 179 | 0x0d4f, 0xffffffff, 0x0, |
168 | 0xd4f, 0xffffffff, 0x0, | 180 | 0x0d4f, 0xffffffff, 0x0, |
169 | 0xd4f, 0xffffffff, 0x0, | 181 | 0x0d4f, 0xffffffff, 0x0, |
170 | 0xd4f, 0xffffffff, 0x0, | 182 | 0x0d4f, 0xffffffff, 0x0, |
171 | 0xd4f, 0xffffffff, 0x171f1e, | 183 | 0x0d4f, 0xffffffff, 0x171f1e, |
172 | 0xd4e, 0xffffffff, 0x700010ff, | 184 | 0x0d4e, 0xffffffff, 0x700010ff, |
173 | 0xd4f, 0xffffffff, 0x0, | 185 | 0x0d4f, 0xffffffff, 0x0, |
174 | 0xd4f, 0xffffffff, 0x0, | 186 | 0x0d4f, 0xffffffff, 0x0, |
175 | 0xd4f, 0xffffffff, 0x0, | 187 | 0x0d4f, 0xffffffff, 0x0, |
176 | 0xd4f, 0xffffffff, 0x0, | 188 | 0x0d4f, 0xffffffff, 0x0, |
177 | 0xd4f, 0xffffffff, 0x0, | 189 | 0x0d4f, 0xffffffff, 0x0, |
178 | 0xd4f, 0xffffffff, 0x0, | 190 | 0x0d4f, 0xffffffff, 0x0, |
179 | 0xd4e, 0xffffffff, 0x9ff, | 191 | 0x0d4e, 0xffffffff, 0x9ff, |
180 | 0xd40, 0xffffffff, 0x0, | 192 | 0x0d40, 0xffffffff, 0x0, |
181 | 0xd41, 0xffffffff, 0x10000800, | 193 | 0x0d41, 0xffffffff, 0x10000800, |
182 | 0xd41, 0xffffffff, 0xf, | 194 | 0x0d41, 0xffffffff, 0xf, |
183 | 0xd41, 0xffffffff, 0xf, | 195 | 0x0d41, 0xffffffff, 0xf, |
184 | 0xd40, 0xffffffff, 0x4, | 196 | 0x0d40, 0xffffffff, 0x4, |
185 | 0xd41, 0xffffffff, 0x1000051e, | 197 | 0x0d41, 0xffffffff, 0x1000051e, |
186 | 0xd41, 0xffffffff, 0xffff, | 198 | 0x0d41, 0xffffffff, 0xffff, |
187 | 0xd41, 0xffffffff, 0xffff, | 199 | 0x0d41, 0xffffffff, 0xffff, |
188 | 0xd40, 0xffffffff, 0x8, | 200 | 0x0d40, 0xffffffff, 0x8, |
189 | 0xd41, 0xffffffff, 0x80500, | 201 | 0x0d41, 0xffffffff, 0x80500, |
190 | 0xd40, 0xffffffff, 0x12, | 202 | 0x0d40, 0xffffffff, 0x12, |
191 | 0xd41, 0xffffffff, 0x9050c, | 203 | 0x0d41, 0xffffffff, 0x9050c, |
192 | 0xd40, 0xffffffff, 0x1d, | 204 | 0x0d40, 0xffffffff, 0x1d, |
193 | 0xd41, 0xffffffff, 0xb052c, | 205 | 0x0d41, 0xffffffff, 0xb052c, |
194 | 0xd40, 0xffffffff, 0x2a, | 206 | 0x0d40, 0xffffffff, 0x2a, |
195 | 0xd41, 0xffffffff, 0x1053e, | 207 | 0x0d41, 0xffffffff, 0x1053e, |
196 | 0xd40, 0xffffffff, 0x2d, | 208 | 0x0d40, 0xffffffff, 0x2d, |
197 | 0xd41, 0xffffffff, 0x10546, | 209 | 0x0d41, 0xffffffff, 0x10546, |
198 | 0xd40, 0xffffffff, 0x30, | 210 | 0x0d40, 0xffffffff, 0x30, |
199 | 0xd41, 0xffffffff, 0xa054e, | 211 | 0x0d41, 0xffffffff, 0xa054e, |
200 | 0xd40, 0xffffffff, 0x3c, | 212 | 0x0d40, 0xffffffff, 0x3c, |
201 | 0xd41, 0xffffffff, 0x1055f, | 213 | 0x0d41, 0xffffffff, 0x1055f, |
202 | 0xd40, 0xffffffff, 0x3f, | 214 | 0x0d40, 0xffffffff, 0x3f, |
203 | 0xd41, 0xffffffff, 0x10567, | 215 | 0x0d41, 0xffffffff, 0x10567, |
204 | 0xd40, 0xffffffff, 0x42, | 216 | 0x0d40, 0xffffffff, 0x42, |
205 | 0xd41, 0xffffffff, 0x1056f, | 217 | 0x0d41, 0xffffffff, 0x1056f, |
206 | 0xd40, 0xffffffff, 0x45, | 218 | 0x0d40, 0xffffffff, 0x45, |
207 | 0xd41, 0xffffffff, 0x10572, | 219 | 0x0d41, 0xffffffff, 0x10572, |
208 | 0xd40, 0xffffffff, 0x48, | 220 | 0x0d40, 0xffffffff, 0x48, |
209 | 0xd41, 0xffffffff, 0x20575, | 221 | 0x0d41, 0xffffffff, 0x20575, |
210 | 0xd40, 0xffffffff, 0x4c, | 222 | 0x0d40, 0xffffffff, 0x4c, |
211 | 0xd41, 0xffffffff, 0x190801, | 223 | 0x0d41, 0xffffffff, 0x190801, |
212 | 0xd40, 0xffffffff, 0x67, | 224 | 0x0d40, 0xffffffff, 0x67, |
213 | 0xd41, 0xffffffff, 0x1082a, | 225 | 0x0d41, 0xffffffff, 0x1082a, |
214 | 0xd40, 0xffffffff, 0x6a, | 226 | 0x0d40, 0xffffffff, 0x6a, |
215 | 0xd41, 0xffffffff, 0x1b082d, | 227 | 0x0d41, 0xffffffff, 0x1b082d, |
216 | 0xd40, 0xffffffff, 0x87, | 228 | 0x0d40, 0xffffffff, 0x87, |
217 | 0xd41, 0xffffffff, 0x310851, | 229 | 0x0d41, 0xffffffff, 0x310851, |
218 | 0xd40, 0xffffffff, 0xba, | 230 | 0x0d40, 0xffffffff, 0xba, |
219 | 0xd41, 0xffffffff, 0x891, | 231 | 0x0d41, 0xffffffff, 0x891, |
220 | 0xd40, 0xffffffff, 0xbc, | 232 | 0x0d40, 0xffffffff, 0xbc, |
221 | 0xd41, 0xffffffff, 0x893, | 233 | 0x0d41, 0xffffffff, 0x893, |
222 | 0xd40, 0xffffffff, 0xbe, | 234 | 0x0d40, 0xffffffff, 0xbe, |
223 | 0xd41, 0xffffffff, 0x20895, | 235 | 0x0d41, 0xffffffff, 0x20895, |
224 | 0xd40, 0xffffffff, 0xc2, | 236 | 0x0d40, 0xffffffff, 0xc2, |
225 | 0xd41, 0xffffffff, 0x20899, | 237 | 0x0d41, 0xffffffff, 0x20899, |
226 | 0xd40, 0xffffffff, 0xc6, | 238 | 0x0d40, 0xffffffff, 0xc6, |
227 | 0xd41, 0xffffffff, 0x2089d, | 239 | 0x0d41, 0xffffffff, 0x2089d, |
228 | 0xd40, 0xffffffff, 0xca, | 240 | 0x0d40, 0xffffffff, 0xca, |
229 | 0xd41, 0xffffffff, 0x8a1, | 241 | 0x0d41, 0xffffffff, 0x8a1, |
230 | 0xd40, 0xffffffff, 0xcc, | 242 | 0x0d40, 0xffffffff, 0xcc, |
231 | 0xd41, 0xffffffff, 0x8a3, | 243 | 0x0d41, 0xffffffff, 0x8a3, |
232 | 0xd40, 0xffffffff, 0xce, | 244 | 0x0d40, 0xffffffff, 0xce, |
233 | 0xd41, 0xffffffff, 0x308a5, | 245 | 0x0d41, 0xffffffff, 0x308a5, |
234 | 0xd40, 0xffffffff, 0xd3, | 246 | 0x0d40, 0xffffffff, 0xd3, |
235 | 0xd41, 0xffffffff, 0x6d08cd, | 247 | 0x0d41, 0xffffffff, 0x6d08cd, |
236 | 0xd40, 0xffffffff, 0x142, | 248 | 0x0d40, 0xffffffff, 0x142, |
237 | 0xd41, 0xffffffff, 0x2000095a, | 249 | 0x0d41, 0xffffffff, 0x2000095a, |
238 | 0xd41, 0xffffffff, 0x1, | 250 | 0x0d41, 0xffffffff, 0x1, |
239 | 0xd40, 0xffffffff, 0x144, | 251 | 0x0d40, 0xffffffff, 0x144, |
240 | 0xd41, 0xffffffff, 0x301f095b, | 252 | 0x0d41, 0xffffffff, 0x301f095b, |
241 | 0xd40, 0xffffffff, 0x165, | 253 | 0x0d40, 0xffffffff, 0x165, |
242 | 0xd41, 0xffffffff, 0xc094d, | 254 | 0x0d41, 0xffffffff, 0xc094d, |
243 | 0xd40, 0xffffffff, 0x173, | 255 | 0x0d40, 0xffffffff, 0x173, |
244 | 0xd41, 0xffffffff, 0xf096d, | 256 | 0x0d41, 0xffffffff, 0xf096d, |
245 | 0xd40, 0xffffffff, 0x184, | 257 | 0x0d40, 0xffffffff, 0x184, |
246 | 0xd41, 0xffffffff, 0x15097f, | 258 | 0x0d41, 0xffffffff, 0x15097f, |
247 | 0xd40, 0xffffffff, 0x19b, | 259 | 0x0d40, 0xffffffff, 0x19b, |
248 | 0xd41, 0xffffffff, 0xc0998, | 260 | 0x0d41, 0xffffffff, 0xc0998, |
249 | 0xd40, 0xffffffff, 0x1a9, | 261 | 0x0d40, 0xffffffff, 0x1a9, |
250 | 0xd41, 0xffffffff, 0x409a7, | 262 | 0x0d41, 0xffffffff, 0x409a7, |
251 | 0xd40, 0xffffffff, 0x1af, | 263 | 0x0d40, 0xffffffff, 0x1af, |
252 | 0xd41, 0xffffffff, 0xcdc, | 264 | 0x0d41, 0xffffffff, 0xcdc, |
253 | 0xd40, 0xffffffff, 0x1b1, | 265 | 0x0d40, 0xffffffff, 0x1b1, |
254 | 0xd41, 0xffffffff, 0x800, | 266 | 0x0d41, 0xffffffff, 0x800, |
255 | 0xd42, 0xffffffff, 0x6c9b2000, | 267 | 0x0d42, 0xffffffff, 0x6c9b2000, |
256 | 0xd44, 0xfc00, 0x2000, | 268 | 0x0d44, 0xfc00, 0x2000, |
257 | 0xd51, 0xffffffff, 0xfc0, | 269 | 0x0d51, 0xffffffff, 0xfc0, |
258 | 0xa35, 0x00000100, 0x100 | 270 | 0x0a35, 0x00000100, 0x100 |
259 | }; | 271 | }; |
260 | 272 | ||
261 | static const u32 verde_golden_rlc_registers[] = | 273 | static const u32 verde_golden_rlc_registers[] = |
262 | { | 274 | { |
275 | 0x263e, 0xffffffff, 0x02010002, | ||
263 | 0x3109, 0xffffffff, 0x033f1005, | 276 | 0x3109, 0xffffffff, 0x033f1005, |
264 | 0x311f, 0xffffffff, 0x10808020, | 277 | 0x311f, 0xffffffff, 0x10808020, |
265 | 0x3122, 0xffffffff, 0x00800008, | 278 | 0x3122, 0xffffffff, 0x00800008, |
@@ -269,65 +282,45 @@ static const u32 verde_golden_rlc_registers[] = | |||
269 | 282 | ||
270 | static const u32 verde_golden_registers[] = | 283 | static const u32 verde_golden_registers[] = |
271 | { | 284 | { |
285 | 0x17bc, 0x00000030, 0x00000011, | ||
272 | 0x2684, 0x00010000, 0x00018208, | 286 | 0x2684, 0x00010000, 0x00018208, |
273 | 0x260c, 0xffffffff, 0x00000000, | 287 | 0x260c, 0xffffffff, 0x00000000, |
274 | 0x260d, 0xf00fffff, 0x00000400, | 288 | 0x260d, 0xf00fffff, 0x00000400, |
275 | 0x260e, 0x0002021c, 0x00020200, | 289 | 0x260e, 0x0002021c, 0x00020200, |
276 | 0x031e, 0x00000080, 0x00000000, | 290 | 0x031e, 0x00000080, 0x00000000, |
277 | 0x340c, 0x000300c0, 0x00800040, | 291 | 0x340c, 0x000300c0, 0x00800040, |
278 | 0x340c, 0x000300c0, 0x00800040, | ||
279 | 0x360c, 0x000300c0, 0x00800040, | ||
280 | 0x360c, 0x000300c0, 0x00800040, | 292 | 0x360c, 0x000300c0, 0x00800040, |
281 | 0x16ec, 0x000000f0, 0x00000070, | 293 | 0x16ec, 0x000000f0, 0x00000070, |
282 | 0x16f0, 0x00200000, 0x50100000, | 294 | 0x16f0, 0x00200000, 0x50100000, |
283 | |||
284 | 0x1c0c, 0x31000311, 0x00000011, | 295 | 0x1c0c, 0x31000311, 0x00000011, |
285 | 0x0ab9, 0x00073ffe, 0x000022a2, | 296 | 0x0ab9, 0x00073ffe, 0x000022a2, |
286 | 0x0ab9, 0x00073ffe, 0x000022a2, | ||
287 | 0x0ab9, 0x00073ffe, 0x000022a2, | ||
288 | 0x0903, 0x000007ff, 0x00000000, | ||
289 | 0x0903, 0x000007ff, 0x00000000, | ||
290 | 0x0903, 0x000007ff, 0x00000000, | 297 | 0x0903, 0x000007ff, 0x00000000, |
291 | 0x2285, 0xf000001f, 0x00000007, | 298 | 0x2285, 0xf000001f, 0x00000007, |
292 | 0x2285, 0xf000001f, 0x00000007, | 299 | 0x22c9, 0xffffffff, 0x00ffffff, |
293 | 0x2285, 0xf000001f, 0x00000007, | ||
294 | 0x2285, 0xffffffff, 0x00ffffff, | ||
295 | 0x22c4, 0x0000ff0f, 0x00000000, | 300 | 0x22c4, 0x0000ff0f, 0x00000000, |
296 | |||
297 | 0xa293, 0x07ffffff, 0x4e000000, | 301 | 0xa293, 0x07ffffff, 0x4e000000, |
298 | 0xa0d4, 0x3f3f3fff, 0x0000124a, | 302 | 0xa0d4, 0x3f3f3fff, 0x0000124a, |
299 | 0xa0d4, 0x3f3f3fff, 0x0000124a, | 303 | 0x000c, 0xffffffff, 0x0040, |
300 | 0xa0d4, 0x3f3f3fff, 0x0000124a, | ||
301 | 0x000c, 0x000000ff, 0x0040, | ||
302 | 0x000d, 0x00000040, 0x00004040, | 304 | 0x000d, 0x00000040, 0x00004040, |
303 | 0x2440, 0x07ffffff, 0x03000000, | 305 | 0x2440, 0x07ffffff, 0x03000000, |
304 | 0x2440, 0x07ffffff, 0x03000000, | ||
305 | 0x23a2, 0x01ff1f3f, 0x00000000, | ||
306 | 0x23a3, 0x01ff1f3f, 0x00000000, | ||
307 | 0x23a2, 0x01ff1f3f, 0x00000000, | 306 | 0x23a2, 0x01ff1f3f, 0x00000000, |
308 | 0x23a1, 0x01ff1f3f, 0x00000000, | 307 | 0x23a1, 0x01ff1f3f, 0x00000000, |
309 | 0x23a1, 0x01ff1f3f, 0x00000000, | ||
310 | |||
311 | 0x23a1, 0x01ff1f3f, 0x00000000, | ||
312 | 0x2418, 0x0000007f, 0x00000020, | 308 | 0x2418, 0x0000007f, 0x00000020, |
313 | 0x2542, 0x00010000, 0x00010000, | 309 | 0x2542, 0x00010000, 0x00010000, |
314 | 0x2b01, 0x000003ff, 0x00000003, | ||
315 | 0x2b05, 0x000003ff, 0x00000003, | ||
316 | 0x2b05, 0x000003ff, 0x00000003, | 310 | 0x2b05, 0x000003ff, 0x00000003, |
317 | 0x2b04, 0xffffffff, 0x00000000, | 311 | 0x2b04, 0xffffffff, 0x00000000, |
318 | 0x2b04, 0xffffffff, 0x00000000, | ||
319 | 0x2b04, 0xffffffff, 0x00000000, | ||
320 | 0x2b03, 0xffffffff, 0x00001032, | ||
321 | 0x2b03, 0xffffffff, 0x00001032, | ||
322 | 0x2b03, 0xffffffff, 0x00001032, | 312 | 0x2b03, 0xffffffff, 0x00001032, |
323 | 0x2235, 0x0000001f, 0x00000010, | 313 | 0x2235, 0x0000001f, 0x00000010, |
324 | 0x2235, 0x0000001f, 0x00000010, | 314 | 0x0570, 0x000c0fc0, 0x000c0400, |
325 | 0x2235, 0x0000001f, 0x00000010, | 315 | 0x052c, 0x0fffffff, 0xffffffff, |
326 | 0x0570, 0x000c0fc0, 0x000c0400 | 316 | 0x052d, 0x0fffffff, 0x0fffffff, |
317 | 0x052e, 0x0fffffff, 0x0fffffff, | ||
318 | 0x052f, 0x0fffffff, 0x0fffffff | ||
327 | }; | 319 | }; |
328 | 320 | ||
329 | static const u32 oland_golden_registers[] = | 321 | static const u32 oland_golden_registers[] = |
330 | { | 322 | { |
323 | 0x17bc, 0x00000030, 0x00000011, | ||
331 | 0x2684, 0x00010000, 0x00018208, | 324 | 0x2684, 0x00010000, 0x00018208, |
332 | 0x260c, 0xffffffff, 0x00000000, | 325 | 0x260c, 0xffffffff, 0x00000000, |
333 | 0x260d, 0xf00fffff, 0x00000400, | 326 | 0x260d, 0xf00fffff, 0x00000400, |
@@ -336,7 +329,7 @@ static const u32 oland_golden_registers[] = | |||
336 | 0x340c, 0x000300c0, 0x00800040, | 329 | 0x340c, 0x000300c0, 0x00800040, |
337 | 0x360c, 0x000300c0, 0x00800040, | 330 | 0x360c, 0x000300c0, 0x00800040, |
338 | 0x16ec, 0x000000f0, 0x00000070, | 331 | 0x16ec, 0x000000f0, 0x00000070, |
339 | 0x16f9, 0x00200000, 0x50100000, | 332 | 0x16f0, 0x00200000, 0x50100000, |
340 | 0x1c0c, 0x31000311, 0x00000011, | 333 | 0x1c0c, 0x31000311, 0x00000011, |
341 | 0x0ab9, 0x00073ffe, 0x000022a2, | 334 | 0x0ab9, 0x00073ffe, 0x000022a2, |
342 | 0x0903, 0x000007ff, 0x00000000, | 335 | 0x0903, 0x000007ff, 0x00000000, |
@@ -345,7 +338,7 @@ static const u32 oland_golden_registers[] = | |||
345 | 0x22c4, 0x0000ff0f, 0x00000000, | 338 | 0x22c4, 0x0000ff0f, 0x00000000, |
346 | 0xa293, 0x07ffffff, 0x4e000000, | 339 | 0xa293, 0x07ffffff, 0x4e000000, |
347 | 0xa0d4, 0x3f3f3fff, 0x00000082, | 340 | 0xa0d4, 0x3f3f3fff, 0x00000082, |
348 | 0x000c, 0x000000ff, 0x0040, | 341 | 0x000c, 0xffffffff, 0x0040, |
349 | 0x000d, 0x00000040, 0x00004040, | 342 | 0x000d, 0x00000040, 0x00004040, |
350 | 0x2440, 0x07ffffff, 0x03000000, | 343 | 0x2440, 0x07ffffff, 0x03000000, |
351 | 0x2418, 0x0000007f, 0x00000020, | 344 | 0x2418, 0x0000007f, 0x00000020, |
@@ -354,11 +347,16 @@ static const u32 oland_golden_registers[] = | |||
354 | 0x2b04, 0xffffffff, 0x00000000, | 347 | 0x2b04, 0xffffffff, 0x00000000, |
355 | 0x2b03, 0xffffffff, 0x00003210, | 348 | 0x2b03, 0xffffffff, 0x00003210, |
356 | 0x2235, 0x0000001f, 0x00000010, | 349 | 0x2235, 0x0000001f, 0x00000010, |
357 | 0x0570, 0x000c0fc0, 0x000c0400 | 350 | 0x0570, 0x000c0fc0, 0x000c0400, |
351 | 0x052c, 0x0fffffff, 0xffffffff, | ||
352 | 0x052d, 0x0fffffff, 0x0fffffff, | ||
353 | 0x052e, 0x0fffffff, 0x0fffffff, | ||
354 | 0x052f, 0x0fffffff, 0x0fffffff | ||
358 | }; | 355 | }; |
359 | 356 | ||
360 | static const u32 oland_golden_rlc_registers[] = | 357 | static const u32 oland_golden_rlc_registers[] = |
361 | { | 358 | { |
359 | 0x263e, 0xffffffff, 0x02010002, | ||
362 | 0x3109, 0xffffffff, 0x00601005, | 360 | 0x3109, 0xffffffff, 0x00601005, |
363 | 0x311f, 0xffffffff, 0x10104040, | 361 | 0x311f, 0xffffffff, 0x10104040, |
364 | 0x3122, 0xffffffff, 0x0100000a, | 362 | 0x3122, 0xffffffff, 0x0100000a, |
@@ -368,22 +366,27 @@ static const u32 oland_golden_rlc_registers[] = | |||
368 | 366 | ||
369 | static const u32 hainan_golden_registers[] = | 367 | static const u32 hainan_golden_registers[] = |
370 | { | 368 | { |
369 | 0x17bc, 0x00000030, 0x00000011, | ||
371 | 0x2684, 0x00010000, 0x00018208, | 370 | 0x2684, 0x00010000, 0x00018208, |
372 | 0x260c, 0xffffffff, 0x00000000, | 371 | 0x260c, 0xffffffff, 0x00000000, |
373 | 0x260d, 0xf00fffff, 0x00000400, | 372 | 0x260d, 0xf00fffff, 0x00000400, |
374 | 0x260e, 0x0002021c, 0x00020200, | 373 | 0x260e, 0x0002021c, 0x00020200, |
375 | 0x4595, 0xff000fff, 0x00000100, | 374 | 0x031e, 0x00000080, 0x00000000, |
375 | 0x3430, 0xff000fff, 0x00000100, | ||
376 | 0x340c, 0x000300c0, 0x00800040, | 376 | 0x340c, 0x000300c0, 0x00800040, |
377 | 0x3630, 0xff000fff, 0x00000100, | 377 | 0x3630, 0xff000fff, 0x00000100, |
378 | 0x360c, 0x000300c0, 0x00800040, | 378 | 0x360c, 0x000300c0, 0x00800040, |
379 | 0x16ec, 0x000000f0, 0x00000070, | ||
380 | 0x16f0, 0x00200000, 0x50100000, | ||
381 | 0x1c0c, 0x31000311, 0x00000011, | ||
379 | 0x0ab9, 0x00073ffe, 0x000022a2, | 382 | 0x0ab9, 0x00073ffe, 0x000022a2, |
380 | 0x0903, 0x000007ff, 0x00000000, | 383 | 0x0903, 0x000007ff, 0x00000000, |
381 | 0x2285, 0xf000001f, 0x00000007, | 384 | 0x2285, 0xf000001f, 0x00000007, |
382 | 0x22c9, 0xffffffff, 0x00ffffff, | 385 | 0x22c9, 0xffffffff, 0x00ffffff, |
383 | 0x22c4, 0x0000ff0f, 0x00000000, | 386 | 0x22c4, 0x0000ff0f, 0x00000000, |
384 | 0xa393, 0x07ffffff, 0x4e000000, | 387 | 0xa293, 0x07ffffff, 0x4e000000, |
385 | 0xa0d4, 0x3f3f3fff, 0x00000000, | 388 | 0xa0d4, 0x3f3f3fff, 0x00000000, |
386 | 0x000c, 0x000000ff, 0x0040, | 389 | 0x000c, 0xffffffff, 0x0040, |
387 | 0x000d, 0x00000040, 0x00004040, | 390 | 0x000d, 0x00000040, 0x00004040, |
388 | 0x2440, 0x03e00000, 0x03600000, | 391 | 0x2440, 0x03e00000, 0x03600000, |
389 | 0x2418, 0x0000007f, 0x00000020, | 392 | 0x2418, 0x0000007f, 0x00000020, |
@@ -392,12 +395,16 @@ static const u32 hainan_golden_registers[] = | |||
392 | 0x2b04, 0xffffffff, 0x00000000, | 395 | 0x2b04, 0xffffffff, 0x00000000, |
393 | 0x2b03, 0xffffffff, 0x00003210, | 396 | 0x2b03, 0xffffffff, 0x00003210, |
394 | 0x2235, 0x0000001f, 0x00000010, | 397 | 0x2235, 0x0000001f, 0x00000010, |
395 | 0x0570, 0x000c0fc0, 0x000c0400 | 398 | 0x0570, 0x000c0fc0, 0x000c0400, |
399 | 0x052c, 0x0fffffff, 0xffffffff, | ||
400 | 0x052d, 0x0fffffff, 0x0fffffff, | ||
401 | 0x052e, 0x0fffffff, 0x0fffffff, | ||
402 | 0x052f, 0x0fffffff, 0x0fffffff | ||
396 | }; | 403 | }; |
397 | 404 | ||
398 | static const u32 hainan_golden_registers2[] = | 405 | static const u32 hainan_golden_registers2[] = |
399 | { | 406 | { |
400 | 0x263e, 0xffffffff, 0x02010001 | 407 | 0x263e, 0xffffffff, 0x2011003 |
401 | }; | 408 | }; |
402 | 409 | ||
403 | static const u32 tahiti_mgcg_cgcg_init[] = | 410 | static const u32 tahiti_mgcg_cgcg_init[] = |
@@ -513,18 +520,18 @@ static const u32 tahiti_mgcg_cgcg_init[] = | |||
513 | 0x21c2, 0xffffffff, 0x00900100, | 520 | 0x21c2, 0xffffffff, 0x00900100, |
514 | 0x311e, 0xffffffff, 0x00000080, | 521 | 0x311e, 0xffffffff, 0x00000080, |
515 | 0x3101, 0xffffffff, 0x0020003f, | 522 | 0x3101, 0xffffffff, 0x0020003f, |
516 | 0xc, 0xffffffff, 0x0000001c, | 523 | 0x000c, 0xffffffff, 0x0000001c, |
517 | 0xd, 0x000f0000, 0x000f0000, | 524 | 0x000d, 0x000f0000, 0x000f0000, |
518 | 0x583, 0xffffffff, 0x00000100, | 525 | 0x0583, 0xffffffff, 0x00000100, |
519 | 0x409, 0xffffffff, 0x00000100, | 526 | 0x0409, 0xffffffff, 0x00000100, |
520 | 0x40b, 0x00000101, 0x00000000, | 527 | 0x040b, 0x00000101, 0x00000000, |
521 | 0x82a, 0xffffffff, 0x00000104, | 528 | 0x082a, 0xffffffff, 0x00000104, |
522 | 0x993, 0x000c0000, 0x000c0000, | 529 | 0x0993, 0x000c0000, 0x000c0000, |
523 | 0x992, 0x000c0000, 0x000c0000, | 530 | 0x0992, 0x000c0000, 0x000c0000, |
524 | 0x1579, 0xff000fff, 0x00000100, | 531 | 0x1579, 0xff000fff, 0x00000100, |
525 | 0x157a, 0x00000001, 0x00000001, | 532 | 0x157a, 0x00000001, 0x00000001, |
526 | 0xbd4, 0x00000001, 0x00000001, | 533 | 0x0bd4, 0x00000001, 0x00000001, |
527 | 0xc33, 0xc0000fff, 0x00000104, | 534 | 0x0c33, 0xc0000fff, 0x00000104, |
528 | 0x3079, 0x00000001, 0x00000001, | 535 | 0x3079, 0x00000001, 0x00000001, |
529 | 0x3430, 0xfffffff0, 0x00000100, | 536 | 0x3430, 0xfffffff0, 0x00000100, |
530 | 0x3630, 0xfffffff0, 0x00000100 | 537 | 0x3630, 0xfffffff0, 0x00000100 |
@@ -612,16 +619,16 @@ static const u32 pitcairn_mgcg_cgcg_init[] = | |||
612 | 0x21c2, 0xffffffff, 0x00900100, | 619 | 0x21c2, 0xffffffff, 0x00900100, |
613 | 0x311e, 0xffffffff, 0x00000080, | 620 | 0x311e, 0xffffffff, 0x00000080, |
614 | 0x3101, 0xffffffff, 0x0020003f, | 621 | 0x3101, 0xffffffff, 0x0020003f, |
615 | 0xc, 0xffffffff, 0x0000001c, | 622 | 0x000c, 0xffffffff, 0x0000001c, |
616 | 0xd, 0x000f0000, 0x000f0000, | 623 | 0x000d, 0x000f0000, 0x000f0000, |
617 | 0x583, 0xffffffff, 0x00000100, | 624 | 0x0583, 0xffffffff, 0x00000100, |
618 | 0x409, 0xffffffff, 0x00000100, | 625 | 0x0409, 0xffffffff, 0x00000100, |
619 | 0x40b, 0x00000101, 0x00000000, | 626 | 0x040b, 0x00000101, 0x00000000, |
620 | 0x82a, 0xffffffff, 0x00000104, | 627 | 0x082a, 0xffffffff, 0x00000104, |
621 | 0x1579, 0xff000fff, 0x00000100, | 628 | 0x1579, 0xff000fff, 0x00000100, |
622 | 0x157a, 0x00000001, 0x00000001, | 629 | 0x157a, 0x00000001, 0x00000001, |
623 | 0xbd4, 0x00000001, 0x00000001, | 630 | 0x0bd4, 0x00000001, 0x00000001, |
624 | 0xc33, 0xc0000fff, 0x00000104, | 631 | 0x0c33, 0xc0000fff, 0x00000104, |
625 | 0x3079, 0x00000001, 0x00000001, | 632 | 0x3079, 0x00000001, 0x00000001, |
626 | 0x3430, 0xfffffff0, 0x00000100, | 633 | 0x3430, 0xfffffff0, 0x00000100, |
627 | 0x3630, 0xfffffff0, 0x00000100 | 634 | 0x3630, 0xfffffff0, 0x00000100 |
@@ -709,18 +716,18 @@ static const u32 verde_mgcg_cgcg_init[] = | |||
709 | 0x21c2, 0xffffffff, 0x00900100, | 716 | 0x21c2, 0xffffffff, 0x00900100, |
710 | 0x311e, 0xffffffff, 0x00000080, | 717 | 0x311e, 0xffffffff, 0x00000080, |
711 | 0x3101, 0xffffffff, 0x0020003f, | 718 | 0x3101, 0xffffffff, 0x0020003f, |
712 | 0xc, 0xffffffff, 0x0000001c, | 719 | 0x000c, 0xffffffff, 0x0000001c, |
713 | 0xd, 0x000f0000, 0x000f0000, | 720 | 0x000d, 0x000f0000, 0x000f0000, |
714 | 0x583, 0xffffffff, 0x00000100, | 721 | 0x0583, 0xffffffff, 0x00000100, |
715 | 0x409, 0xffffffff, 0x00000100, | 722 | 0x0409, 0xffffffff, 0x00000100, |
716 | 0x40b, 0x00000101, 0x00000000, | 723 | 0x040b, 0x00000101, 0x00000000, |
717 | 0x82a, 0xffffffff, 0x00000104, | 724 | 0x082a, 0xffffffff, 0x00000104, |
718 | 0x993, 0x000c0000, 0x000c0000, | 725 | 0x0993, 0x000c0000, 0x000c0000, |
719 | 0x992, 0x000c0000, 0x000c0000, | 726 | 0x0992, 0x000c0000, 0x000c0000, |
720 | 0x1579, 0xff000fff, 0x00000100, | 727 | 0x1579, 0xff000fff, 0x00000100, |
721 | 0x157a, 0x00000001, 0x00000001, | 728 | 0x157a, 0x00000001, 0x00000001, |
722 | 0xbd4, 0x00000001, 0x00000001, | 729 | 0x0bd4, 0x00000001, 0x00000001, |
723 | 0xc33, 0xc0000fff, 0x00000104, | 730 | 0x0c33, 0xc0000fff, 0x00000104, |
724 | 0x3079, 0x00000001, 0x00000001, | 731 | 0x3079, 0x00000001, 0x00000001, |
725 | 0x3430, 0xfffffff0, 0x00000100, | 732 | 0x3430, 0xfffffff0, 0x00000100, |
726 | 0x3630, 0xfffffff0, 0x00000100 | 733 | 0x3630, 0xfffffff0, 0x00000100 |
@@ -788,18 +795,18 @@ static const u32 oland_mgcg_cgcg_init[] = | |||
788 | 0x21c2, 0xffffffff, 0x00900100, | 795 | 0x21c2, 0xffffffff, 0x00900100, |
789 | 0x311e, 0xffffffff, 0x00000080, | 796 | 0x311e, 0xffffffff, 0x00000080, |
790 | 0x3101, 0xffffffff, 0x0020003f, | 797 | 0x3101, 0xffffffff, 0x0020003f, |
791 | 0xc, 0xffffffff, 0x0000001c, | 798 | 0x000c, 0xffffffff, 0x0000001c, |
792 | 0xd, 0x000f0000, 0x000f0000, | 799 | 0x000d, 0x000f0000, 0x000f0000, |
793 | 0x583, 0xffffffff, 0x00000100, | 800 | 0x0583, 0xffffffff, 0x00000100, |
794 | 0x409, 0xffffffff, 0x00000100, | 801 | 0x0409, 0xffffffff, 0x00000100, |
795 | 0x40b, 0x00000101, 0x00000000, | 802 | 0x040b, 0x00000101, 0x00000000, |
796 | 0x82a, 0xffffffff, 0x00000104, | 803 | 0x082a, 0xffffffff, 0x00000104, |
797 | 0x993, 0x000c0000, 0x000c0000, | 804 | 0x0993, 0x000c0000, 0x000c0000, |
798 | 0x992, 0x000c0000, 0x000c0000, | 805 | 0x0992, 0x000c0000, 0x000c0000, |
799 | 0x1579, 0xff000fff, 0x00000100, | 806 | 0x1579, 0xff000fff, 0x00000100, |
800 | 0x157a, 0x00000001, 0x00000001, | 807 | 0x157a, 0x00000001, 0x00000001, |
801 | 0xbd4, 0x00000001, 0x00000001, | 808 | 0x0bd4, 0x00000001, 0x00000001, |
802 | 0xc33, 0xc0000fff, 0x00000104, | 809 | 0x0c33, 0xc0000fff, 0x00000104, |
803 | 0x3079, 0x00000001, 0x00000001, | 810 | 0x3079, 0x00000001, 0x00000001, |
804 | 0x3430, 0xfffffff0, 0x00000100, | 811 | 0x3430, 0xfffffff0, 0x00000100, |
805 | 0x3630, 0xfffffff0, 0x00000100 | 812 | 0x3630, 0xfffffff0, 0x00000100 |
@@ -867,15 +874,15 @@ static const u32 hainan_mgcg_cgcg_init[] = | |||
867 | 0x21c2, 0xffffffff, 0x00900100, | 874 | 0x21c2, 0xffffffff, 0x00900100, |
868 | 0x311e, 0xffffffff, 0x00000080, | 875 | 0x311e, 0xffffffff, 0x00000080, |
869 | 0x3101, 0xffffffff, 0x0020003f, | 876 | 0x3101, 0xffffffff, 0x0020003f, |
870 | 0xc, 0xffffffff, 0x0000001c, | 877 | 0x000c, 0xffffffff, 0x0000001c, |
871 | 0xd, 0x000f0000, 0x000f0000, | 878 | 0x000d, 0x000f0000, 0x000f0000, |
872 | 0x583, 0xffffffff, 0x00000100, | 879 | 0x0583, 0xffffffff, 0x00000100, |
873 | 0x409, 0xffffffff, 0x00000100, | 880 | 0x0409, 0xffffffff, 0x00000100, |
874 | 0x82a, 0xffffffff, 0x00000104, | 881 | 0x082a, 0xffffffff, 0x00000104, |
875 | 0x993, 0x000c0000, 0x000c0000, | 882 | 0x0993, 0x000c0000, 0x000c0000, |
876 | 0x992, 0x000c0000, 0x000c0000, | 883 | 0x0992, 0x000c0000, 0x000c0000, |
877 | 0xbd4, 0x00000001, 0x00000001, | 884 | 0x0bd4, 0x00000001, 0x00000001, |
878 | 0xc33, 0xc0000fff, 0x00000104, | 885 | 0x0c33, 0xc0000fff, 0x00000104, |
879 | 0x3079, 0x00000001, 0x00000001, | 886 | 0x3079, 0x00000001, 0x00000001, |
880 | 0x3430, 0xfffffff0, 0x00000100, | 887 | 0x3430, 0xfffffff0, 0x00000100, |
881 | 0x3630, 0xfffffff0, 0x00000100 | 888 | 0x3630, 0xfffffff0, 0x00000100 |
@@ -1179,6 +1186,8 @@ static int si_common_early_init(void *handle) | |||
1179 | AMD_CG_SUPPORT_HDP_LS | | 1186 | AMD_CG_SUPPORT_HDP_LS | |
1180 | AMD_CG_SUPPORT_HDP_MGCG; | 1187 | AMD_CG_SUPPORT_HDP_MGCG; |
1181 | adev->pg_flags = 0; | 1188 | adev->pg_flags = 0; |
1189 | adev->external_rev_id = (adev->rev_id == 0) ? 1 : | ||
1190 | (adev->rev_id == 1) ? 5 : 6; | ||
1182 | break; | 1191 | break; |
1183 | case CHIP_PITCAIRN: | 1192 | case CHIP_PITCAIRN: |
1184 | adev->cg_flags = | 1193 | adev->cg_flags = |
@@ -1198,6 +1207,7 @@ static int si_common_early_init(void *handle) | |||
1198 | AMD_CG_SUPPORT_HDP_LS | | 1207 | AMD_CG_SUPPORT_HDP_LS | |
1199 | AMD_CG_SUPPORT_HDP_MGCG; | 1208 | AMD_CG_SUPPORT_HDP_MGCG; |
1200 | adev->pg_flags = 0; | 1209 | adev->pg_flags = 0; |
1210 | adev->external_rev_id = adev->rev_id + 20; | ||
1201 | break; | 1211 | break; |
1202 | 1212 | ||
1203 | case CHIP_VERDE: | 1213 | case CHIP_VERDE: |
@@ -1219,7 +1229,7 @@ static int si_common_early_init(void *handle) | |||
1219 | AMD_CG_SUPPORT_HDP_MGCG; | 1229 | AMD_CG_SUPPORT_HDP_MGCG; |
1220 | adev->pg_flags = 0; | 1230 | adev->pg_flags = 0; |
1221 | //??? | 1231 | //??? |
1222 | adev->external_rev_id = adev->rev_id + 0x14; | 1232 | adev->external_rev_id = adev->rev_id + 40; |
1223 | break; | 1233 | break; |
1224 | case CHIP_OLAND: | 1234 | case CHIP_OLAND: |
1225 | adev->cg_flags = | 1235 | adev->cg_flags = |
@@ -1238,6 +1248,7 @@ static int si_common_early_init(void *handle) | |||
1238 | AMD_CG_SUPPORT_HDP_LS | | 1248 | AMD_CG_SUPPORT_HDP_LS | |
1239 | AMD_CG_SUPPORT_HDP_MGCG; | 1249 | AMD_CG_SUPPORT_HDP_MGCG; |
1240 | adev->pg_flags = 0; | 1250 | adev->pg_flags = 0; |
1251 | adev->external_rev_id = 60; | ||
1241 | break; | 1252 | break; |
1242 | case CHIP_HAINAN: | 1253 | case CHIP_HAINAN: |
1243 | adev->cg_flags = | 1254 | adev->cg_flags = |
@@ -1255,6 +1266,7 @@ static int si_common_early_init(void *handle) | |||
1255 | AMD_CG_SUPPORT_HDP_LS | | 1266 | AMD_CG_SUPPORT_HDP_LS | |
1256 | AMD_CG_SUPPORT_HDP_MGCG; | 1267 | AMD_CG_SUPPORT_HDP_MGCG; |
1257 | adev->pg_flags = 0; | 1268 | adev->pg_flags = 0; |
1269 | adev->external_rev_id = 70; | ||
1258 | break; | 1270 | break; |
1259 | 1271 | ||
1260 | default: | 1272 | default: |
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index 9f771f4ffcb7..bf088d6d9bf1 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c | |||
@@ -932,18 +932,64 @@ static int vi_common_early_init(void *handle) | |||
932 | adev->external_rev_id = adev->rev_id + 0x3c; | 932 | adev->external_rev_id = adev->rev_id + 0x3c; |
933 | break; | 933 | break; |
934 | case CHIP_TONGA: | 934 | case CHIP_TONGA: |
935 | adev->cg_flags = AMD_CG_SUPPORT_UVD_MGCG; | 935 | adev->cg_flags = AMD_CG_SUPPORT_GFX_MGCG | |
936 | adev->pg_flags = AMD_PG_SUPPORT_UVD; | 936 | AMD_CG_SUPPORT_GFX_CGCG | |
937 | AMD_CG_SUPPORT_GFX_CGLS | | ||
938 | AMD_CG_SUPPORT_SDMA_MGCG | | ||
939 | AMD_CG_SUPPORT_SDMA_LS | | ||
940 | AMD_CG_SUPPORT_BIF_LS | | ||
941 | AMD_CG_SUPPORT_HDP_MGCG | | ||
942 | AMD_CG_SUPPORT_HDP_LS | | ||
943 | AMD_CG_SUPPORT_ROM_MGCG | | ||
944 | AMD_CG_SUPPORT_MC_MGCG | | ||
945 | AMD_CG_SUPPORT_MC_LS | | ||
946 | AMD_CG_SUPPORT_DRM_LS | | ||
947 | AMD_CG_SUPPORT_UVD_MGCG; | ||
948 | adev->pg_flags = 0; | ||
937 | adev->external_rev_id = adev->rev_id + 0x14; | 949 | adev->external_rev_id = adev->rev_id + 0x14; |
938 | break; | 950 | break; |
939 | case CHIP_POLARIS11: | 951 | case CHIP_POLARIS11: |
940 | adev->cg_flags = AMD_CG_SUPPORT_UVD_MGCG | | 952 | adev->cg_flags = AMD_CG_SUPPORT_GFX_MGCG | |
953 | AMD_CG_SUPPORT_GFX_RLC_LS | | ||
954 | AMD_CG_SUPPORT_GFX_CP_LS | | ||
955 | AMD_CG_SUPPORT_GFX_CGCG | | ||
956 | AMD_CG_SUPPORT_GFX_CGLS | | ||
957 | AMD_CG_SUPPORT_GFX_3D_CGCG | | ||
958 | AMD_CG_SUPPORT_GFX_3D_CGLS | | ||
959 | AMD_CG_SUPPORT_SDMA_MGCG | | ||
960 | AMD_CG_SUPPORT_SDMA_LS | | ||
961 | AMD_CG_SUPPORT_BIF_MGCG | | ||
962 | AMD_CG_SUPPORT_BIF_LS | | ||
963 | AMD_CG_SUPPORT_HDP_MGCG | | ||
964 | AMD_CG_SUPPORT_HDP_LS | | ||
965 | AMD_CG_SUPPORT_ROM_MGCG | | ||
966 | AMD_CG_SUPPORT_MC_MGCG | | ||
967 | AMD_CG_SUPPORT_MC_LS | | ||
968 | AMD_CG_SUPPORT_DRM_LS | | ||
969 | AMD_CG_SUPPORT_UVD_MGCG | | ||
941 | AMD_CG_SUPPORT_VCE_MGCG; | 970 | AMD_CG_SUPPORT_VCE_MGCG; |
942 | adev->pg_flags = 0; | 971 | adev->pg_flags = 0; |
943 | adev->external_rev_id = adev->rev_id + 0x5A; | 972 | adev->external_rev_id = adev->rev_id + 0x5A; |
944 | break; | 973 | break; |
945 | case CHIP_POLARIS10: | 974 | case CHIP_POLARIS10: |
946 | adev->cg_flags = AMD_CG_SUPPORT_UVD_MGCG | | 975 | adev->cg_flags = AMD_CG_SUPPORT_GFX_MGCG | |
976 | AMD_CG_SUPPORT_GFX_RLC_LS | | ||
977 | AMD_CG_SUPPORT_GFX_CP_LS | | ||
978 | AMD_CG_SUPPORT_GFX_CGCG | | ||
979 | AMD_CG_SUPPORT_GFX_CGLS | | ||
980 | AMD_CG_SUPPORT_GFX_3D_CGCG | | ||
981 | AMD_CG_SUPPORT_GFX_3D_CGLS | | ||
982 | AMD_CG_SUPPORT_SDMA_MGCG | | ||
983 | AMD_CG_SUPPORT_SDMA_LS | | ||
984 | AMD_CG_SUPPORT_BIF_MGCG | | ||
985 | AMD_CG_SUPPORT_BIF_LS | | ||
986 | AMD_CG_SUPPORT_HDP_MGCG | | ||
987 | AMD_CG_SUPPORT_HDP_LS | | ||
988 | AMD_CG_SUPPORT_ROM_MGCG | | ||
989 | AMD_CG_SUPPORT_MC_MGCG | | ||
990 | AMD_CG_SUPPORT_MC_LS | | ||
991 | AMD_CG_SUPPORT_DRM_LS | | ||
992 | AMD_CG_SUPPORT_UVD_MGCG | | ||
947 | AMD_CG_SUPPORT_VCE_MGCG; | 993 | AMD_CG_SUPPORT_VCE_MGCG; |
948 | adev->pg_flags = 0; | 994 | adev->pg_flags = 0; |
949 | adev->external_rev_id = adev->rev_id + 0x50; | 995 | adev->external_rev_id = adev->rev_id + 0x50; |
@@ -971,6 +1017,7 @@ static int vi_common_early_init(void *handle) | |||
971 | adev->pg_flags |= AMD_PG_SUPPORT_GFX_PG | | 1017 | adev->pg_flags |= AMD_PG_SUPPORT_GFX_PG | |
972 | AMD_PG_SUPPORT_GFX_SMG | | 1018 | AMD_PG_SUPPORT_GFX_SMG | |
973 | AMD_PG_SUPPORT_GFX_PIPELINE | | 1019 | AMD_PG_SUPPORT_GFX_PIPELINE | |
1020 | AMD_PG_SUPPORT_CP | | ||
974 | AMD_PG_SUPPORT_UVD | | 1021 | AMD_PG_SUPPORT_UVD | |
975 | AMD_PG_SUPPORT_VCE; | 1022 | AMD_PG_SUPPORT_VCE; |
976 | } | 1023 | } |
@@ -996,6 +1043,7 @@ static int vi_common_early_init(void *handle) | |||
996 | adev->pg_flags = AMD_PG_SUPPORT_GFX_PG | | 1043 | adev->pg_flags = AMD_PG_SUPPORT_GFX_PG | |
997 | AMD_PG_SUPPORT_GFX_SMG | | 1044 | AMD_PG_SUPPORT_GFX_SMG | |
998 | AMD_PG_SUPPORT_GFX_PIPELINE | | 1045 | AMD_PG_SUPPORT_GFX_PIPELINE | |
1046 | AMD_PG_SUPPORT_CP | | ||
999 | AMD_PG_SUPPORT_UVD | | 1047 | AMD_PG_SUPPORT_UVD | |
1000 | AMD_PG_SUPPORT_VCE; | 1048 | AMD_PG_SUPPORT_VCE; |
1001 | adev->external_rev_id = adev->rev_id + 0x61; | 1049 | adev->external_rev_id = adev->rev_id + 0x61; |
@@ -1155,57 +1203,118 @@ static void vi_update_rom_medium_grain_clock_gating(struct amdgpu_device *adev, | |||
1155 | static int vi_common_set_clockgating_state_by_smu(void *handle, | 1203 | static int vi_common_set_clockgating_state_by_smu(void *handle, |
1156 | enum amd_clockgating_state state) | 1204 | enum amd_clockgating_state state) |
1157 | { | 1205 | { |
1158 | uint32_t msg_id, pp_state; | 1206 | uint32_t msg_id, pp_state = 0; |
1207 | uint32_t pp_support_state = 0; | ||
1159 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 1208 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
1160 | void *pp_handle = adev->powerplay.pp_handle; | 1209 | void *pp_handle = adev->powerplay.pp_handle; |
1161 | 1210 | ||
1162 | if (state == AMD_CG_STATE_UNGATE) | 1211 | if (adev->cg_flags & (AMD_CG_SUPPORT_MC_LS | AMD_CG_SUPPORT_MC_MGCG)) { |
1163 | pp_state = 0; | 1212 | if (adev->cg_flags & AMD_CG_SUPPORT_MC_LS) { |
1164 | else | 1213 | pp_support_state = AMD_CG_SUPPORT_MC_LS; |
1165 | pp_state = PP_STATE_CG | PP_STATE_LS; | 1214 | pp_state = PP_STATE_LS; |
1166 | 1215 | } | |
1167 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | 1216 | if (adev->cg_flags & AMD_CG_SUPPORT_MC_MGCG) { |
1168 | PP_BLOCK_SYS_MC, | 1217 | pp_support_state |= AMD_CG_SUPPORT_MC_MGCG; |
1169 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 1218 | pp_state |= PP_STATE_CG; |
1170 | pp_state); | 1219 | } |
1171 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 1220 | if (state == AMD_CG_STATE_UNGATE) |
1172 | 1221 | pp_state = 0; | |
1173 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | 1222 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, |
1174 | PP_BLOCK_SYS_SDMA, | 1223 | PP_BLOCK_SYS_MC, |
1175 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 1224 | pp_support_state, |
1176 | pp_state); | 1225 | pp_state); |
1177 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 1226 | amd_set_clockgating_by_smu(pp_handle, msg_id); |
1178 | 1227 | } | |
1179 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | 1228 | |
1180 | PP_BLOCK_SYS_HDP, | 1229 | if (adev->cg_flags & (AMD_CG_SUPPORT_SDMA_LS | AMD_CG_SUPPORT_SDMA_MGCG)) { |
1181 | PP_STATE_SUPPORT_CG | PP_STATE_SUPPORT_LS, | 1230 | if (adev->cg_flags & AMD_CG_SUPPORT_SDMA_LS) { |
1182 | pp_state); | 1231 | pp_support_state = AMD_CG_SUPPORT_SDMA_LS; |
1183 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 1232 | pp_state = PP_STATE_LS; |
1184 | 1233 | } | |
1185 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | 1234 | if (adev->cg_flags & AMD_CG_SUPPORT_SDMA_MGCG) { |
1186 | PP_BLOCK_SYS_BIF, | 1235 | pp_support_state |= AMD_CG_SUPPORT_SDMA_MGCG; |
1187 | PP_STATE_SUPPORT_LS, | 1236 | pp_state |= PP_STATE_CG; |
1188 | pp_state); | 1237 | } |
1189 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 1238 | if (state == AMD_CG_STATE_UNGATE) |
1190 | 1239 | pp_state = 0; | |
1191 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | 1240 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, |
1192 | PP_BLOCK_SYS_BIF, | 1241 | PP_BLOCK_SYS_SDMA, |
1193 | PP_STATE_SUPPORT_CG, | 1242 | pp_support_state, |
1194 | pp_state); | 1243 | pp_state); |
1195 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 1244 | amd_set_clockgating_by_smu(pp_handle, msg_id); |
1196 | 1245 | } | |
1197 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | 1246 | |
1198 | PP_BLOCK_SYS_DRM, | 1247 | if (adev->cg_flags & (AMD_CG_SUPPORT_HDP_LS | AMD_CG_SUPPORT_HDP_MGCG)) { |
1199 | PP_STATE_SUPPORT_LS, | 1248 | if (adev->cg_flags & AMD_CG_SUPPORT_HDP_LS) { |
1200 | pp_state); | 1249 | pp_support_state = AMD_CG_SUPPORT_HDP_LS; |
1201 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 1250 | pp_state = PP_STATE_LS; |
1202 | 1251 | } | |
1203 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | 1252 | if (adev->cg_flags & AMD_CG_SUPPORT_HDP_MGCG) { |
1204 | PP_BLOCK_SYS_ROM, | 1253 | pp_support_state |= AMD_CG_SUPPORT_HDP_MGCG; |
1205 | PP_STATE_SUPPORT_CG, | 1254 | pp_state |= PP_STATE_CG; |
1206 | pp_state); | 1255 | } |
1207 | amd_set_clockgating_by_smu(pp_handle, msg_id); | 1256 | if (state == AMD_CG_STATE_UNGATE) |
1257 | pp_state = 0; | ||
1258 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | ||
1259 | PP_BLOCK_SYS_HDP, | ||
1260 | pp_support_state, | ||
1261 | pp_state); | ||
1262 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
1263 | } | ||
1208 | 1264 | ||
1265 | |||
1266 | if (adev->cg_flags & AMD_CG_SUPPORT_BIF_LS) { | ||
1267 | if (state == AMD_CG_STATE_UNGATE) | ||
1268 | pp_state = 0; | ||
1269 | else | ||
1270 | pp_state = PP_STATE_LS; | ||
1271 | |||
1272 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | ||
1273 | PP_BLOCK_SYS_BIF, | ||
1274 | PP_STATE_SUPPORT_LS, | ||
1275 | pp_state); | ||
1276 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
1277 | } | ||
1278 | if (adev->cg_flags & AMD_CG_SUPPORT_BIF_MGCG) { | ||
1279 | if (state == AMD_CG_STATE_UNGATE) | ||
1280 | pp_state = 0; | ||
1281 | else | ||
1282 | pp_state = PP_STATE_CG; | ||
1283 | |||
1284 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | ||
1285 | PP_BLOCK_SYS_BIF, | ||
1286 | PP_STATE_SUPPORT_CG, | ||
1287 | pp_state); | ||
1288 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
1289 | } | ||
1290 | |||
1291 | if (adev->cg_flags & AMD_CG_SUPPORT_DRM_LS) { | ||
1292 | |||
1293 | if (state == AMD_CG_STATE_UNGATE) | ||
1294 | pp_state = 0; | ||
1295 | else | ||
1296 | pp_state = PP_STATE_LS; | ||
1297 | |||
1298 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | ||
1299 | PP_BLOCK_SYS_DRM, | ||
1300 | PP_STATE_SUPPORT_LS, | ||
1301 | pp_state); | ||
1302 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
1303 | } | ||
1304 | |||
1305 | if (adev->cg_flags & AMD_CG_SUPPORT_ROM_MGCG) { | ||
1306 | |||
1307 | if (state == AMD_CG_STATE_UNGATE) | ||
1308 | pp_state = 0; | ||
1309 | else | ||
1310 | pp_state = PP_STATE_CG; | ||
1311 | |||
1312 | msg_id = PP_CG_MSG_ID(PP_GROUP_SYS, | ||
1313 | PP_BLOCK_SYS_ROM, | ||
1314 | PP_STATE_SUPPORT_CG, | ||
1315 | pp_state); | ||
1316 | amd_set_clockgating_by_smu(pp_handle, msg_id); | ||
1317 | } | ||
1209 | return 0; | 1318 | return 0; |
1210 | } | 1319 | } |
1211 | 1320 | ||
diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h index d1986276dbbd..c02469ada9f1 100644 --- a/drivers/gpu/drm/amd/include/amd_shared.h +++ b/drivers/gpu/drm/amd/include/amd_shared.h | |||
@@ -126,6 +126,10 @@ enum amd_vce_level { | |||
126 | #define AMD_CG_SUPPORT_HDP_LS (1 << 15) | 126 | #define AMD_CG_SUPPORT_HDP_LS (1 << 15) |
127 | #define AMD_CG_SUPPORT_HDP_MGCG (1 << 16) | 127 | #define AMD_CG_SUPPORT_HDP_MGCG (1 << 16) |
128 | #define AMD_CG_SUPPORT_ROM_MGCG (1 << 17) | 128 | #define AMD_CG_SUPPORT_ROM_MGCG (1 << 17) |
129 | #define AMD_CG_SUPPORT_DRM_LS (1 << 18) | ||
130 | #define AMD_CG_SUPPORT_BIF_MGCG (1 << 19) | ||
131 | #define AMD_CG_SUPPORT_GFX_3D_CGCG (1 << 20) | ||
132 | #define AMD_CG_SUPPORT_GFX_3D_CGLS (1 << 21) | ||
129 | 133 | ||
130 | /* PG flags */ | 134 | /* PG flags */ |
131 | #define AMD_PG_SUPPORT_GFX_PG (1 << 0) | 135 | #define AMD_PG_SUPPORT_GFX_PG (1 << 0) |