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 | |
| 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>
| -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 | } |
