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

Commit b70d6bb3 authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie
Browse files

drm/radeon/kms: clean up r6xx/r7xx blit init (v2)



Move common code to init function.

v2: make sure the bo is pinned after init as well.

Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent fb7ba211
Loading
Loading
Loading
Loading
+1 −13
Original line number Diff line number Diff line
@@ -2426,19 +2426,7 @@ int r600_startup(struct radeon_device *rdev)
		rdev->asic->copy = NULL;
		dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
	}
	/* pin copy shader into vram */
	if (rdev->r600_blit.shader_obj) {
		r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
		if (unlikely(r != 0))
			return r;
		r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
				&rdev->r600_blit.shader_gpu_addr);
		radeon_bo_unreserve(rdev->r600_blit.shader_obj);
		if (r) {
			dev_err(rdev->dev, "(%d) pin blit object failed\n", r);
			return r;
		}
	}

	/* Enable IRQ */
	r = r600_irq_init(rdev);
	if (r) {
+15 −2
Original line number Diff line number Diff line
@@ -472,9 +472,10 @@ int r600_blit_init(struct radeon_device *rdev)
	u32 packet2s[16];
	int num_packet2s = 0;

	/* don't reinitialize blit */
	/* pin copy shader into vram if already initialized */
	if (rdev->r600_blit.shader_obj)
		return 0;
		goto done;

	mutex_init(&rdev->r600_blit.mutex);
	rdev->r600_blit.state_offset = 0;

@@ -532,6 +533,18 @@ int r600_blit_init(struct radeon_device *rdev)
	memcpy(ptr + rdev->r600_blit.ps_offset, r6xx_ps, r6xx_ps_size * 4);
	radeon_bo_kunmap(rdev->r600_blit.shader_obj);
	radeon_bo_unreserve(rdev->r600_blit.shader_obj);

done:
	r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
	if (unlikely(r != 0))
		return r;
	r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
			  &rdev->r600_blit.shader_gpu_addr);
	radeon_bo_unreserve(rdev->r600_blit.shader_obj);
	if (r) {
		dev_err(rdev->dev, "(%d) pin blit object failed\n", r);
		return r;
	}
	return 0;
}

+1 −13
Original line number Diff line number Diff line
@@ -1028,19 +1028,7 @@ static int rv770_startup(struct radeon_device *rdev)
		rdev->asic->copy = NULL;
		dev_warn(rdev->dev, "failed blitter (%d) falling back to memcpy\n", r);
	}
	/* pin copy shader into vram */
	if (rdev->r600_blit.shader_obj) {
		r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
		if (unlikely(r != 0))
			return r;
		r = radeon_bo_pin(rdev->r600_blit.shader_obj, RADEON_GEM_DOMAIN_VRAM,
				&rdev->r600_blit.shader_gpu_addr);
		radeon_bo_unreserve(rdev->r600_blit.shader_obj);
		if (r) {
			DRM_ERROR("failed to pin blit object %d\n", r);
			return r;
		}
	}

	/* Enable IRQ */
	r = r600_irq_init(rdev);
	if (r) {