Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57b54ea6 authored by Michel Dänzer's avatar Michel Dänzer Committed by Dave Airlie
Browse files

drm/radeon: R300 AD only has one quad pipe.

Gleaned from the Mesa code.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=27355

 .

Signed-off-by: default avatarMichel Dänzer <daenzer@vmware.com>
Cc: stable@kernel.org
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent d668046c
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -324,11 +324,12 @@ void r300_gpu_init(struct radeon_device *rdev)

	r100_hdp_reset(rdev);
	/* FIXME: rv380 one pipes ? */
	if ((rdev->family == CHIP_R300) || (rdev->family == CHIP_R350)) {
	if ((rdev->family == CHIP_R300 && rdev->pdev->device != 0x4144) ||
	    (rdev->family == CHIP_R350)) {
		/* r300,r350 */
		rdev->num_gb_pipes = 2;
	} else {
		/* rv350,rv370,rv380 */
		/* rv350,rv370,rv380,r300 AD */
		rdev->num_gb_pipes = 1;
	}
	rdev->num_z_pipes = 1;
+6 −4
Original line number Diff line number Diff line
@@ -417,8 +417,9 @@ static int radeon_do_wait_for_idle(drm_radeon_private_t * dev_priv)
	return -EBUSY;
}

static void radeon_init_pipes(drm_radeon_private_t *dev_priv)
static void radeon_init_pipes(struct drm_device *dev)
{
	drm_radeon_private_t *dev_priv = dev->dev_private;
	uint32_t gb_tile_config, gb_pipe_sel = 0;

	if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530) {
@@ -436,11 +437,12 @@ static void radeon_init_pipes(drm_radeon_private_t *dev_priv)
		dev_priv->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1;
	} else {
		/* R3xx */
		if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300) ||
		if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R300 &&
		     dev->pdev->device != 0x4144) ||
		    ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R350)) {
			dev_priv->num_gb_pipes = 2;
		} else {
			/* R3Vxx */
			/* RV3xx/R300 AD */
			dev_priv->num_gb_pipes = 1;
		}
	}
@@ -736,7 +738,7 @@ static int radeon_do_engine_reset(struct drm_device * dev)

	/* setup the raster pipes */
	if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R300)
	    radeon_init_pipes(dev_priv);
	    radeon_init_pipes(dev);

	/* Reset the CP ring */
	radeon_do_cp_reset(dev_priv);