aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2011-07-15 15:53:52 -0400
committerDave Airlie <airlied@redhat.com>2011-07-18 03:13:08 -0400
commite55b9422e186d208f162f056ee28b6eb6b9b81a9 (patch)
tree1b72616db7d9b2f651b354b11e74287a4910c3b9 /drivers/gpu
parent28a4a163b561c39ac0c798d420e0927f29e9d4c8 (diff)
drm/radeon/kms: add info query for backend map
The 3D driver need to get the pipe to backend map to certain things. Add a query to get the info. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/evergreen.c1
-rw-r--r--drivers/gpu/drm/radeon/ni.c1
-rw-r--r--drivers/gpu/drm/radeon/r600.c1
-rw-r--r--drivers/gpu/drm/radeon/radeon.h3
-rw-r--r--drivers/gpu/drm/radeon/radeon_drv.c3
-rw-r--r--drivers/gpu/drm/radeon/radeon_kms.c13
-rw-r--r--drivers/gpu/drm/radeon/rv770.c1
7 files changed, 22 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 660f96401a05..55d04ee88c24 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -2047,6 +2047,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
2047 rdev->config.evergreen.tile_config |= 2047 rdev->config.evergreen.tile_config |=
2048 ((gb_addr_config & 0x30000000) >> 28) << 12; 2048 ((gb_addr_config & 0x30000000) >> 28) << 12;
2049 2049
2050 rdev->config.evergreen.backend_map = gb_backend_map;
2050 WREG32(GB_BACKEND_MAP, gb_backend_map); 2051 WREG32(GB_BACKEND_MAP, gb_backend_map);
2051 WREG32(GB_ADDR_CONFIG, gb_addr_config); 2052 WREG32(GB_ADDR_CONFIG, gb_addr_config);
2052 WREG32(DMIF_ADDR_CONFIG, gb_addr_config); 2053 WREG32(DMIF_ADDR_CONFIG, gb_addr_config);
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index 559dbd412906..44c4750f4518 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -833,6 +833,7 @@ static void cayman_gpu_init(struct radeon_device *rdev)
833 rdev->config.cayman.tile_config |= 833 rdev->config.cayman.tile_config |=
834 ((gb_addr_config & ROW_SIZE_MASK) >> ROW_SIZE_SHIFT) << 12; 834 ((gb_addr_config & ROW_SIZE_MASK) >> ROW_SIZE_SHIFT) << 12;
835 835
836 rdev->config.cayman.backend_map = gb_backend_map;
836 WREG32(GB_BACKEND_MAP, gb_backend_map); 837 WREG32(GB_BACKEND_MAP, gb_backend_map);
837 WREG32(GB_ADDR_CONFIG, gb_addr_config); 838 WREG32(GB_ADDR_CONFIG, gb_addr_config);
838 WREG32(DMIF_ADDR_CONFIG, gb_addr_config); 839 WREG32(DMIF_ADDR_CONFIG, gb_addr_config);
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
index bc54b26cb32f..9fefce704f96 100644
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -1662,6 +1662,7 @@ void r600_gpu_init(struct radeon_device *rdev)
1662 R6XX_MAX_BACKENDS_MASK) >> 16)), 1662 R6XX_MAX_BACKENDS_MASK) >> 16)),
1663 (cc_rb_backend_disable >> 16)); 1663 (cc_rb_backend_disable >> 16));
1664 rdev->config.r600.tile_config = tiling_config; 1664 rdev->config.r600.tile_config = tiling_config;
1665 rdev->config.r600.backend_map = backend_map;
1665 tiling_config |= BACKEND_MAP(backend_map); 1666 tiling_config |= BACKEND_MAP(backend_map);
1666 WREG32(GB_TILING_CONFIG, tiling_config); 1667 WREG32(GB_TILING_CONFIG, tiling_config);
1667 WREG32(DCP_TILING_CONFIG, tiling_config & 0xffff); 1668 WREG32(DCP_TILING_CONFIG, tiling_config & 0xffff);
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index ef0e0e016914..ec534f52408a 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -1003,6 +1003,7 @@ struct r600_asic {
1003 unsigned tiling_npipes; 1003 unsigned tiling_npipes;
1004 unsigned tiling_group_size; 1004 unsigned tiling_group_size;
1005 unsigned tile_config; 1005 unsigned tile_config;
1006 unsigned backend_map;
1006 struct r100_gpu_lockup lockup; 1007 struct r100_gpu_lockup lockup;
1007}; 1008};
1008 1009
@@ -1028,6 +1029,7 @@ struct rv770_asic {
1028 unsigned tiling_npipes; 1029 unsigned tiling_npipes;
1029 unsigned tiling_group_size; 1030 unsigned tiling_group_size;
1030 unsigned tile_config; 1031 unsigned tile_config;
1032 unsigned backend_map;
1031 struct r100_gpu_lockup lockup; 1033 struct r100_gpu_lockup lockup;
1032}; 1034};
1033 1035
@@ -1054,6 +1056,7 @@ struct evergreen_asic {
1054 unsigned tiling_npipes; 1056 unsigned tiling_npipes;
1055 unsigned tiling_group_size; 1057 unsigned tiling_group_size;
1056 unsigned tile_config; 1058 unsigned tile_config;
1059 unsigned backend_map;
1057 struct r100_gpu_lockup lockup; 1060 struct r100_gpu_lockup lockup;
1058}; 1061};
1059 1062
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index cbb4584a4a23..85f033f19a8a 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -51,9 +51,10 @@
51 * 2.8.0 - pageflip support, r500 US_FORMAT regs. r500 ARGB2101010 colorbuf, r300->r500 CMASK, clock crystal query 51 * 2.8.0 - pageflip support, r500 US_FORMAT regs. r500 ARGB2101010 colorbuf, r300->r500 CMASK, clock crystal query
52 * 2.9.0 - r600 tiling (s3tc,rgtc) working, SET_PREDICATION packet 3 on r600 + eg, backend query 52 * 2.9.0 - r600 tiling (s3tc,rgtc) working, SET_PREDICATION packet 3 on r600 + eg, backend query
53 * 2.10.0 - fusion 2D tiling, initial compute support for the CS checker 53 * 2.10.0 - fusion 2D tiling, initial compute support for the CS checker
54 * 2.11.0 - backend map
54 */ 55 */
55#define KMS_DRIVER_MAJOR 2 56#define KMS_DRIVER_MAJOR 2
56#define KMS_DRIVER_MINOR 10 57#define KMS_DRIVER_MINOR 11
57#define KMS_DRIVER_PATCHLEVEL 0 58#define KMS_DRIVER_PATCHLEVEL 0
58int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); 59int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags);
59int radeon_driver_unload_kms(struct drm_device *dev); 60int radeon_driver_unload_kms(struct drm_device *dev);
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 6f80a216bb39..be2c1224e68a 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -237,6 +237,19 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
237 case RADEON_INFO_FUSION_GART_WORKING: 237 case RADEON_INFO_FUSION_GART_WORKING:
238 value = 1; 238 value = 1;
239 break; 239 break;
240 case RADEON_INFO_BACKEND_MAP:
241 if (rdev->family >= CHIP_CAYMAN)
242 value = rdev->config.cayman.backend_map;
243 else if (rdev->family >= CHIP_CEDAR)
244 value = rdev->config.evergreen.backend_map;
245 else if (rdev->family >= CHIP_RV770)
246 value = rdev->config.rv770.backend_map;
247 else if (rdev->family >= CHIP_R600)
248 value = rdev->config.r600.backend_map;
249 else {
250 return -EINVAL;
251 }
252 break;
240 default: 253 default:
241 DRM_DEBUG_KMS("Invalid request %d\n", info->request); 254 DRM_DEBUG_KMS("Invalid request %d\n", info->request);
242 return -EINVAL; 255 return -EINVAL;
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
index 4de51891aa6d..4720d000d440 100644
--- a/drivers/gpu/drm/radeon/rv770.c
+++ b/drivers/gpu/drm/radeon/rv770.c
@@ -778,6 +778,7 @@ static void rv770_gpu_init(struct radeon_device *rdev)
778 (cc_rb_backend_disable >> 16)); 778 (cc_rb_backend_disable >> 16));
779 779
780 rdev->config.rv770.tile_config = gb_tiling_config; 780 rdev->config.rv770.tile_config = gb_tiling_config;
781 rdev->config.rv770.backend_map = backend_map;
781 gb_tiling_config |= BACKEND_MAP(backend_map); 782 gb_tiling_config |= BACKEND_MAP(backend_map);
782 783
783 WREG32(GB_TILING_CONFIG, gb_tiling_config); 784 WREG32(GB_TILING_CONFIG, gb_tiling_config);