aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorTormod Volden <debian.tormod@gmail.com>2010-04-22 16:57:32 -0400
committerDave Airlie <airlied@redhat.com>2010-04-22 23:54:59 -0400
commit94f7bf647315472c80b8368c849739038e5620a3 (patch)
tree57d8336fcb4504c56500e8f926f0cd73dcf0a589 /drivers/gpu
parent9c950a43dd4d1e22a4b893c991871bac26930f97 (diff)
drm/radeon: 9800 SE has only one quadpipe
Although these cards have 2 pipelines on the silicon only the first passed the QA and the other should be disabled. http://www.digital-daily.com/video/ati-radeon9800se/ http://www.rojakpot.com/showarticle.aspx?artno=101&pgno=1 agd5f: add some other SE cards as well; fix up kms Signed-off-by: Tormod Volden <debian.tormod@gmail.com> 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/r300.c5
-rw-r--r--drivers/gpu/drm/radeon/r420.c6
-rw-r--r--drivers/gpu/drm/radeon/radeon_cp.c9
3 files changed, 15 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
index 2a9b59457556..6ec86fc2f474 100644
--- a/drivers/gpu/drm/radeon/r300.c
+++ b/drivers/gpu/drm/radeon/r300.c
@@ -323,13 +323,12 @@ void r300_gpu_init(struct radeon_device *rdev)
323 uint32_t gb_tile_config, tmp; 323 uint32_t gb_tile_config, tmp;
324 324
325 r100_hdp_reset(rdev); 325 r100_hdp_reset(rdev);
326 /* FIXME: rv380 one pipes ? */
327 if ((rdev->family == CHIP_R300 && rdev->pdev->device != 0x4144) || 326 if ((rdev->family == CHIP_R300 && rdev->pdev->device != 0x4144) ||
328 (rdev->family == CHIP_R350)) { 327 (rdev->family == CHIP_R350 && rdev->pdev->device != 0x4148)) {
329 /* r300,r350 */ 328 /* r300,r350 */
330 rdev->num_gb_pipes = 2; 329 rdev->num_gb_pipes = 2;
331 } else { 330 } else {
332 /* rv350,rv370,rv380,r300 AD */ 331 /* rv350,rv370,rv380,r300 AD, r350 AH */
333 rdev->num_gb_pipes = 1; 332 rdev->num_gb_pipes = 1;
334 } 333 }
335 rdev->num_z_pipes = 1; 334 rdev->num_z_pipes = 1;
diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c
index 0b8603ca6974..100af6570b09 100644
--- a/drivers/gpu/drm/radeon/r420.c
+++ b/drivers/gpu/drm/radeon/r420.c
@@ -58,6 +58,12 @@ void r420_pipes_init(struct radeon_device *rdev)
58 /* get max number of pipes */ 58 /* get max number of pipes */
59 gb_pipe_select = RREG32(0x402C); 59 gb_pipe_select = RREG32(0x402C);
60 num_pipes = ((gb_pipe_select >> 12) & 3) + 1; 60 num_pipes = ((gb_pipe_select >> 12) & 3) + 1;
61
62 /* SE chips have 1 pipe */
63 if ((rdev->pdev->device == 0x5e4c) ||
64 (rdev->pdev->device == 0x5e4f))
65 num_pipes = 1;
66
61 rdev->num_gb_pipes = num_pipes; 67 rdev->num_gb_pipes = num_pipes;
62 tmp = 0; 68 tmp = 0;
63 switch (num_pipes) { 69 switch (num_pipes) {
diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
index 419630dd2075..2f042a3c0e62 100644
--- a/drivers/gpu/drm/radeon/radeon_cp.c
+++ b/drivers/gpu/drm/radeon/radeon_cp.c
@@ -435,14 +435,19 @@ static void radeon_init_pipes(struct drm_device *dev)
435 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R420) { 435 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R420) {
436 gb_pipe_sel = RADEON_READ(R400_GB_PIPE_SELECT); 436 gb_pipe_sel = RADEON_READ(R400_GB_PIPE_SELECT);
437 dev_priv->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1; 437 dev_priv->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1;
438 /* SE cards have 1 pipe */
439 if ((dev->pdev->device == 0x5e4c) ||
440 (dev->pdev->device == 0x5e4f))
441 dev_priv->num_gb_pipes = 1;
438 } else { 442 } else {
439 /* R3xx */ 443 /* R3xx */
440 if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300 && 444 if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300 &&
441 dev->pdev->device != 0x4144) || 445 dev->pdev->device != 0x4144) ||
442 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350)) { 446 ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350 &&
447 dev->pdev->device != 0x4148)) {
443 dev_priv->num_gb_pipes = 2; 448 dev_priv->num_gb_pipes = 2;
444 } else { 449 } else {
445 /* RV3xx/R300 AD */ 450 /* RV3xx/R300 AD/R350 AH */
446 dev_priv->num_gb_pipes = 1; 451 dev_priv->num_gb_pipes = 1;
447 } 452 }
448 } 453 }