diff options
author | Tormod Volden <debian.tormod@gmail.com> | 2010-04-22 16:57:32 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-04-22 23:54:59 -0400 |
commit | 94f7bf647315472c80b8368c849739038e5620a3 (patch) | |
tree | 57d8336fcb4504c56500e8f926f0cd73dcf0a589 /drivers/gpu | |
parent | 9c950a43dd4d1e22a4b893c991871bac26930f97 (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.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r420.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_cp.c | 9 |
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 | } |