aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2013-08-07 20:14:08 -0400
committerAlex Deucher <alexander.deucher@amd.com>2013-11-08 12:33:42 -0500
commitfc821b70b0e58908e94464d0479c9898dd1074f9 (patch)
tree32c39010807fdb81206df6d8e96dcc75172d5505
parent8efff33742f5e2ed6184c2dacace5a1fe695909c (diff)
drm/radeon: update rb setup for hawaii
The formula needs to be adjusted since there are 4 RBs per SH rather than 2 as on previous asics. Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/radeon/cik.c11
-rw-r--r--drivers/gpu/drm/radeon/cikd.h4
2 files changed, 13 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 6ca1f87af87a..24d96cbb1f03 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -3042,7 +3042,10 @@ static void cik_setup_rb(struct radeon_device *rdev,
3042 for (j = 0; j < sh_per_se; j++) { 3042 for (j = 0; j < sh_per_se; j++) {
3043 cik_select_se_sh(rdev, i, j); 3043 cik_select_se_sh(rdev, i, j);
3044 data = cik_get_rb_disabled(rdev, max_rb_num, se_num, sh_per_se); 3044 data = cik_get_rb_disabled(rdev, max_rb_num, se_num, sh_per_se);
3045 disabled_rbs |= data << ((i * sh_per_se + j) * CIK_RB_BITMAP_WIDTH_PER_SH); 3045 if (rdev->family == CHIP_HAWAII)
3046 disabled_rbs |= data << ((i * sh_per_se + j) * HAWAII_RB_BITMAP_WIDTH_PER_SH);
3047 else
3048 disabled_rbs |= data << ((i * sh_per_se + j) * CIK_RB_BITMAP_WIDTH_PER_SH);
3046 } 3049 }
3047 } 3050 }
3048 cik_select_se_sh(rdev, 0xffffffff, 0xffffffff); 3051 cik_select_se_sh(rdev, 0xffffffff, 0xffffffff);
@@ -3059,6 +3062,12 @@ static void cik_setup_rb(struct radeon_device *rdev,
3059 data = 0; 3062 data = 0;
3060 for (j = 0; j < sh_per_se; j++) { 3063 for (j = 0; j < sh_per_se; j++) {
3061 switch (enabled_rbs & 3) { 3064 switch (enabled_rbs & 3) {
3065 case 0:
3066 if (j == 0)
3067 data |= PKR_MAP(RASTER_CONFIG_RB_MAP_3);
3068 else
3069 data |= PKR_MAP(RASTER_CONFIG_RB_MAP_0);
3070 break;
3062 case 1: 3071 case 1:
3063 data |= (RASTER_CONFIG_RB_MAP_0 << (i * sh_per_se + j) * 2); 3072 data |= (RASTER_CONFIG_RB_MAP_0 << (i * sh_per_se + j) * 2);
3064 break; 3073 break;
diff --git a/drivers/gpu/drm/radeon/cikd.h b/drivers/gpu/drm/radeon/cikd.h
index 8eea4f2cc92c..5964af5e5b2d 100644
--- a/drivers/gpu/drm/radeon/cikd.h
+++ b/drivers/gpu/drm/radeon/cikd.h
@@ -27,7 +27,8 @@
27#define BONAIRE_GB_ADDR_CONFIG_GOLDEN 0x12010001 27#define BONAIRE_GB_ADDR_CONFIG_GOLDEN 0x12010001
28#define HAWAII_GB_ADDR_CONFIG_GOLDEN 0x12011003 28#define HAWAII_GB_ADDR_CONFIG_GOLDEN 0x12011003
29 29
30#define CIK_RB_BITMAP_WIDTH_PER_SH 2 30#define CIK_RB_BITMAP_WIDTH_PER_SH 2
31#define HAWAII_RB_BITMAP_WIDTH_PER_SH 4
31 32
32/* DIDT IND registers */ 33/* DIDT IND registers */
33#define DIDT_SQ_CTRL0 0x0 34#define DIDT_SQ_CTRL0 0x0
@@ -1459,6 +1460,7 @@
1459# define RASTER_CONFIG_RB_MAP_1 1 1460# define RASTER_CONFIG_RB_MAP_1 1
1460# define RASTER_CONFIG_RB_MAP_2 2 1461# define RASTER_CONFIG_RB_MAP_2 2
1461# define RASTER_CONFIG_RB_MAP_3 3 1462# define RASTER_CONFIG_RB_MAP_3 3
1463#define PKR_MAP(x) ((x) << 8)
1462 1464
1463#define VGT_EVENT_INITIATOR 0x28a90 1465#define VGT_EVENT_INITIATOR 0x28a90
1464# define SAMPLE_STREAMOUTSTATS1 (1 << 0) 1466# define SAMPLE_STREAMOUTSTATS1 (1 << 0)