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

Commit bdc99722 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/radeon: 760G/780V/880V don't have UVD



Don't enable UVD on these asics as they don't have
UVD hardware.

Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 115365e8
Loading
Loading
Loading
Loading
+33 −24
Original line number Diff line number Diff line
@@ -3009,6 +3009,7 @@ static int r600_startup(struct radeon_device *rdev)
		return r;
	}

	if (rdev->has_uvd) {
		r = uvd_v1_0_resume(rdev);
		if (!r) {
			r = radeon_fence_driver_start_ring(rdev, R600_RING_TYPE_UVD_INDEX);
@@ -3016,7 +3017,7 @@ static int r600_startup(struct radeon_device *rdev)
				dev_err(rdev->dev, "failed initializing UVD fences (%d).\n", r);
			}
		}
	if (r) {
		if (r)
			rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_size = 0;
	}

@@ -3048,6 +3049,7 @@ static int r600_startup(struct radeon_device *rdev)
	if (r)
		return r;

	if (rdev->has_uvd) {
		ring = &rdev->ring[R600_RING_TYPE_UVD_INDEX];
		if (ring->ring_size) {
			r = radeon_ring_init(rdev, ring, ring->ring_size, 0,
@@ -3057,6 +3059,7 @@ static int r600_startup(struct radeon_device *rdev)
			if (r)
				DRM_ERROR("radeon: failed initializing UVD (%d).\n", r);
		}
	}

	r = radeon_ib_pool_init(rdev);
	if (r) {
@@ -3117,8 +3120,10 @@ int r600_suspend(struct radeon_device *rdev)
	radeon_pm_suspend(rdev);
	r600_audio_fini(rdev);
	r600_cp_stop(rdev);
	if (rdev->has_uvd) {
		uvd_v1_0_fini(rdev);
		radeon_uvd_suspend(rdev);
	}
	r600_irq_suspend(rdev);
	radeon_wb_disable(rdev);
	r600_pcie_gart_disable(rdev);
@@ -3198,11 +3203,13 @@ int r600_init(struct radeon_device *rdev)
	rdev->ring[RADEON_RING_TYPE_GFX_INDEX].ring_obj = NULL;
	r600_ring_init(rdev, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX], 1024 * 1024);

	if (rdev->has_uvd) {
		r = radeon_uvd_init(rdev);
		if (!r) {
			rdev->ring[R600_RING_TYPE_UVD_INDEX].ring_obj = NULL;
			r600_ring_init(rdev, &rdev->ring[R600_RING_TYPE_UVD_INDEX], 4096);
		}
	}

	rdev->ih.ring_obj = NULL;
	r600_ih_ring_init(rdev, 64 * 1024);
@@ -3233,8 +3240,10 @@ void r600_fini(struct radeon_device *rdev)
	r600_audio_fini(rdev);
	r600_cp_fini(rdev);
	r600_irq_fini(rdev);
	if (rdev->has_uvd) {
		uvd_v1_0_fini(rdev);
		radeon_uvd_fini(rdev);
	}
	radeon_wb_fini(rdev);
	radeon_ib_pool_fini(rdev);
	radeon_irq_kms_fini(rdev);
+9 −1
Original line number Diff line number Diff line
@@ -2313,6 +2313,14 @@ int radeon_asic_init(struct radeon_device *rdev)
	case CHIP_RS780:
	case CHIP_RS880:
		rdev->asic = &rs780_asic;
		/* 760G/780V/880V don't have UVD */
		if ((rdev->pdev->device == 0x9616)||
		    (rdev->pdev->device == 0x9611)||
		    (rdev->pdev->device == 0x9613)||
		    (rdev->pdev->device == 0x9711)||
		    (rdev->pdev->device == 0x9713))
			rdev->has_uvd = false;
		else
			rdev->has_uvd = true;
		break;
	case CHIP_RV770: