diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/atombios_crtc.c | 35 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/evergreen_reg.h | 29 |
2 files changed, 62 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c index 87631fede1f8..2b97262e3ab1 100644 --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c | |||
| @@ -1107,9 +1107,40 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, | |||
| 1107 | return -EINVAL; | 1107 | return -EINVAL; |
| 1108 | } | 1108 | } |
| 1109 | 1109 | ||
| 1110 | if (tiling_flags & RADEON_TILING_MACRO) | 1110 | if (tiling_flags & RADEON_TILING_MACRO) { |
| 1111 | if (rdev->family >= CHIP_CAYMAN) | ||
| 1112 | tmp = rdev->config.cayman.tile_config; | ||
| 1113 | else | ||
| 1114 | tmp = rdev->config.evergreen.tile_config; | ||
| 1115 | |||
| 1116 | switch ((tmp & 0xf0) >> 4) { | ||
| 1117 | case 0: /* 4 banks */ | ||
| 1118 | fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_4_BANK); | ||
| 1119 | break; | ||
| 1120 | case 1: /* 8 banks */ | ||
| 1121 | default: | ||
| 1122 | fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_8_BANK); | ||
| 1123 | break; | ||
| 1124 | case 2: /* 16 banks */ | ||
| 1125 | fb_format |= EVERGREEN_GRPH_NUM_BANKS(EVERGREEN_ADDR_SURF_16_BANK); | ||
| 1126 | break; | ||
| 1127 | } | ||
| 1128 | |||
| 1129 | switch ((tmp & 0xf000) >> 12) { | ||
| 1130 | case 0: /* 1KB rows */ | ||
| 1131 | default: | ||
| 1132 | fb_format |= EVERGREEN_GRPH_TILE_SPLIT(EVERGREEN_ADDR_SURF_TILE_SPLIT_1KB); | ||
| 1133 | break; | ||
| 1134 | case 1: /* 2KB rows */ | ||
| 1135 | fb_format |= EVERGREEN_GRPH_TILE_SPLIT(EVERGREEN_ADDR_SURF_TILE_SPLIT_2KB); | ||
| 1136 | break; | ||
| 1137 | case 2: /* 4KB rows */ | ||
| 1138 | fb_format |= EVERGREEN_GRPH_TILE_SPLIT(EVERGREEN_ADDR_SURF_TILE_SPLIT_4KB); | ||
| 1139 | break; | ||
| 1140 | } | ||
| 1141 | |||
| 1111 | fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_2D_TILED_THIN1); | 1142 | fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_2D_TILED_THIN1); |
| 1112 | else if (tiling_flags & RADEON_TILING_MICRO) | 1143 | } else if (tiling_flags & RADEON_TILING_MICRO) |
| 1113 | fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_1D_TILED_THIN1); | 1144 | fb_format |= EVERGREEN_GRPH_ARRAY_MODE(EVERGREEN_GRPH_ARRAY_1D_TILED_THIN1); |
| 1114 | 1145 | ||
| 1115 | switch (radeon_crtc->crtc_id) { | 1146 | switch (radeon_crtc->crtc_id) { |
diff --git a/drivers/gpu/drm/radeon/evergreen_reg.h b/drivers/gpu/drm/radeon/evergreen_reg.h index c781c92c3451..7d7f2155e34c 100644 --- a/drivers/gpu/drm/radeon/evergreen_reg.h +++ b/drivers/gpu/drm/radeon/evergreen_reg.h | |||
| @@ -42,6 +42,17 @@ | |||
| 42 | # define EVERGREEN_GRPH_DEPTH_8BPP 0 | 42 | # define EVERGREEN_GRPH_DEPTH_8BPP 0 |
| 43 | # define EVERGREEN_GRPH_DEPTH_16BPP 1 | 43 | # define EVERGREEN_GRPH_DEPTH_16BPP 1 |
| 44 | # define EVERGREEN_GRPH_DEPTH_32BPP 2 | 44 | # define EVERGREEN_GRPH_DEPTH_32BPP 2 |
| 45 | # define EVERGREEN_GRPH_NUM_BANKS(x) (((x) & 0x3) << 2) | ||
| 46 | # define EVERGREEN_ADDR_SURF_2_BANK 0 | ||
| 47 | # define EVERGREEN_ADDR_SURF_4_BANK 1 | ||
| 48 | # define EVERGREEN_ADDR_SURF_8_BANK 2 | ||
| 49 | # define EVERGREEN_ADDR_SURF_16_BANK 3 | ||
| 50 | # define EVERGREEN_GRPH_Z(x) (((x) & 0x3) << 4) | ||
| 51 | # define EVERGREEN_GRPH_BANK_WIDTH(x) (((x) & 0x3) << 6) | ||
| 52 | # define EVERGREEN_ADDR_SURF_BANK_WIDTH_1 0 | ||
| 53 | # define EVERGREEN_ADDR_SURF_BANK_WIDTH_2 1 | ||
| 54 | # define EVERGREEN_ADDR_SURF_BANK_WIDTH_4 2 | ||
| 55 | # define EVERGREEN_ADDR_SURF_BANK_WIDTH_8 3 | ||
| 45 | # define EVERGREEN_GRPH_FORMAT(x) (((x) & 0x7) << 8) | 56 | # define EVERGREEN_GRPH_FORMAT(x) (((x) & 0x7) << 8) |
| 46 | /* 8 BPP */ | 57 | /* 8 BPP */ |
| 47 | # define EVERGREEN_GRPH_FORMAT_INDEXED 0 | 58 | # define EVERGREEN_GRPH_FORMAT_INDEXED 0 |
| @@ -61,6 +72,24 @@ | |||
| 61 | # define EVERGREEN_GRPH_FORMAT_8B_BGRA1010102 5 | 72 | # define EVERGREEN_GRPH_FORMAT_8B_BGRA1010102 5 |
| 62 | # define EVERGREEN_GRPH_FORMAT_RGB111110 6 | 73 | # define EVERGREEN_GRPH_FORMAT_RGB111110 6 |
| 63 | # define EVERGREEN_GRPH_FORMAT_BGR101111 7 | 74 | # define EVERGREEN_GRPH_FORMAT_BGR101111 7 |
| 75 | # define EVERGREEN_GRPH_BANK_HEIGHT(x) (((x) & 0x3) << 11) | ||
| 76 | # define EVERGREEN_ADDR_SURF_BANK_HEIGHT_1 0 | ||
| 77 | # define EVERGREEN_ADDR_SURF_BANK_HEIGHT_2 1 | ||
| 78 | # define EVERGREEN_ADDR_SURF_BANK_HEIGHT_4 2 | ||
| 79 | # define EVERGREEN_ADDR_SURF_BANK_HEIGHT_8 3 | ||
| 80 | # define EVERGREEN_GRPH_TILE_SPLIT(x) (((x) & 0x7) << 13) | ||
| 81 | # define EVERGREEN_ADDR_SURF_TILE_SPLIT_64B 0 | ||
| 82 | # define EVERGREEN_ADDR_SURF_TILE_SPLIT_128B 1 | ||
| 83 | # define EVERGREEN_ADDR_SURF_TILE_SPLIT_256B 2 | ||
| 84 | # define EVERGREEN_ADDR_SURF_TILE_SPLIT_512B 3 | ||
| 85 | # define EVERGREEN_ADDR_SURF_TILE_SPLIT_1KB 4 | ||
| 86 | # define EVERGREEN_ADDR_SURF_TILE_SPLIT_2KB 5 | ||
| 87 | # define EVERGREEN_ADDR_SURF_TILE_SPLIT_4KB 6 | ||
| 88 | # define EVERGREEN_GRPH_MACRO_TILE_ASPECT(x) (((x) & 0x3) << 18) | ||
| 89 | # define EVERGREEN_ADDR_SURF_MACRO_TILE_ASPECT_1 0 | ||
| 90 | # define EVERGREEN_ADDR_SURF_MACRO_TILE_ASPECT_2 1 | ||
| 91 | # define EVERGREEN_ADDR_SURF_MACRO_TILE_ASPECT_4 2 | ||
| 92 | # define EVERGREEN_ADDR_SURF_MACRO_TILE_ASPECT_8 3 | ||
| 64 | # define EVERGREEN_GRPH_ARRAY_MODE(x) (((x) & 0x7) << 20) | 93 | # define EVERGREEN_GRPH_ARRAY_MODE(x) (((x) & 0x7) << 20) |
| 65 | # define EVERGREEN_GRPH_ARRAY_LINEAR_GENERAL 0 | 94 | # define EVERGREEN_GRPH_ARRAY_LINEAR_GENERAL 0 |
| 66 | # define EVERGREEN_GRPH_ARRAY_LINEAR_ALIGNED 1 | 95 | # define EVERGREEN_GRPH_ARRAY_LINEAR_ALIGNED 1 |
