提交 ee59f2b4 编写于 作者: A Alex Deucher 提交者: Dave Airlie

drm/radeon/kms/r600: fix rs880 support v2

Lots of cases were wrong or missing.

v2: rebased against drm-next
Signed-off-by: NAlex Deucher <alexdeucher@gmail.com>
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 e29649db
...@@ -858,7 +858,8 @@ void r600_gpu_init(struct radeon_device *rdev) ...@@ -858,7 +858,8 @@ void r600_gpu_init(struct radeon_device *rdev)
((rdev->family) == CHIP_RV630) || ((rdev->family) == CHIP_RV630) ||
((rdev->family) == CHIP_RV610) || ((rdev->family) == CHIP_RV610) ||
((rdev->family) == CHIP_RV620) || ((rdev->family) == CHIP_RV620) ||
((rdev->family) == CHIP_RS780)) { ((rdev->family) == CHIP_RS780) ||
((rdev->family) == CHIP_RS880)) {
WREG32(DB_DEBUG, PREZ_MUST_WAIT_FOR_POSTZ_DONE); WREG32(DB_DEBUG, PREZ_MUST_WAIT_FOR_POSTZ_DONE);
} else { } else {
WREG32(DB_DEBUG, 0); WREG32(DB_DEBUG, 0);
...@@ -875,7 +876,8 @@ void r600_gpu_init(struct radeon_device *rdev) ...@@ -875,7 +876,8 @@ void r600_gpu_init(struct radeon_device *rdev)
tmp = RREG32(SQ_MS_FIFO_SIZES); tmp = RREG32(SQ_MS_FIFO_SIZES);
if (((rdev->family) == CHIP_RV610) || if (((rdev->family) == CHIP_RV610) ||
((rdev->family) == CHIP_RV620) || ((rdev->family) == CHIP_RV620) ||
((rdev->family) == CHIP_RS780)) { ((rdev->family) == CHIP_RS780) ||
((rdev->family) == CHIP_RS880)) {
tmp = (CACHE_FIFO_SIZE(0xa) | tmp = (CACHE_FIFO_SIZE(0xa) |
FETCH_FIFO_HIWATER(0xa) | FETCH_FIFO_HIWATER(0xa) |
DONE_FIFO_HIWATER(0xe0) | DONE_FIFO_HIWATER(0xe0) |
...@@ -918,7 +920,8 @@ void r600_gpu_init(struct radeon_device *rdev) ...@@ -918,7 +920,8 @@ void r600_gpu_init(struct radeon_device *rdev)
NUM_ES_STACK_ENTRIES(0)); NUM_ES_STACK_ENTRIES(0));
} else if (((rdev->family) == CHIP_RV610) || } else if (((rdev->family) == CHIP_RV610) ||
((rdev->family) == CHIP_RV620) || ((rdev->family) == CHIP_RV620) ||
((rdev->family) == CHIP_RS780)) { ((rdev->family) == CHIP_RS780) ||
((rdev->family) == CHIP_RS880)) {
/* no vertex cache */ /* no vertex cache */
sq_config &= ~VC_ENABLE; sq_config &= ~VC_ENABLE;
...@@ -975,7 +978,8 @@ void r600_gpu_init(struct radeon_device *rdev) ...@@ -975,7 +978,8 @@ void r600_gpu_init(struct radeon_device *rdev)
if (((rdev->family) == CHIP_RV610) || if (((rdev->family) == CHIP_RV610) ||
((rdev->family) == CHIP_RV620) || ((rdev->family) == CHIP_RV620) ||
((rdev->family) == CHIP_RS780)) { ((rdev->family) == CHIP_RS780) ||
((rdev->family) == CHIP_RS880)) {
WREG32(VGT_CACHE_INVALIDATION, CACHE_INVALIDATION(TC_ONLY)); WREG32(VGT_CACHE_INVALIDATION, CACHE_INVALIDATION(TC_ONLY));
} else { } else {
WREG32(VGT_CACHE_INVALIDATION, CACHE_INVALIDATION(VC_AND_TC)); WREG32(VGT_CACHE_INVALIDATION, CACHE_INVALIDATION(VC_AND_TC));
...@@ -1001,8 +1005,9 @@ void r600_gpu_init(struct radeon_device *rdev) ...@@ -1001,8 +1005,9 @@ void r600_gpu_init(struct radeon_device *rdev)
tmp = rdev->config.r600.max_pipes * 16; tmp = rdev->config.r600.max_pipes * 16;
switch (rdev->family) { switch (rdev->family) {
case CHIP_RV610: case CHIP_RV610:
case CHIP_RS780:
case CHIP_RV620: case CHIP_RV620:
case CHIP_RS780:
case CHIP_RS880:
tmp += 32; tmp += 32;
break; break;
case CHIP_RV670: case CHIP_RV670:
...@@ -1043,8 +1048,9 @@ void r600_gpu_init(struct radeon_device *rdev) ...@@ -1043,8 +1048,9 @@ void r600_gpu_init(struct radeon_device *rdev)
switch (rdev->family) { switch (rdev->family) {
case CHIP_RV610: case CHIP_RV610:
case CHIP_RS780:
case CHIP_RV620: case CHIP_RV620:
case CHIP_RS780:
case CHIP_RS880:
tmp = TC_L2_SIZE(8); tmp = TC_L2_SIZE(8);
break; break;
case CHIP_RV630: case CHIP_RV630:
......
...@@ -368,7 +368,7 @@ set_default_state(struct radeon_device *rdev) ...@@ -368,7 +368,7 @@ set_default_state(struct radeon_device *rdev)
if ((rdev->family == CHIP_RV610) || if ((rdev->family == CHIP_RV610) ||
(rdev->family == CHIP_RV620) || (rdev->family == CHIP_RV620) ||
(rdev->family == CHIP_RS780) || (rdev->family == CHIP_RS780) ||
(rdev->family == CHIP_RS780) || (rdev->family == CHIP_RS880) ||
(rdev->family == CHIP_RV710)) (rdev->family == CHIP_RV710))
sq_config = 0; sq_config = 0;
else else
......
...@@ -277,7 +277,8 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev) ...@@ -277,7 +277,8 @@ bool radeon_get_atom_connector_info_from_object_table(struct drm_device *dev)
ATOM_DEVICE_CV_SUPPORT) ATOM_DEVICE_CV_SUPPORT)
continue; continue;
if ((rdev->family == CHIP_RS780) && /* IGP chips */
if ((rdev->flags & RADEON_IS_IGP) &&
(con_obj_id == (con_obj_id ==
CONNECTOR_OBJECT_ID_PCIE_CONNECTOR)) { CONNECTOR_OBJECT_ID_PCIE_CONNECTOR)) {
uint16_t igp_offset = 0; uint16_t igp_offset = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册